From 563f9e692a6f45a544eea8778a6aa3597826e8f1 Mon Sep 17 00:00:00 2001 From: Mohammed Moussaoui Date: Fri, 16 Aug 2024 18:05:28 -0400 Subject: [PATCH] build docs --- docs/3rdpartylicenses.txt | 2 +- docs/404.html | 4 ++-- docs/index.html | 4 ++-- docs/main.be40d6ff9cb71eae.js | 1 + docs/main.c20fee4ab65b1dfc.js | 1 - docs/polyfills.4edb73e961118241.js | 1 - docs/polyfills.a14dbcdd2db01c6b.js | 1 + ...tyles.31ce2939ea8ebe2b.css => styles.8fdf378fc547f845.css} | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 docs/main.be40d6ff9cb71eae.js delete mode 100644 docs/main.c20fee4ab65b1dfc.js delete mode 100644 docs/polyfills.4edb73e961118241.js create mode 100644 docs/polyfills.a14dbcdd2db01c6b.js rename docs/{styles.31ce2939ea8ebe2b.css => styles.8fdf378fc547f845.css} (70%) diff --git a/docs/3rdpartylicenses.txt b/docs/3rdpartylicenses.txt index 18e3ea7..4282655 100644 --- a/docs/3rdpartylicenses.txt +++ b/docs/3rdpartylicenses.txt @@ -279,7 +279,7 @@ zone.js MIT The MIT License -Copyright (c) 2010-2023 Google LLC. https://angular.io/license +Copyright (c) 2010-2024 Google LLC. https://angular.io/license Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs/404.html b/docs/404.html index a60b2ac..325ac9a 100644 --- a/docs/404.html +++ b/docs/404.html @@ -6,8 +6,8 @@ - + - + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index a60b2ac..325ac9a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,8 +6,8 @@ - + - + \ No newline at end of file diff --git a/docs/main.be40d6ff9cb71eae.js b/docs/main.be40d6ff9cb71eae.js new file mode 100644 index 0000000..39e1656 --- /dev/null +++ b/docs/main.be40d6ff9cb71eae.js @@ -0,0 +1 @@ +(self.webpackChunkdevnet=self.webpackChunkdevnet||[]).push([[792],{803:(q,F,g)=>{"use strict";let M=null,x=1;const L=Symbol("SIGNAL");function S(e){const t=M;return M=e,t}const H={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function K(e){if((!se(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==x)){if(!e.producerMustRecompute(e)&&!be(e))return e.dirty=!1,void(e.lastCleanEpoch=x);e.producerRecomputeValue(e),e.dirty=!1,e.lastCleanEpoch=x}}function ye(e){return e&&(e.nextProducerIndex=0),S(e)}function be(e){He(e);for(let t=0;t0}function He(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}let an=null;function Ke(e){return"function"==typeof e}function Lo(e){const n=e(r=>{Error.call(r),r.stack=(new Error).stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}const $o=Lo(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((r,o)=>`${o+1}) ${r.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=n});function Vr(e,t){if(e){const n=e.indexOf(t);0<=n&&e.splice(n,1)}}class kt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(const i of n)i.remove(this);else n.remove(this);const{initialTeardown:r}=this;if(Ke(r))try{r()}catch(i){t=i instanceof $o?i.errors:[i]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const i of o)try{fr(i)}catch(s){t=t??[],s instanceof $o?t=[...t,...s.errors]:t.push(s)}}if(t)throw new $o(t)}}add(t){var n;if(t&&t!==this)if(this.closed)fr(t);else{if(t instanceof kt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}}_hasParent(t){const{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){const{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){const{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&Vr(n,t)}remove(t){const{_finalizers:n}=this;n&&Vr(n,t),t instanceof kt&&t._removeParent(this)}}kt.EMPTY=(()=>{const e=new kt;return e.closed=!0,e})();const Ei=kt.EMPTY;function wi(e){return e instanceof kt||e&&"closed"in e&&Ke(e.remove)&&Ke(e.add)&&Ke(e.unsubscribe)}function fr(e){Ke(e)?e():e.unsubscribe()}const Gt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},lo={setTimeout(e,t,...n){const{delegate:r}=lo;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){const{delegate:t}=lo;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Fo(e){lo.setTimeout(()=>{const{onUnhandledError:t}=Gt;if(!t)throw e;t(e)})}function wn(){}const Bo=uo("C",void 0,void 0);function uo(e,t,n){return{kind:e,value:t,error:n}}let Zn=null;function po(e){if(Gt.useDeprecatedSynchronousErrorHandling){const t=!Zn;if(t&&(Zn={errorThrown:!1,error:null}),e(),t){const{errorThrown:n,error:r}=Zn;if(Zn=null,n)throw r}}else e()}class Ze extends kt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,wi(t)&&t.add(this)):this.destination=kc}static create(t,n,r){return new zs(t,n,r)}next(t){this.isStopped?Di(function jr(e){return uo("N",e,void 0)}(t),this):this._next(t)}error(t){this.isStopped?Di(function gr(e){return uo("E",void 0,e)}(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Di(Bo,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const _i=Function.prototype.bind;function zr(e,t){return _i.call(e,t)}class js{constructor(t){this.partialObserver=t}next(t){const{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Ci(r)}}error(t){const{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Ci(r)}else Ci(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Ci(n)}}}class zs extends Ze{constructor(t,n,r){let o;if(super(),Ke(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&Gt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&zr(t.next,i),error:t.error&&zr(t.error,i),complete:t.complete&&zr(t.complete,i)}):o=t}this.destination=new js(o)}}function Ci(e){Gt.useDeprecatedSynchronousErrorHandling?function Vs(e){Gt.useDeprecatedSynchronousErrorHandling&&Zn&&(Zn.errorThrown=!0,Zn.error=e)}(e):Fo(e)}function Di(e,t){const{onStoppedNotification:n}=Gt;n&&lo.setTimeout(()=>n(e,t))}const kc={closed:!0,next:wn,error:function qs(e){throw e},complete:wn},Gs="function"==typeof Symbol&&Symbol.observable||"@@observable";function ho(e){return e}function E(e){return 0===e.length?ho:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}let C=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const i=function gt(e){return e&&e instanceof Ze||function Ce(e){return e&&Ke(e.next)&&Ke(e.error)&&Ke(e.complete)}(e)&&wi(e)}(n)?n:new zs(n,r,o);return po(()=>{const{operator:s,source:u}=this;i.add(s?s.call(i,u):u?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return new(r=j(r))((o,i)=>{const s=new zs({next:u=>{try{n(u)}catch(d){i(d),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return null===(r=this.source)||void 0===r?void 0:r.subscribe(n)}[Gs](){return this}pipe(...n){return E(n)(this)}toPromise(n){return new(n=j(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function j(e){var t;return null!==(t=e??Gt.Promise)&&void 0!==t?t:Promise}const mt=Lo(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let G=(()=>{class e extends C{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){const r=new X(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new mt}next(n){po(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const r of this.currentObservers)r.next(n)}})}error(n){po(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;const{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){po(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return(null===(n=this.observers)||void 0===n?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){const{hasError:r,isStopped:o,observers:i}=this;return r||o?Ei:(this.currentObservers=null,i.push(n),new kt(()=>{this.currentObservers=null,Vr(i,n)}))}_checkFinalizedStatuses(n){const{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){const n=new C;return n.source=this,n}}return e.create=(t,n)=>new X(t,n),e})();class X extends G{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.next)||void 0===r||r.call(n,t)}error(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.error)||void 0===r||r.call(n,t)}complete(){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===n||n.call(t)}_subscribe(t){var n,r;return null!==(r=null===(n=this.source)||void 0===n?void 0:n.subscribe(t))&&void 0!==r?r:Ei}}class re extends G{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){const{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}}function wt(e){return Ke(e?.lift)}function Re(e){return t=>{if(wt(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function dt(e,t,n,r,o){return new Ws(e,t,n,r,o)}class Ws extends Ze{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(u){try{n(u)}catch(d){t.error(d)}}:super._next,this._error=o?function(u){try{o(u)}catch(d){t.error(d)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(u){t.error(u)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:n}=this;super.unsubscribe(),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}}}function $e(e,t){return Re((n,r)=>{let o=0;n.subscribe(dt(r,i=>{r.next(e.call(t,i,o++))}))})}typeof navigator<"u"&&navigator,typeof navigator<"u"&&!/Opera/.test(navigator.userAgent)&&navigator,typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||navigator),typeof navigator<"u"&&!/Opera|WebKit/.test(navigator.userAgent)&&navigator,typeof navigator<"u"&&navigator;const jm="https://g.co/ng/security#xss";class $ extends Error{constructor(t,n){super(function Si(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function Wr(e){return{toString:e}.toString()}const Mi="__parameters__";function Ri(e,t,n){return Wr(()=>{const r=function qd(e){return function(...n){if(e){const r=e(...n);for(const o in r)this[o]=r[o]}}}(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;const s=new o(...i);return u.annotation=s,u;function u(d,p,h){const f=d.hasOwnProperty(Mi)?d[Mi]:Object.defineProperty(d,Mi,{value:[]})[Mi];for(;f.length<=h;)f.push(null);return(f[h]=f[h]||[]).push(s),d}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}const ut=globalThis;function Qe(e){for(let t in e)if(e[t]===Qe)return t;throw Error("Could not find renamed property on target object.")}function Pt(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Pt).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Gd(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const zT=Qe({__forward_ref__:Qe});function Wd(e){return e.__forward_ref__=Wd,e.toString=function(){return Pt(this())},e}function de(e){return Gc(e)?e():e}function Gc(e){return"function"==typeof e&&e.hasOwnProperty(zT)&&e.__forward_ref__===Wd}function oe(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function bt(e){return{providers:e.providers||[],imports:e.imports||[]}}function Wc(e){return Wm(e,Yc)||Wm(e,Km)}function Wm(e,t){return e.hasOwnProperty(t)?e[t]:null}function Kc(e){return e&&(e.hasOwnProperty(Kd)||e.hasOwnProperty(ZT))?e[Kd]:null}const Yc=Qe({\u0275prov:Qe}),Kd=Qe({\u0275inj:Qe}),Km=Qe({ngInjectableDef:Qe}),ZT=Qe({ngInjectorDef:Qe});class Z{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=oe({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Jd(e){return e&&!!e.\u0275providers}const ta=Qe({\u0275cmp:Qe}),ep=Qe({\u0275dir:Qe}),tp=Qe({\u0275pipe:Qe}),Zm=Qe({\u0275mod:Qe}),Kr=Qe({\u0275fac:Qe}),na=Qe({__NG_ELEMENT_ID__:Qe}),Qm=Qe({__NG_ENV_ID__:Qe});function me(e){return"string"==typeof e?e:null==e?"":String(e)}function np(e,t){throw new $(-201,!1)}var xe=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(xe||{});let rp;function Xm(){return rp}function _n(e){const t=rp;return rp=e,t}function Jm(e,t,n){const r=Wc(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&xe.Optional?null:void 0!==t?t:void np()}const ra={},op="__NG_DI_FLAG__",Zc="ngTempTokenPath",nS=/\n/gm,ev="__source";let xi;function vo(e){const t=xi;return xi=e,t}function iS(e,t=xe.Default){if(void 0===xi)throw new $(-203,!1);return null===xi?Jm(e,void 0,t):xi.get(e,t&xe.Optional?null:void 0,t)}function ue(e,t=xe.Default){return(Xm()||iS)(de(e),t)}function A(e,t=xe.Default){return ue(e,Qc(t))}function Qc(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function ip(e){const t=[];for(let n=0;nArray.isArray(n)?Oi(n,t):t(n))}function nv(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function el(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}const Er={},Fe=[],Xn=new Z(""),iv=new Z("",-1),cp=new Z("");class nl{get(t,n=ra){if(n===ra){const r=new Error(`NullInjectorError: No provider for ${Pt(t)}!`);throw r.name="NullInjectorError",r}return n}}var rl=function(e){return e[e.OnPush=0]="OnPush",e[e.Default=1]="Default",e}(rl||{}),Jn=function(e){return e[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",e}(Jn||{}),yo=function(e){return e[e.None=0]="None",e[e.SignalBased=1]="SignalBased",e[e.HasDecoratorInputTransform=2]="HasDecoratorInputTransform",e}(yo||{});function hS(e,t,n){let r=e.length;for(;;){const o=e.indexOf(t,n);if(-1===o)return o;if(0===o||e.charCodeAt(o-1)<=32){const i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}function lp(e,t,n){let r=0;for(;rt){s=i-1;break}}}for(;i-1){let i;for(;++oi?"":o[h+1].toLowerCase(),2&r&&p!==f){if(er(r))return!1;s=!0}}}}else{if(!s&&!er(r)&&!er(d))return!1;if(s&&er(d))continue;s=!1,r=d|1&r}}return er(r)||s}function er(e){return!(1&e)}function vS(e,t,n,r){if(null===t)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+u+'"':"")+"]"}else 8&r?o+="."+s:4&r&&(o+=" "+s);else""!==o&&!er(s)&&(t+=dv(i,o),o=""),r=s,i=i||!er(r);n++}return""!==o&&(t+=dv(i,o)),t}function Ie(e){return Wr(()=>{const t=hv(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===rl.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Jn.Emulated,styles:e.styles||Fe,_:null,schemas:e.schemas||null,tView:null,id:""};fv(n);const r=e.dependencies;return n.directiveDefs=ol(r,!1),n.pipeDefs=ol(r,!0),n.id=function NS(e){let t=0;const n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const o of n)t=Math.imul(31,t)+o.charCodeAt(0)|0;return t+=2147483648,"c"+t}(n),n})}function IS(e){return Me(e)||Lt(e)}function TS(e){return null!==e}function Ct(e){return Wr(()=>({type:e.type,bootstrap:e.bootstrap||Fe,declarations:e.declarations||Fe,imports:e.imports||Fe,exports:e.exports||Fe,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function pv(e,t){if(null==e)return Er;const n={};for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let i,s,u=yo.None;Array.isArray(o)?(u=o[0],i=o[1],s=o[2]??i):(i=o,s=o),t?(n[i]=u!==yo.None?[r,u]:r,t[i]=s):n[i]=r}return n}function cn(e){return Wr(()=>{const t=hv(e);return fv(t),t})}function Me(e){return e[ta]||null}function Lt(e){return e[ep]||null}function Kt(e){return e[tp]||null}function en(e,t){const n=e[Zm]||null;if(!n&&!0===t)throw new Error(`Type ${Pt(e)} does not have '\u0275mod' property.`);return n}function hv(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||Er,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||Fe,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:pv(e.inputs,t),outputs:pv(e.outputs),debugInfo:null}}function fv(e){e.features?.forEach(t=>t(e))}function ol(e,t){if(!e)return null;const n=t?Kt:IS;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(TS)}function MS(...e){return{\u0275providers:dp(0,e),\u0275fromNgModule:!0}}function dp(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return Oi(t,s=>{const u=s;sl(u,i,[],r)&&(o||=[],o.push(u))}),void 0!==o&&gv(o,i),n}function gv(e,t){for(let n=0;n{t(i,r)})}}function sl(e,t,n,r){if(!(e=de(e)))return!1;let o=null,i=Kc(e);const s=!i&&Me(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const d=e.ngModule;if(i=Kc(d),!i)return!1;o=d}const u=r.has(o);if(s){if(u)return!1;if(r.add(o),s.dependencies){const d="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const p of d)sl(p,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!u){let p;r.add(o);try{Oi(i.imports,h=>{sl(h,t,n,r)&&(p||=[],p.push(h))})}finally{}void 0!==p&&gv(p,t)}if(!u){const p=Vo(o)||(()=>new o);t({provide:o,useFactory:p,deps:Fe},o),t({provide:cp,useValue:o,multi:!0},o),t({provide:Xn,useValue:()=>ue(o),multi:!0},o)}const d=i.providers;if(null!=d&&!u){const p=e;pp(d,h=>{t(h,p)})}}}return o!==e&&void 0!==e.providers}function pp(e,t){for(let n of e)Jd(n)&&(n=n.\u0275providers),Array.isArray(n)?pp(n,t):t(n)}const AS=Qe({provide:String,useValue:Qe});function hp(e){return null!==e&&"object"==typeof e&&AS in e}function jo(e){return"function"==typeof e}const fp=new Z(""),al={},xS={};let gp;function cl(){return void 0===gp&&(gp=new nl),gp}class In{}class Pi extends In{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,vp(t,s=>this.processProvider(s)),this.records.set(iv,Li(void 0,this)),o.has("environment")&&this.records.set(In,Li(void 0,this));const i=this.records.get(fp);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(cp,Fe,xe.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=S(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),S(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=vo(this),r=_n(void 0);try{return t()}finally{vo(n),_n(r)}}get(t,n=ra,r=xe.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(Qm))return t[Qm](this);r=Qc(r);const i=vo(this),s=_n(void 0);try{if(!(r&xe.SkipSelf)){let d=this.records.get(t);if(void 0===d){const p=function $S(e){return"function"==typeof e||"object"==typeof e&&e instanceof Z}(t)&&Wc(t);d=p&&this.injectableDefInScope(p)?Li(mp(t),al):null,this.records.set(t,d)}if(null!=d)return this.hydrate(t,d)}return(r&xe.Self?cl():this.parent).get(t,n=r&xe.Optional&&n===ra?null:n)}catch(u){if("NullInjectorError"===u.name){if((u[Zc]=u[Zc]||[]).unshift(Pt(t)),i)throw u;return function aS(e,t,n,r){const o=e[Zc];throw t[ev]&&o.unshift(t[ev]),e.message=function cS(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=Pt(t);if(Array.isArray(t))o=t.map(Pt).join(" -> ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let u=t[s];i.push(s+":"+("string"==typeof u?JSON.stringify(u):Pt(u)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(nS,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[Zc]=null,e}(u,t,"R3InjectorError",this.source)}throw u}finally{_n(s),vo(i)}}resolveInjectorInitializers(){const t=S(null),n=vo(this),r=_n(void 0);try{const i=this.get(Xn,Fe,xe.Self);for(const s of i)s()}finally{vo(n),_n(r),S(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(Pt(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new $(205,!1)}processProvider(t){let n=jo(t=de(t))?t:de(t&&t.provide);const r=function kS(e){return hp(e)?Li(void 0,e.useValue):Li(function yv(e,t,n){let r;if(jo(e)){const o=de(e);return Vo(o)||mp(o)}if(hp(e))r=()=>de(e.useValue);else if(function vv(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...ip(e.deps||[]));else if(function mv(e){return!(!e||!e.useExisting)}(e))r=()=>ue(de(e.useExisting));else{const o=de(e&&(e.useClass||e.provide));if(!function PS(e){return!!e.deps}(e))return Vo(o)||mp(o);r=()=>new o(...ip(e.deps))}return r}(e),al)}(t);if(!jo(t)&&!0===t.multi){let o=this.records.get(n);o||(o=Li(void 0,al,!0),o.factory=()=>ip(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=S(null);try{return n.value===al&&(n.value=xS,n.value=n.factory()),"object"==typeof n.value&&n.value&&function LS(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{S(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=de(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function mp(e){const t=Wc(e),n=null!==t?t.factory:Vo(e);if(null!==n)return n;if(e instanceof Z)throw new $(204,!1);if(e instanceof Function)return function OS(e){if(e.length>0)throw new $(204,!1);const n=function YT(e){return e&&(e[Yc]||e[Km])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new $(204,!1)}function Li(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function vp(e,t){for(const n of e)Array.isArray(n)?vp(n,t):n&&Jd(n)?vp(n.\u0275providers,t):t(n)}function wr(e,t){e instanceof Pi&&e.assertNotDestroyed();const r=vo(e),o=_n(void 0);try{return t()}finally{vo(r),_n(o)}}function bv(){return void 0!==Xm()||null!=function oS(){return xi}()}const pt=0,B=1,ce=2,Mt=3,tr=4,Yt=5,ln=6,Fi=7,it=8,At=9,_r=10,pe=11,aa=12,wv=13,Bi=14,ht=15,zo=16,Ui=17,Yr=18,Hi=19,_v=20,Eo=21,dl=22,qn=23,ne=25,bp=1,Cr=7,Vi=9,Dt=10;var hl=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(hl||{});function Ft(e){return Array.isArray(e)&&"object"==typeof e[bp]}function tn(e){return Array.isArray(e)&&!0===e[bp]}function Ep(e){return!!(4&e.flags)}function qo(e){return e.componentOffset>-1}function fl(e){return!(1&~e.flags)}function nr(e){return!!e.template}function la(e){return!!(512&e[ce])}class ZS{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function Tv(e,t,n,r){null!==t?t.applyValueToInputSignal(t,r):e[n]=r}function Go(){return Sv}function Sv(e){return e.type.prototype.ngOnChanges&&(e.setInput=XS),QS}function QS(){const e=Mv(this),t=e?.current;if(t){const n=e.previous;if(n===Er)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function XS(e,t,n,r,o){const i=this.declaredInputs[r],s=Mv(e)||function JS(e,t){return e[Nv]=t}(e,{previous:Er,current:null}),u=s.current||(s.current={}),d=s.previous,p=d[i];u[i]=new ZS(p&&p.currentValue,n,d===Er),Tv(e,t,o,n)}Go.ngInherit=!0;const Nv="__ngSimpleChanges__";function Mv(e){return e[Nv]||null}const Dr=function(e,t,n){};function Be(e){for(;Array.isArray(e);)e=e[pt];return e}function un(e,t){return Be(t[e.index])}function da(e,t){return e.data[t]}function $n(e,t){const n=t[e];return Ft(n)?n:n[pt]}function Ip(e){return!(128&~e[ce])}function Gn(e,t){return null==t?null:e[t]}function xv(e){e[Ui]=0}function Ov(e){1024&e[ce]||(e[ce]|=1024,Ip(e)&&gl(e))}function pa(e){return!!(9216&e[ce]||e[qn]?.dirty)}function Tp(e){e[_r].changeDetectionScheduler?.notify(7),64&e[ce]&&(e[ce]|=1024),pa(e)&&gl(e)}function gl(e){e[_r].changeDetectionScheduler?.notify(0);let t=Zr(e);for(;null!==t&&!(8192&t[ce])&&(t[ce]|=8192,Ip(t));)t=Zr(t)}function ml(e,t){if(!(256&~e[ce]))throw new $(911,!1);null===e[Eo]&&(e[Eo]=[]),e[Eo].push(t)}function Zr(e){const t=e[Mt];return tn(t)?t[Mt]:t}const he={lFrame:Gv(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Pv=!1;function Lv(){return he.bindingsEnabled}function I(){return he.lFrame.lView}function Ne(){return he.lFrame.tView}function Xe(){let e=$v();for(;null!==e&&64===e.type;)e=e.parent;return e}function $v(){return he.lFrame.currentTNode}function rr(e,t){const n=he.lFrame;n.currentTNode=e,n.isParent=t}function Mp(){return he.lFrame.isParent}function Uv(){return Pv}function Hv(e){Pv=e}function m0(e,t){const n=he.lFrame;n.bindingIndex=n.bindingRootIndex=e,Rp(t)}function Rp(e){he.lFrame.currentDirectiveIndex=e}function Op(){return he.lFrame.currentQueryIndex}function yl(e){he.lFrame.currentQueryIndex=e}function y0(e){const t=e[B];return 2===t.type?t.declTNode:1===t.type?e[Yt]:null}function zv(e,t,n){if(n&xe.SkipSelf){let o=t,i=e;for(;!(o=o.parent,null!==o||n&xe.Host||(o=y0(i),null===o||(i=i[Bi],10&o.type))););if(null===o)return!1;t=o,e=i}const r=he.lFrame=qv();return r.currentTNode=t,r.lView=e,!0}function kp(e){const t=qv(),n=e[B];he.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function qv(){const e=he.lFrame,t=null===e?null:e.child;return null===t?Gv(e):t}function Gv(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function Wv(){const e=he.lFrame;return he.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const Kv=Wv;function Pp(){const e=Wv();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Yo(e){he.lFrame.selectedIndex=e}let Zv=!0;function fa(){return Zv}function Ir(e){Zv=e}function bl(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[d]<0&&(e[Ui]+=65536),(u>14>16&&(3&e[ce])===t&&(e[ce]+=16384,Xv(u,i)):Xv(u,i)}const ji=-1;class ga{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}const Fp={};class Zo{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){r=Qc(r);const o=this.injector.get(t,Fp,r);return o!==Fp||n===Fp?o:this.parentInjector.get(t,n,r)}}function Bp(e){return e!==ji}function ma(e){return 32767&e}function va(e,t){let n=function M0(e){return e>>16}(e),r=t;for(;n>0;)r=r[Bi],n--;return r}let Up=!0;function _l(e){const t=Up;return Up=e,t}const ey=255,ty=5;let R0=0;const Tr={};function Cl(e,t){const n=ny(e,t);if(-1!==n)return n;const r=t[B];r.firstCreatePass&&(e.injectorIndex=t.length,Hp(r.data,e),Hp(t,null),Hp(r.blueprint,null));const o=Dl(e,t),i=e.injectorIndex;if(Bp(o)){const s=ma(o),u=va(o,t),d=u[B].data;for(let p=0;p<8;p++)t[i+p]=u[s+p]|d[s+p]}return t[i+8]=o,i}function Hp(e,t){e.push(0,0,0,0,0,0,0,0,t)}function ny(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function Dl(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;null!==o;){if(r=ly(o),null===r)return ji;if(n++,o=o[Bi],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return ji}function Vp(e,t,n){!function x0(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(na)&&(r=n[na]),null==r&&(r=n[na]=R0++);const o=r&ey;t.data[e+(o>>ty)]|=1<=0?t&ey:L0:t}(n);if("function"==typeof i){if(!zv(t,e,r))return r&xe.Host?ry(o,0,r):oy(t,n,r,o);try{let s;if(s=i(r),null!=s||r&xe.Optional)return s;np()}finally{Kv()}}else if("number"==typeof i){let s=null,u=ny(e,t),d=ji,p=r&xe.Host?t[ht][Yt]:null;for((-1===u||r&xe.SkipSelf)&&(d=-1===u?Dl(e,t):t[u+8],d!==ji&&cy(r,!1)?(s=t[B],u=ma(d),t=va(d,t)):u=-1);-1!==u;){const h=t[B];if(ay(i,u,h.data)){const f=k0(u,t,n,s,r,p);if(f!==Tr)return f}d=t[u+8],d!==ji&&cy(r,t[B].data[u+8]===p)&&ay(i,u,t)?(s=h,u=ma(d),t=va(d,t)):u=-1}}return o}function k0(e,t,n,r,o,i){const s=t[B],u=s.data[e+8],h=Il(u,s,n,null==r?qo(u)&&Up:r!=s&&!!(3&u.type),o&xe.Host&&i===u);return null!==h?Qo(t,s,h,u):Tr}function Il(e,t,n,r,o){const i=e.providerIndexes,s=t.data,u=1048575&i,d=e.directiveStart,h=i>>20,m=o?u+h:e.directiveEnd;for(let v=r?u:u+h;v=d&&b.type===n)return v}if(o){const v=s[d];if(v&&nr(v)&&v.type===n)return d}return null}function Qo(e,t,n,r){let o=e[n];const i=t.data;if(function T0(e){return e instanceof ga}(o)){const s=o;s.resolving&&function JT(e,t){throw t&&t.join(" > "),new $(-200,e)}(function ze(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():me(e)}(i[n]));const u=_l(s.canSeeViewProviders);s.resolving=!0;const p=s.injectImpl?_n(s.injectImpl):null;zv(e,r,xe.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&function D0(e,t,n){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){const s=Sv(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}(n,i[n],t)}finally{null!==p&&_n(p),_l(u),s.resolving=!1,Kv()}}return o}function ay(e,t,n){return!!(n[t+(e>>ty)]&1<{const t=e.prototype.constructor,n=t[Kr]||zp(t),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[Kr]||zp(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function zp(e){return Gc(e)?()=>{const t=zp(de(e));return t&&t()}:Vo(e)}function ly(e){const t=e[B],n=t.type;return 2===n?t.declTNode:1===n?e[Yt]:null}function fy(e,t=null,n=null,r){const o=gy(e,t,n,r);return o.resolveInjectorInitializers(),o}function gy(e,t=null,n=null,r,o=new Set){const i=[n||Fe,MS(e)];return r=r||("object"==typeof e?void 0:Pt(e)),new Pi(i,t||cl(),r||null,o)}class Rt{static#e=this.THROW_IF_NOT_FOUND=ra;static#t=this.NULL=new nl;static create(t,n){if(Array.isArray(t))return fy({name:""},n,t,"");{const r=t.name??"";return fy({name:r},t.parent,t.providers,r)}}static#n=this.\u0275prov=oe({token:Rt,providedIn:"any",factory:()=>ue(iv)});static#r=this.__NG_ELEMENT_ID__=-1}new Z("").__NG_ELEMENT_ID__=e=>{const t=Xe();if(null===t)throw new $(204,!1);if(2&t.type)return t.value;if(e&xe.Optional)return null;throw new $(204,!1)};function Gp(e){return e.ngOriginalError}let ba=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=W0;static#t=this.__NG_ENV_ID__=n=>n}return e})();class G0 extends ba{constructor(t){super(),this._lView=t}onDestroy(t){return ml(this._lView,t),()=>function Sp(e,t){if(null===e[Eo])return;const n=e[Eo].indexOf(t);-1!==n&&e[Eo].splice(n,1)}(this._lView,t)}}function W0(){return new G0(I())}let Xo=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new re(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275prov=oe({token:e,providedIn:"root",factory:()=>new e})}return e})();const pn=class K0 extends G{constructor(t=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=t,bv()&&(this.destroyRef=A(ba,{optional:!0})??void 0,this.pendingTasks=A(Xo,{optional:!0})??void 0)}emit(t){const n=S(null);try{super.next(t)}finally{S(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&"object"==typeof t){const d=t;o=d.next?.bind(d),i=d.error?.bind(d),s=d.complete?.bind(d)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const u=super.subscribe({next:o,error:i,complete:s});return t instanceof kt&&t.add(u),u}wrapInTimeout(t){return n=>{const r=this.pendingTasks?.add();setTimeout(()=>{t(n),void 0!==r&&this.pendingTasks?.remove(r)})}}};function Sl(...e){}function vy(e){let t,n;function r(){e=Sl;try{void 0!==n&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(n),void 0!==t&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function yy(e){return queueMicrotask(()=>e()),()=>{e=Sl}}const Wp="isAngularZone",Nl=Wp+"_ID";let Y0=0;class Je{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new pn(!1),this.onMicrotaskEmpty=new pn(!1),this.onStable=new pn(!1),this.onError=new pn(!1),typeof Zone>"u")throw new $(908,!1);Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.callbackScheduled=!1,function X0(e){const t=()=>{!function Q0(e){e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,Zone.root.run(()=>{vy(()=>{e.callbackScheduled=!1,Yp(e),e.isCheckStableRunning=!0,Kp(e),e.isCheckStableRunning=!1})}),Yp(e))}(e)},n=Y0++;e._inner=e._inner.fork({name:"angular",properties:{[Wp]:!0,[Nl]:n,[Nl+n]:!0},onInvokeTask:(r,o,i,s,u,d)=>{if(function J0(e){return wy(e,"__ignore_ng_zone__")}(d))return r.invokeTask(i,s,u,d);try{return by(e),r.invokeTask(i,s,u,d)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||e.shouldCoalesceRunChangeDetection)&&t(),Ey(e)}},onInvoke:(r,o,i,s,u,d,p)=>{try{return by(e),r.invoke(i,s,u,d,p)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function eN(e){return wy(e,"__scheduler_tick__")}(d)&&t(),Ey(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&("microTask"==s.change?(e._hasPendingMicrotasks=s.microTask,Yp(e),Kp(e)):"macroTask"==s.change&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}(o)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(Wp)}static assertInAngularZone(){if(!Je.isInAngularZone())throw new $(909,!1)}static assertNotInAngularZone(){if(Je.isInAngularZone())throw new $(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,Z0,Sl,Sl);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const Z0={};function Kp(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Yp(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function by(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Ey(e){e._nesting--,Kp(e)}class Zp{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new pn,this.onMicrotaskEmpty=new pn,this.onStable=new pn,this.onError=new pn}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}}function wy(e,t){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[t]}class Sr{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Gp(t);for(;n&&Gp(n);)n=Gp(n);return n||null}}const nN=new Z("",{providedIn:"root",factory:()=>{const e=A(Je),t=A(Sr);return n=>e.runOutsideAngular(()=>t.handleError(n))}});function rN(){return Gi(Xe(),I())}function Gi(e,t){return new wo(un(e,t))}let wo=(()=>{class e{constructor(n){this.nativeElement=n}static#e=this.__NG_ELEMENT_ID__=rN}return e})();function Cy(e){return e instanceof wo?e.nativeElement:e}function oN(){return this._results[Symbol.iterator]()}class Qp{static#e=Symbol.iterator;get changes(){return this._changes??=new pn}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const n=Qp.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=oN)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;const r=function Cn(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function pS(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rTN}),TN="ng",jy=new Z(""),Co=new Z("",{providedIn:"platform",factory:()=>"unknown"}),zy=new Z("",{providedIn:"root",factory:()=>function _o(){if(void 0!==th)return th;if(typeof document<"u")return document;throw new $(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});let qy=()=>null;function ch(e,t,n=!1){return qy(e,t,n)}const Jy=new Z("",{providedIn:"root",factory:()=>!1});let Bl;function ob(e){return function fh(){if(void 0===Bl&&(Bl=null,ut.trustedTypes))try{Bl=ut.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Bl}()?.createScriptURL(e)||e}class ib{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${jm})`}}function Do(e){return e instanceof ib?e.changingThisBreaksApplicationSecurity:e}function Na(e,t){const n=function qN(e){return e instanceof ib&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${jm})`)}return n===t}const YN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;var Xi=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(Xi||{});function fb(e){const t=Aa();return t?t.sanitize(Xi.URL,e)||"":Na(e,"URL")?Do(e):function gh(e){return(e=String(e)).match(YN)?e:"unsafe:"+e}(me(e))}function gb(e){const t=Aa();if(t)return ob(t.sanitize(Xi.RESOURCE_URL,e)||"");if(Na(e,"ResourceURL"))return ob(Do(e));throw new $(904,!1)}function Aa(){const e=I();return e&&e[_r].sanitizer}function Fn(e){return e instanceof Function?e():e}var Io=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(Io||{});let wh;function _h(e,t){return wh(e,t)}function es(e,t,n,r,o){if(null!=r){let i,s=!1;tn(r)?i=r:Ft(r)&&(s=!0,r=r[pt]);const u=Be(r);0===e&&null!==n?null==o?Mb(t,n,u):ei(t,n,u,o||null,!0):1===e&&null!==n?ei(t,n,u,o||null,!0):2===e?function xa(e,t,n){e.removeChild(null,t,n)}(t,u,s):3===e&&t.destroyNode(u),null!=i&&function OM(e,t,n,r,o){const i=n[Cr];i!==Be(n)&&es(t,e,r,i,o);for(let u=Dt;u0&&(e[n-1][tr]=r[tr]);const i=el(e,Dt+t);!function IM(e,t){Tb(e,t),t[pt]=null,t[Yt]=null}(r[B],r);const s=i[Yr];null!==s&&s.detachView(i[B]),r[Mt]=null,r[tr]=null,r[ce]&=-129}return r}function zl(e,t){if(!(256&t[ce])){const n=t[pe];n.destroyNode&&Gl(e,t,n,3,null,null),function SM(e){let t=e[aa];if(!t)return Th(e[B],e);for(;t;){let n=null;if(Ft(t))n=t[aa];else{const r=t[Dt];r&&(n=r)}if(!n){for(;t&&!t[tr]&&t!==e;)Ft(t)&&Th(t[B],t),t=t[Mt];null===t&&(t=e),Ft(t)&&Th(t[B],t),n=t&&t[tr]}t=n}}(t)}}function Th(e,t){if(256&t[ce])return;const n=S(null);try{t[ce]&=-129,t[ce]|=256,t[qn]&&Se(t[qn]),function AM(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let r=0;r=0?r[s]():r[-s].unsubscribe(),i+=2}else n[i].call(r[n[i+1]]);null!==r&&(t[Fi]=null);const o=t[Eo];if(null!==o){t[Eo]=null;for(let i=0;i-1){const{encapsulation:i}=e.data[r.directiveStart+o];if(i===Jn.None||i===Jn.Emulated)return null}return un(r,n)}}(e,t.parent,n)}function ei(e,t,n,r,o){e.insertBefore(t,n,r,o)}function Mb(e,t,n){e.appendChild(t,n)}function Ab(e,t,n,r,o){null!==r?ei(e,t,n,r,o):Mb(e,t,n)}function Nh(e,t){return e.parentNode(t)}let Mh,Ob=function xb(e,t,n){return 40&e.type?un(e,n):null};function ql(e,t,n,r){const o=Sh(e,r,t),i=t[pe],u=function Rb(e,t,n){return Ob(e,t,n)}(r.parent||t[Yt],r,t);if(null!=o)if(Array.isArray(n))for(let d=0;dne&&function Ub(e,t,n,r){if(!r)if(3&~t[ce]){const i=e.preOrderHooks;null!==i&&wl(t,i,0,n)}else{const i=e.preOrderCheckHooks;null!==i&&El(t,i,n)}Yo(n)}(e,t,ne,!1),Dr(s?2:0,o),n(r,o)}finally{Yo(i),Dr(s?3:1,o)}}function Oh(e,t,n){if(Ep(t)){const r=S(null);try{const i=t.directiveEnd;for(let s=t.directiveStart;snull;function Gb(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;const s=t[i];if(void 0===s)continue;r??={};let u,d=yo.None;Array.isArray(s)?(u=s[0],d=s[1]):u=s;let p=i;if(null!==o){if(!o.hasOwnProperty(i))continue;p=o[i]}0===e?Wb(r,n,p,u,d):Wb(r,n,p,u)}return r}function Wb(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],void 0!==o&&i.push(o)}function Kb(e,t,n,r,o,i){for(let p=0;p0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(s)!=u&&s.push(u),s.push(n,r,i)}}(e,t,r,Oa(e,n,o.hostVars,ve),o)}function Nr(e,t,n,r,o,i){const s=un(e,t);!function Bh(e,t,n,r,o,i,s){if(null==i)e.removeAttribute(t,o,n);else{const u=null==s?me(i):s(i,r||"",o);e.setAttribute(t,o,u,n)}}(t[pe],s,i,e.value,n,r,o)}function iA(e,t,n,r,o,i){const s=i[t];if(null!==s)for(let u=0;u{gl(e.lView)},consumerOnSignalRead(){this.lView[qn]=this}},gA={...H,consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{let t=Zr(e.lView);for(;t&&!oE(t[B]);)t=Zr(t);t&&Ov(t)},consumerOnSignalRead(){this.lView[qn]=this}};function oE(e){return 2!==e.type}const mA=100;function Zl(e,t=!0,n=0){const r=e[_r],o=r.rendererFactory;o.begin?.();try{!function vA(e,t){const n=Uv();try{Hv(!0),zh(e,t);let r=0;for(;pa(e);){if(r===mA)throw new $(103,!1);r++,zh(e,1)}}finally{Hv(n)}}(e,n)}catch(s){throw t&&Yl(e,s),s}finally{o.end?.(),r.inlineEffectRunner?.flush()}}function yA(e,t,n,r){const o=t[ce];if(!(256&~o))return;t[_r].inlineEffectRunner?.flush(),kp(t);let u=!0,d=null,p=null;oE(e)?(p=function uA(e){return e[qn]??function dA(e){const t=rE.pop()??Object.create(hA);return t.lView=e,t}(e)}(t),d=ye(p)):null===function O(){return M}()?(u=!1,p=function fA(e){const t=e[qn]??Object.create(gA);return t.lView=e,t}(t),d=ye(p)):t[qn]&&(Se(t[qn]),t[qn]=null);try{xv(t),function Vv(e){return he.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==n&&jb(e,t,n,2,r);const h=!(3&~o);if(h){const v=e.preOrderCheckHooks;null!==v&&El(t,v,null)}else{const v=e.preOrderHooks;null!==v&&wl(t,v,0,null),Lp(t,0)}if(function bA(e){for(let t=Oy(e);null!==t;t=ky(t)){if(!(t[ce]&hl.HasTransplantedViews))continue;const n=t[Vi];for(let r=0;re.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}(p,d),u&&function pA(e){e.lView[qn]!==e&&(e.lView=null,rE.push(e))}(p)),Pp()}}function sE(e,t){for(let n=Oy(e);null!==n;n=ky(n))for(let r=Dt;r-1&&(Ra(t,r),el(n,r))}this._attachedToViewContainer=!1}zl(this._lView[B],this._lView)}onDestroy(t){ml(this._lView,t)}markForCheck(){Pa(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[ce]&=-129}reattach(){Tp(this._lView),this._lView[ce]|=128}detectChanges(){this._lView[ce]|=1024,Zl(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new $(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const t=la(this._lView),n=this._lView[zo];null!==n&&!t&&Ih(n,this._lView),Tb(this._lView[B],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new $(902,!1);this._appRef=t;const n=la(this._lView),r=this._lView[zo];null!==r&&!n&&Sb(r,this._lView),Tp(this._lView)}}let to=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=CA}return e})();const wA=to,_A=class extends wA{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){const o=function ts(e,t,n,r){const o=S(null);try{const i=t.tView,d=Wl(e,i,n,4096&e[ce]?4096:16,null,t,null,null,r?.injector??null,r?.embeddedViewInjector??null,r?.dehydratedView??null);d[zo]=e[t.index];const h=e[Yr];return null!==h&&(d[Yr]=h.createEmbeddedView(i)),Vh(i,d,n),d}finally{S(o)}}(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new La(o)}};function CA(){return Ql(Xe(),I())}function Ql(e,t){return 4&e.type?new _A(t,e,Gi(e,t)):null}class os{}const za=new Z("",{providedIn:"root",factory:()=>!1}),AE=new Z("");class gR{}class RE{}class vR{resolveComponentFactory(t){throw function mR(e){const t=Error(`No component factory found for ${Pt(e)}.`);return t.ngComponent=e,t}(t)}}class ru{static#e=this.NULL=new vR}class tf{}let ou=(()=>{class e{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function yR(){const e=I(),n=$n(Xe().index,e);return(Ft(n)?n:e)[pe]}()}return e})(),bR=(()=>{class e{static#e=this.\u0275prov=oe({token:e,providedIn:"root",factory:()=>null})}return e})();const OE=new Set;function hn(e){OE.has(e)||(OE.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}var fn=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(fn||{});const kE={destroy(){}};function PE(e,t){!t&&function ll(e){if(!bv())throw new $(-203,!1)}();const n=t?.injector??A(Rt);return function Sn(e){return"browser"===(e??A(Rt)).get(Co)}(n)?(hn("NgAfterNextRender"),function LE(e,t,n,r){const o=function wR(e,t){if(e instanceof Function)switch(t){case fn.EarlyRead:return{earlyRead:e};case fn.Write:return{write:e};case fn.MixedReadWrite:return{mixedReadWrite:e};case fn.Read:return{read:e}}return e}(e,r),i=t.get(iu),s=i.handler??=new CR,u=[],d=[],p=()=>{for(const v of d)s.unregister(v);h()},h=t.get(ba).onDestroy(p);let f=0;const m=(v,b)=>{if(!b)return;const _=n?(...N)=>(f--,f<1&&p(),b(...N)):b,D=wr(t,()=>new _R(v,u,_));s.register(D),d.push(D),f++};return m(fn.EarlyRead,o.earlyRead),m(fn.Write,o.write),m(fn.MixedReadWrite,o.mixedReadWrite),m(fn.Read,o.read),{destroy:p}}(e,n,!0,t?.phase??fn.MixedReadWrite)):kE}class _R{constructor(t,n,r){this.phase=t,this.pipelinedArgs=n,this.callbackFn=r,this.zone=A(Je),this.errorHandler=A(Sr,{optional:!0}),A(os,{optional:!0})?.notify(6)}invoke(){try{const t=this.zone.runOutsideAngular(()=>this.callbackFn.apply(null,this.pipelinedArgs));this.pipelinedArgs.splice(0,this.pipelinedArgs.length,t)}catch(t){this.errorHandler?.handleError(t)}}}class CR{constructor(){this.executingCallbacks=!1,this.buckets={[fn.EarlyRead]:new Set,[fn.Write]:new Set,[fn.MixedReadWrite]:new Set,[fn.Read]:new Set},this.deferredCallbacks=new Set}register(t){(this.executingCallbacks?this.deferredCallbacks:this.buckets[t.phase]).add(t)}unregister(t){this.buckets[t.phase].delete(t),this.deferredCallbacks.delete(t)}execute(){this.executingCallbacks=!0;for(const t of Object.values(this.buckets))for(const n of t)n.invoke();this.executingCallbacks=!1;for(const t of this.deferredCallbacks)this.buckets[t.phase].add(t);this.deferredCallbacks.clear()}destroy(){for(const t of Object.values(this.buckets))t.clear();this.deferredCallbacks.clear()}}let iu=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=oe({token:e,providedIn:"root",factory:()=>new e})}return e})();function au(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(null!==t)for(let s=0;s0&&Fb(e,n,i.join(" "))}}(v,vt,_,r),void 0!==n&&function OR(e,t,n){const r=e.projection=[];for(let o=0;o{class e{static#e=this.__NG_ELEMENT_ID__=PR}return e})();function PR(){return jE(Xe(),I())}const LR=ir,HE=class extends LR{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Gi(this._hostTNode,this._hostLView)}get injector(){return new Bt(this._hostTNode,this._hostLView)}get parentInjector(){const t=Dl(this._hostTNode,this._hostLView);if(Bp(t)){const n=va(t,this._hostLView),r=ma(t);return new Bt(n[B].data[r+8],n)}return new Bt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=VE(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-Dt}createEmbeddedView(t,n,r){let o,i;"number"==typeof r?o=r:null!=r&&(o=r.index,i=r.injector);const u=t.createEmbeddedViewImpl(n||{},i,null);return this.insertImpl(u,o,ri(this._hostTNode,null)),u}createComponent(t,n,r,o,i){const s=t&&!function sa(e){return"function"==typeof e}(t);let u;if(s)u=n;else{const b=n||{};u=b.index,r=b.injector,o=b.projectableNodes,i=b.environmentInjector||b.ngModuleRef}const d=s?t:new Wa(Me(t)),p=r||this.parentInjector;if(!i&&null==d.ngModule){const _=(s?p:this.parentInjector).get(In,null);_&&(i=_)}Me(d.componentType??{});const v=d.create(p,o,null,i);return this.insertImpl(v.hostView,u,ri(this._hostTNode,null)),v}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){const o=t._lView;if(function r0(e){return tn(e[Mt])}(o)){const u=this.indexOf(t);if(-1!==u)this.detach(u);else{const d=o[Mt],p=new HE(d,d[Yt],d[Mt]);p.detach(p.indexOf(t))}}const i=this._adjustIndex(n),s=this._lContainer;return function ns(e,t,n,r=!0){const o=t[B];if(function NM(e,t,n,r){const o=Dt+r,i=n.length;r>0&&(n[o-1][tr]=t),rt.trim())}(t):t}}class df{constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r0)r.push(s[u/2]);else{const p=i[u+1],h=t[-d];for(let f=Dt;fn()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class yf extends bw{constructor(t){super(),this.moduleType=t}create(t){return new vf(this.moduleType,t,[])}}class Ew extends si{constructor(t){super(),this.componentFactoryResolver=new BE(this),this.instance=null;const n=new Pi([...t.providers,{provide:si,useValue:this},{provide:ru,useValue:this.componentFactoryResolver}],t.parent||cl(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function uu(e,t,n=null){return new Ew({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}function Af(e,t,n,r){const o=I();return function It(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}(o,function or(){return he.lFrame.bindingIndex++}(),t)&&(Ne(),Nr(function st(){const e=he.lFrame;return da(e.tView,e.selectedIndex)}(),o,e,t,n,r)),Af}function kf(e,t,n,r,o){const s=o?"class":"style";Hh(e,n,t.inputs[s],s,r)}function l(e,t,n,r){const o=I(),i=Ne(),s=ne+e,u=o[pe],d=i.firstCreatePass?function jO(e,t,n,r,o,i){const s=t.consts,d=ni(t,e,2,r,Gn(s,o));return function $h(e,t,n,r){if(Lv()){const o=null===r?null:{"":-1},i=function JM(e,t){const n=e.directiveRegistry;let r=null,o=null;if(n)for(let i=0;i(Ir(!0),jl(r,o,function Yv(){return he.lFrame.currentNamespace}()));const wu="en-US";let T_=wu,z_=(e,t,n)=>{};function jf(e,t,n,r){const o=I(),i=Ne(),s=Xe();return function zf(e,t,n,r,o,i,s){const u=fl(r),p=e.firstCreatePass&&Jb(e),h=t[it],f=Xb(t);let m=!0;if(3&r.type||s){const _=un(r,t),D=s?s(_):_,N=f.length,T=s?we=>s(Be(we[r.index])):r.index;let te=null;if(!s&&u&&(te=function Uk(e,t,n,r){const o=e.cleanup;if(null!=o)for(let i=0;id?u[d]:null}"string"==typeof s&&(i+=2)}return null}(e,t,o,r.index)),null!==te)(te.__ngLastListenerFn__||te).__ngNextListenerFn__=i,te.__ngLastListenerFn__=i,m=!1;else{i=K_(r,t,h,i),z_(_,o,i);const we=n.listen(D,o,i);f.push(i,we),p&&p.push(o,T,N,N+1)}}else i=K_(r,t,h,i);const v=r.outputs;let b;if(m&&null!==v&&(b=v[o])){const _=b.length;if(_)for(let D=0;D<_;D+=2){const Pe=t[b[D]][b[D+1]].subscribe(i),vt=f.length;f.push(i,Pe),p&&p.push(o,r.index,vt,-(vt+1))}}}(i,o,o[pe],s,e,t,r),jf}function W_(e,t,n,r){const o=S(null);try{return Dr(6,t,n),!1!==n(r)}catch(i){return Yl(e,i),!1}finally{Dr(7,t,n),S(o)}}function K_(e,t,n,r){return function o(i){if(i===Function)return r;Pa(e.componentOffset>-1?$n(e.index,t):t,5);let u=W_(t,n,r,i),d=o.__ngNextListenerFn__;for(;d;)u=W_(t,n,d,i)&&u,d=d.__ngNextListenerFn__;return u}}function sC(){return function ff(e,t){return e[Yr].queries[t].queryList}(I(),Op())}function a(e,t=""){const n=I(),r=Ne(),o=e+ne,i=r.firstCreatePass?ni(r,o,1,t,null):r.data[o],s=mC(r,n,i,t,e);n[o]=s,fa()&&ql(r,n,s,i),rr(i,!1)}let mC=(e,t,n,r,o)=>(Ir(!0),function Ch(e,t){return e.createText(t)}(t[pe],r)),mP=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){const r=dp(0,n.type),o=r.length>0?uu([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=oe({token:e,providedIn:"environment",factory:()=>new e(ue(In))})}return e})();function RC(e){hn("NgStandalone"),e.getStandaloneInjector=t=>t.get(mP).getOrCreateStandaloneInjector(e)}let eD=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const iD=new Z(""),Au=new Z("");let ig,rg=(()=>{class e{constructor(n,r,o){this._ngZone=n,this.registry=r,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,ig||(function AL(e){ig=e}(o),o.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Je.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb()}});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==i),n()},r)),this._callbacks.push({doneCb:n,timeoutId:i,updateCb:o})}whenStable(n,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,o),this._runCallbacksIfReady()}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,o){return[]}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Je),ue(og),ue(Au))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})(),og=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return ig?.findTestabilityInTree(this,n,r)??null}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function Ru(e){return!!e&&"function"==typeof e.then}function sD(e){return!!e&&"function"==typeof e.subscribe}const sg=new Z("");let aD=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=A(sg,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const n=[];for(const o of this.appInits){const i=o();if(Ru(i))n.push(i);else if(sD(i)){const s=new Promise((u,d)=>{i.subscribe({complete:u,error:d})});n.push(s)}}const r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),0===n.length&&r(),this.initialized=!0}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const xu=new Z("");function lD(e,t){return Array.isArray(t)?t.reduce(lD,e):{...e,...t}}let cr=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=A(nN),this.afterRenderEffectManager=A(iu),this.zonelessEnabled=A(za),this.externalTestViews=new Set,this.beforeRender=new G,this.afterTick=new G,this.componentTypes=[],this.components=[],this.isStable=A(Xo).hasPendingTasks.pipe($e(n=>!n)),this._injector=A(In)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}get injector(){return this._injector}bootstrap(n,r){const o=n instanceof RE;if(!this._injector.get(aD).done)throw!o&&function bo(e){const t=Me(e)||Lt(e)||Kt(e);return null!==t&&t.standalone}(n),new $(405,!1);let s;s=o?n:this._injector.get(ru).resolveComponentFactory(n),this.componentTypes.push(s.componentType);const u=function RL(e){return e.isBoundToModule}(s)?void 0:this._injector.get(si),p=s.create(Rt.NULL,[],r||s.selector,u),h=p.location.nativeElement,f=p.injector.get(iD,null);return f?.registerApplication(h),p.onDestroy(()=>{this.detachView(p.hostView),Ou(this.components,p),f?.unregisterApplication(h)}),this._loadComponent(p),p}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new $(101,!1);const r=S(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this._runningTick=!1,S(r),this.afterTick.next()}}detectChangesInAttachedViews(n){let r=null;this._injector.destroyed||(r=this._injector.get(tf,null,{optional:!0}));let o=0;const i=this.afterRenderEffectManager;for(;o<10;){const s=0===o;if(n||!s){this.beforeRender.next(s);for(let{_lView:u,notifyErrorHandler:d}of this._views)kL(u,d,s,this.zonelessEnabled)}else r?.begin?.(),r?.end?.();if(o++,i.executeInternalCallbacks(),!this.allViews.some(({_lView:u})=>pa(u))&&(i.execute(),!this.allViews.some(({_lView:u})=>pa(u))))break}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;Ou(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(xu,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Ou(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new $(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Ou(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function kL(e,t,n,r){(n||pa(e))&&Zl(e,t,n&&!r?0:1)}class PL{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let dD=(()=>{class e{compileModuleSync(n){return new yf(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const r=this.compileModuleSync(n),i=Fn(en(n).declarations).reduce((s,u)=>{const d=Me(u);return d&&s.push(new Wa(d)),s},[]);return new PL(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),FL=(()=>{class e{constructor(){this.zone=A(Je),this.changeDetectionScheduler=A(os),this.applicationRef=A(cr)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function ag({ngZoneFactory:e,ignoreChangesOutsideZone:t}){return e??=()=>new Je(cg()),[{provide:Je,useFactory:e},{provide:Xn,multi:!0,useFactory:()=>{const n=A(FL,{optional:!0});return()=>n.initialize()}},{provide:Xn,multi:!0,useFactory:()=>{const n=A(UL);return()=>{n.initialize()}}},!0===t?{provide:AE,useValue:!0}:[]]}function cg(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}let UL=(()=>{class e{constructor(){this.subscription=new kt,this.initialized=!1,this.zone=A(Je),this.pendingTasks=A(Xo)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Je.assertNotInAngularZone(),queueMicrotask(()=>{null!==n&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Je.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),uc=(()=>{class e{constructor(){this.appRef=A(cr),this.taskService=A(Xo),this.ngZone=A(Je),this.zonelessEnabled=A(za),this.disableScheduling=A(AE,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new kt,this.angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Nl):null,this.cancelScheduledCallback=null,this.shouldRefreshViews=!1,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Zp||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&5===n)return;switch(n){case 3:case 2:case 0:case 4:case 5:case 1:this.shouldRefreshViews=!0}if(!this.shouldScheduleTick())return;const r=this.useMicrotaskScheduler?yy:vy;this.pendingRenderTaskId=this.taskService.add(),this.zoneIsDefined?Zone.root.run(()=>{this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}):this.cancelScheduledCallback=r(()=>{this.tick(this.shouldRefreshViews)})}shouldScheduleTick(){return!(this.disableScheduling||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(Nl+this.angularZoneId))}tick(n){if(this.runningTick||this.appRef.destroyed)return;const r=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick(n)},void 0,this.schedulerTickApplyArgs)}catch(o){throw this.taskService.remove(r),o}finally{this.cleanup()}this.useMicrotaskScheduler=!0,yy(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(r)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.shouldRefreshViews=!1,this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const Ao=new Z("",{providedIn:"root",factory:()=>A(Ao,xe.Optional|xe.SkipSelf)||function HL(){return typeof $localize<"u"&&$localize.locale||wu}()}),ug=new Z("");function Pu(e){return!!e.platformInjector}let vD=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,r){const i=r?.ignoreChangesOutsideZone,s=[ag({ngZoneFactory:()=>function tN(e="zone.js",t){return"noop"===e?new Zp:"zone.js"===e?new Je(t):e}(r?.ngZone,cg({eventCoalescing:r?.ngZoneEventCoalescing,runCoalescing:r?.ngZoneRunCoalescing})),ignoreChangesOutsideZone:i}),{provide:os,useExisting:uc}],u=function fx(e,t,n){return new vf(e,t,n,!1)}(n.moduleType,this.injector,s);return function mD(e){const t=Pu(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Je);return n.run(()=>{Pu(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();const r=t.get(Sr,null);let o;if(n.runOutsideAngular(()=>{o=n.onError.subscribe({next:i=>{r.handleError(i)}})}),Pu(e)){const i=()=>t.destroy(),s=e.platformInjector.get(ug);s.add(i),t.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else e.moduleRef.onDestroy(()=>{Ou(e.allPlatformModules,e.moduleRef),o.unsubscribe()});return function OL(e,t,n){try{const r=n();return Ru(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(r,n,()=>{const i=t.get(aD);return i.runInitializers(),i.donePromise.then(()=>{if(function nk(e){"string"==typeof e&&(T_=e.toLowerCase().replace(/_/g,"-"))}(t.get(Ao,wu)||wu),Pu(e)){const u=t.get(cr);return void 0!==e.rootComponent&&u.bootstrap(e.rootComponent),u}return function WL(e,t){const n=e.injector.get(cr);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>n.bootstrap(r));else{if(!e.instance.ngDoBootstrap)throw new $(-403,!1);e.instance.ngDoBootstrap(n)}t.push(e)}(e.moduleRef,e.allPlatformModules),e.moduleRef})})})}({moduleRef:u,allPlatformModules:this._modules})}bootstrapModule(n,r=[]){const o=lD({},r);return function $L(e,t,n){const r=new yf(n);return Promise.resolve(r)}(0,0,n).then(i=>this.bootstrapModuleFactory(i,o))}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new $(404,!1);this._modules.slice().forEach(r=>r.destroy()),this._destroyListeners.forEach(r=>r());const n=this._injector.get(ug,null);n&&(n.forEach(r=>r()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Rt))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})(),Ro=null;const yD=new Z("");function bD(e,t,n=[]){const r=`Platform: ${t}`,o=new Z(r);return(i=[])=>{let s=dg();if(!s||s.injector.get(yD,!1)){const u=[...n,...i,{provide:o,useValue:!0}];e?e(u):function KL(e){if(Ro&&!Ro.get(yD,!1))throw new $(400,!1);(function cD(){!function Fr(e){an=e}(()=>{throw new $(600,!1)})})(),Ro=e;const t=e.get(vD);(function wD(e){e.get(jy,null)?.forEach(n=>n())})(e)}(function ED(e=[],t){return Rt.create({name:t,providers:[{provide:fp,useValue:"platform"},{provide:ug,useValue:new Set([()=>Ro=null])},...e]})}(u,r))}return function YL(){const t=dg();if(!t)throw new $(401,!1);return t}()}}function dg(){return Ro?.get(vD)??null}let Lu=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=QL}return e})();function QL(e){return function XL(e,t,n){if(qo(e)&&!n){const r=$n(e.index,t);return new La(r,r)}return 175&e.type?new La(t[ht],t):null}(Xe(),I(),!(16&~e))}const u2=bD(null,"core",[]);let d2=(()=>{class e{constructor(n){}static#e=this.\u0275fac=function(r){return new(r||e)(ue(cr))};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({})}return e})();const WD=new Z("");function Eg(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}let o1=null;function Ts(){return o1}class Q2{}const Un=new Z("");let wg=(()=>{class e{historyGo(n){throw new Error("")}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(J2),providedIn:"platform"})}return e})();const X2=new Z("");let J2=(()=>{class e extends wg{constructor(){super(),this._doc=A(Un),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Ts().getBaseHref(this._doc)}onPopState(n){const r=Ts().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){const r=Ts().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>new e,providedIn:"platform"})}return e})();function _g(e,t){if(0==e.length)return t;if(0==t.length)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t}function i1(e){const t=e.match(/#|\?|$/),n=t&&t.index||e.length;return e.slice(0,n-("/"===e[n-1]?1:0))+e.slice(n)}function no(e){return e&&"?"!==e[0]?"?"+e:e}let pi=(()=>{class e{historyGo(n){throw new Error("")}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(a1),providedIn:"root"})}return e})();const s1=new Z("");let a1=(()=>{class e extends pi{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??A(Un).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return _g(this._baseHref,n)}path(n=!1){const r=this._platformLocation.pathname+no(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){const s=this.prepareExternalUrl(o+no(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){const s=this.prepareExternalUrl(o+no(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(wg),ue(s1,8))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),e$=(()=>{class e extends pi{constructor(n,r){super(),this._platformLocation=n,this._baseHref="",this._removeListenerFns=[],null!=r&&(this._baseHref=r)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}path(n=!1){const r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(n){const r=_g(this._baseHref,n);return r.length>0?"#"+r:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+no(i));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+no(i));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(wg),ue(s1,8))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})(),fc=(()=>{class e{constructor(n){this._subject=new pn,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;const r=this._locationStrategy.getBaseHref();this._basePath=function r$(e){if(new RegExp("^(https?:)?//").test(e)){const[,n]=e.split(/\/\/[^\/]+/);return n}return e}(i1(c1(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+no(r))}normalize(n){return e.stripTrailingSlash(function n$(e,t){if(!e||!t.startsWith(e))return t;const n=t.substring(e.length);return""===n||["/",";","?","#"].includes(n[0])?n:t}(this._basePath,c1(n)))}prepareExternalUrl(n){return n&&"/"!==n[0]&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+no(r)),o)}replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+no(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{const r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r,complete:o})}static#e=this.normalizeQueryParams=no;static#t=this.joinWithSlash=_g;static#n=this.stripTrailingSlash=i1;static#r=this.\u0275fac=function(r){return new(r||e)(ue(pi))};static#o=this.\u0275prov=oe({token:e,factory:()=>function t$(){return new fc(ue(pi))}(),providedIn:"root"})}return e})();function c1(e){return e.replace(/\/index.html$/,"")}let xo=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({})}return e})();const C1="browser";function D1(e){return"server"===e}let EF=(()=>{class e{static#e=this.\u0275prov=oe({token:e,providedIn:"root",factory:()=>function bF(e){return e===C1}(A(Co))?new wF(A(Un),window):new CF})}return e})();class wF{constructor(t,n){this.document=t,this.window=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t){this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){const n=function _F(e,t){const n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if("function"==typeof e.createTreeWalker&&e.body&&"function"==typeof e.body.attachShadow){const r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT);let o=r.currentNode;for(;o;){const i=o.shadowRoot;if(i){const s=i.getElementById(t)||i.querySelector(`[name="${t}"]`);if(s)return s}o=r.nextNode()}}return null}(this.document,t);n&&(this.scrollToElement(n),n.focus())}setHistoryScrollRestoration(t){this.window.history.scrollRestoration=t}scrollToElement(t){const n=t.getBoundingClientRect(),r=n.left+this.window.pageXOffset,o=n.top+this.window.pageYOffset,i=this.offset();this.window.scrollTo(r-i[0],o-i[1])}}class CF{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}class XF extends Q2{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class Ug extends XF{static makeCurrent(){!function Z2(e){o1??=e}(new Ug)}onAndCancel(t,n,r){return t.addEventListener(n,r),()=>{t.removeEventListener(n,r)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.remove()}createElement(t,n){return(n=n||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return"window"===n?window:"document"===n?t:"body"===n?t.body:null}getBaseHref(t){const n=function JF(){return yc=yc||document.querySelector("base"),yc?yc.getAttribute("href"):null}();return null==n?null:function e3(e){return new URL(e,document.baseURI).pathname}(n)}resetBaseElement(){yc=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return function H$(e,t){t=encodeURIComponent(t);for(const n of e.split(";")){const r=n.indexOf("="),[o,i]=-1==r?[n,""]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}(document.cookie,t)}}let yc=null,n3=(()=>{class e{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();const sd=new Z("");let k1=(()=>{class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,o){return this._findPluginFor(r).addEventListener(n,r,o)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new $(5101,!1);return this._eventNameToPlugin.set(n,r),r}static#e=this.\u0275fac=function(r){return new(r||e)(ue(sd),ue(Je))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();class Hg{constructor(t){this._doc=t}}const Vg="ng-app-id";let P1=(()=>{class e{constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.platformId=i,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=D1(i),this.resetHostNodes()}addStyles(n){for(const r of n)1===this.changeUsageCount(r,1)&&this.onStyleAdded(r)}removeStyles(n){for(const r of n)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){const n=this.styleNodesInDOM;n&&(n.forEach(r=>r.remove()),n.clear());for(const r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(const r of this.getAllStyles())this.addStyleToHost(n,r)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(const r of this.hostNodes)this.addStyleToHost(r,n)}onStyleRemoved(n){const r=this.styleRef;r.get(n)?.elements?.forEach(o=>o.remove()),r.delete(n)}collectServerRenderedStyles(){const n=this.doc.head?.querySelectorAll(`style[${Vg}="${this.appId}"]`);if(n?.length){const r=new Map;return n.forEach(o=>{null!=o.textContent&&r.set(o.textContent,o)}),r}return null}changeUsageCount(n,r){const o=this.styleRef;if(o.has(n)){const i=o.get(n);return i.usage+=r,i.usage}return o.set(n,{usage:r,elements:[]}),r}getStyleElement(n,r){const o=this.styleNodesInDOM,i=o?.get(r);if(i?.parentNode===n)return o.delete(r),i.removeAttribute(Vg),i;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=r,this.platformIsServer&&s.setAttribute(Vg,this.appId),n.appendChild(s),s}}addStyleToHost(n,r){const o=this.getStyleElement(n,r),i=this.styleRef,s=i.get(r)?.elements;s?s.push(o):i.set(r,{elements:[o],usage:1})}resetHostNodes(){const n=this.hostNodes;n.clear(),n.add(this.doc.head)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Un),ue(Ki),ue(zy,8),ue(Co))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();const jg={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},zg=/%COMP%/g,s3=new Z("",{providedIn:"root",factory:()=>!0});function $1(e,t){return t.map(n=>n.replace(zg,e))}let F1=(()=>{class e{constructor(n,r,o,i,s,u,d,p=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.platformId=u,this.ngZone=d,this.nonce=p,this.rendererByCompId=new Map,this.platformIsServer=D1(u),this.defaultRenderer=new qg(n,s,d,this.platformIsServer)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===Jn.ShadowDom&&(r={...r,encapsulation:Jn.Emulated});const o=this.getOrCreateRenderer(n,r);return o instanceof U1?o.applyToHost(n):o instanceof Gg&&o.applyStyles(),o}getOrCreateRenderer(n,r){const o=this.rendererByCompId;let i=o.get(r.id);if(!i){const s=this.doc,u=this.ngZone,d=this.eventManager,p=this.sharedStylesHost,h=this.removeStylesOnCompDestroy,f=this.platformIsServer;switch(r.encapsulation){case Jn.Emulated:i=new U1(d,p,r,this.appId,h,s,u,f);break;case Jn.ShadowDom:return new u3(d,p,n,r,s,u,this.nonce,f);default:i=new Gg(d,p,r,h,s,u,f)}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(r){return new(r||e)(ue(k1),ue(P1),ue(Ki),ue(s3),ue(Un),ue(Co),ue(Je),ue(zy))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();class qg{constructor(t,n,r,o){this.eventManager=t,this.doc=n,this.ngZone=r,this.platformIsServer=o,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(t,n){return n?this.doc.createElementNS(jg[n]||n,t):this.doc.createElement(t)}createComment(t){return this.doc.createComment(t)}createText(t){return this.doc.createTextNode(t)}appendChild(t,n){(B1(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){t&&(B1(t)?t.content:t).insertBefore(n,r)}removeChild(t,n){n.remove()}selectRootElement(t,n){let r="string"==typeof t?this.doc.querySelector(t):t;if(!r)throw new $(-5104,!1);return n||(r.textContent=""),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+":"+n;const i=jg[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){const o=jg[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){o&(Io.DashCase|Io.Important)?t.style.setProperty(n,r,o&Io.Important?"important":""):t.style[n]=r}removeStyle(t,n,r){r&Io.DashCase?t.style.removeProperty(n):t.style[n]=""}setProperty(t,n,r){null!=t&&(t[n]=r)}setValue(t,n){t.nodeValue=n}listen(t,n,r){if("string"==typeof t&&!(t=Ts().getGlobalEventTarget(this.doc,t)))throw new Error(`Unsupported event target ${t} for event ${n}`);return this.eventManager.addEventListener(t,n,this.decoratePreventDefault(r))}decoratePreventDefault(t){return n=>{if("__ngUnwrap__"===n)return t;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>t(n)):t(n))&&n.preventDefault()}}}function B1(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class u3 extends qg{constructor(t,n,r,o,i,s,u,d){super(t,i,s,d),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const p=$1(o.id,o.styles);for(const h of p){const f=document.createElement("style");u&&f.setAttribute("nonce",u),f.textContent=h,this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(null,n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Gg extends qg{constructor(t,n,r,o,i,s,u,d){super(t,i,s,u),this.sharedStylesHost=n,this.removeStylesOnCompDestroy=o,this.styles=d?$1(d,r.styles):r.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class U1 extends Gg{constructor(t,n,r,o,i,s,u,d){const p=o+"-"+r.id;super(t,n,r,i,s,u,d,p),this.contentAttr=function a3(e){return"_ngcontent-%COMP%".replace(zg,e)}(p),this.hostAttr=function c3(e){return"_nghost-%COMP%".replace(zg,e)}(p)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,"")}createElement(t,n){const r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,""),r}}let d3=(()=>{class e extends Hg{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o){return n.addEventListener(r,o,!1),()=>this.removeEventListener(n,r,o)}removeEventListener(n,r,o){return n.removeEventListener(r,o)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Un))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})(),p3=(()=>{class e extends Hg{constructor(n){super(n),this.delegate=A(WD,{optional:!0})}supports(n){return!!this.delegate&&this.delegate.supports(n)}addEventListener(n,r,o){return this.delegate.addEventListener(n,r,o)}removeEventListener(n,r,o){return this.delegate.removeEventListener(n,r,o)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Un))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();const H1=["alt","control","meta","shift"],h3={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},f3={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let g3=(()=>{class e extends Hg{constructor(n){super(n)}supports(n){return null!=e.parseEventName(n)}addEventListener(n,r,o){const i=e.parseEventName(r),s=e.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ts().onAndCancel(n,i.domEventName,s))}static parseEventName(n){const r=n.toLowerCase().split("."),o=r.shift();if(0===r.length||"keydown"!==o&&"keyup"!==o)return null;const i=e._normalizeKey(r.pop());let s="",u=r.indexOf("code");if(u>-1&&(r.splice(u,1),s="code."),H1.forEach(p=>{const h=r.indexOf(p);h>-1&&(r.splice(h,1),s+=p+".")}),s+=i,0!=r.length||0===i.length)return null;const d={};return d.domEventName=o,d.fullKey=s,d}static matchEventFullKeyCode(n,r){let o=h3[n.key]||n.key,i="";return r.indexOf("code.")>-1&&(o=n.code,i="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),H1.forEach(s=>{s!==o&&(0,f3[s])(n)&&(i+=s+".")}),i+=o,i===r)}static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){return"esc"===n?"escape":n}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Un))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();const b3=bD(u2,"browser",[{provide:Co,useValue:C1},{provide:jy,useValue:function m3(){Ug.makeCurrent()},multi:!0},{provide:Un,useFactory:function y3(){return function IN(e){th=e}(document),document},deps:[]}]),E3=new Z(""),z1=[{provide:Au,useClass:class t3{addToWindow(t){ut.getAngularTestability=(r,o=!0)=>{const i=t.findTestabilityInTree(r,o);if(null==i)throw new $(5103,!1);return i},ut.getAllAngularTestabilities=()=>t.getAllTestabilities(),ut.getAllAngularRootElements=()=>t.getAllRootElements(),ut.frameworkStabilizers||(ut.frameworkStabilizers=[]),ut.frameworkStabilizers.push(r=>{const o=ut.getAllAngularTestabilities();let i=o.length;const s=function(){i--,0==i&&r()};o.forEach(u=>{u.whenStable(s)})})}findTestabilityInTree(t,n,r){return null==n?null:t.getTestability(n)??(r?Ts().isShadowRoot(n)?this.findTestabilityInTree(t,n.host,!0):this.findTestabilityInTree(t,n.parentElement,!0):null)}},deps:[]},{provide:iD,useClass:rg,deps:[Je,og,Au]},{provide:rg,useClass:rg,deps:[Je,og,Au]}],q1=[{provide:fp,useValue:"root"},{provide:Sr,useFactory:function v3(){return new Sr},deps:[]},{provide:sd,useClass:d3,multi:!0,deps:[Un,Je,Co]},{provide:sd,useClass:g3,multi:!0,deps:[Un]},{provide:sd,useClass:p3,multi:!0},F1,P1,k1,{provide:tf,useExisting:F1},{provide:class DF{},useClass:n3,deps:[]},[]];let w3=(()=>{class e{constructor(n){}static withServerTransition(n){return{ngModule:e,providers:[{provide:Ki,useValue:n.appId}]}}static#e=this.\u0275fac=function(r){return new(r||e)(ue(E3,12))};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({providers:[...q1,...z1],imports:[xo,d2]})}return e})(),_3=(()=>{class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Un))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Oo(e){return this instanceof Oo?(this.v=e,this):new Oo(e)}function Q1(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=function Zg(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(u,d){!function o(i,s,u,d){Promise.resolve(d).then(function(p){i({value:p,done:u})},s)}(u,d,(s=e[i](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const X1=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function J1(e){return Ke(e?.then)}function eI(e){return Ke(e[Gs])}function tI(e){return Symbol.asyncIterator&&Ke(e?.[Symbol.asyncIterator])}function nI(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const rI=function K3(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function oI(e){return Ke(e?.[rI])}function iI(e){return function Z1(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,r=n.apply(e,t||[]),i=[];return o={},u("next"),u("throw"),u("return",function s(v){return function(b){return Promise.resolve(b).then(v,f)}}),o[Symbol.asyncIterator]=function(){return this},o;function u(v,b){r[v]&&(o[v]=function(_){return new Promise(function(D,N){i.push([v,_,D,N])>1||d(v,_)})},b&&(o[v]=b(o[v])))}function d(v,b){try{!function p(v){v.value instanceof Oo?Promise.resolve(v.value.v).then(h,f):m(i[0][2],v)}(r[v](b))}catch(_){m(i[0][3],_)}}function h(v){d("next",v)}function f(v){d("throw",v)}function m(v,b){v(b),i.shift(),i.length&&d(i[0][0],i[0][1])}}(this,arguments,function*(){const n=e.getReader();try{for(;;){const{value:r,done:o}=yield Oo(n.read());if(o)return yield Oo(void 0);yield yield Oo(r)}}finally{n.releaseLock()}})}function sI(e){return Ke(e?.getReader)}function io(e){if(e instanceof C)return e;if(null!=e){if(eI(e))return function Y3(e){return new C(t=>{const n=e[Gs]();if(Ke(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(X1(e))return function Z3(e){return new C(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,Fo)})}(e);if(tI(e))return aI(e);if(oI(e))return function X3(e){return new C(t=>{for(const n of e)if(t.next(n),t.closed)return;t.complete()})}(e);if(sI(e))return function J3(e){return aI(iI(e))}(e)}throw nI(e)}function aI(e){return new C(t=>{(function e4(e,t){var n,r,o,i;return function K1(e,t,n,r){return new(n||(n=Promise))(function(i,s){function u(h){try{p(r.next(h))}catch(f){s(f)}}function d(h){try{p(r.throw(h))}catch(f){s(f)}}function p(h){h.done?i(h.value):function o(i){return i instanceof n?i:new n(function(s){s(i)})}(h.value).then(u,d)}p((r=r.apply(e,t||[])).next())})}(this,void 0,void 0,function*(){try{for(n=Q1(e);!(r=yield n.next()).done;)if(t.next(r.value),t.closed)return}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})})(e,t).catch(n=>t.error(n))})}function so(e,t,n,r=0,o=!1){const i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function cI(e,t=0){return Re((n,r)=>{n.subscribe(dt(r,o=>so(r,e,()=>r.next(o),t),()=>so(r,e,()=>r.complete(),t),o=>so(r,e,()=>r.error(o),t)))})}function lI(e,t=0){return Re((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function uI(e,t){if(!e)throw new Error("Iterable cannot be null");return new C(n=>{so(n,t,()=>{const r=e[Symbol.asyncIterator]();so(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function Qt(e,t){return t?function s4(e,t){if(null!=e){if(eI(e))return function t4(e,t){return io(e).pipe(lI(t),cI(t))}(e,t);if(X1(e))return function r4(e,t){return new C(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}(e,t);if(J1(e))return function n4(e,t){return io(e).pipe(lI(t),cI(t))}(e,t);if(tI(e))return uI(e,t);if(oI(e))return function o4(e,t){return new C(n=>{let r;return so(n,t,()=>{r=e[rI](),so(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){return void n.error(s)}i?n.complete():n.next(o)},0,!0)}),()=>Ke(r?.return)&&r.return()})}(e,t);if(sI(e))return function i4(e,t){return uI(iI(e),t)}(e,t)}throw nI(e)}(e,t):io(e)}function Qg(e){return e[e.length-1]}function cd(e){return function a4(e){return e&&Ke(e.schedule)}(Qg(e))?e.pop():void 0}function ge(...e){return Qt(e,cd(e))}const{isArray:l4}=Array,{getPrototypeOf:u4,prototype:d4,keys:p4}=Object;const{isArray:g4}=Array;function Xg(...e){const t=cd(e),n=function c4(e){return Ke(Qg(e))?e.pop():void 0}(e),{args:r,keys:o}=function h4(e){if(1===e.length){const t=e[0];if(l4(t))return{args:t,keys:null};if(function f4(e){return e&&"object"==typeof e&&u4(e)===d4}(t)){const n=p4(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}(e);if(0===r.length)return Qt([],t);const i=new C(function b4(e,t,n=ho){return r=>{dI(t,()=>{const{length:o}=e,i=new Array(o);let s=o,u=o;for(let d=0;d{const p=Qt(e[d],t);let h=!1;p.subscribe(dt(r,f=>{i[d]=f,h||(h=!0,u--),u||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}(r,t,o?s=>function y4(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}(o,s):ho));return n?i.pipe(function v4(e){return $e(t=>function m4(e,t){return g4(t)?e(...t):e(t)}(e,t))}(n)):i}function dI(e,t,n){e?so(n,e,t):t()}const ld=Lo(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function rn(e,t,n=1/0){return Ke(t)?rn((r,o)=>$e((i,s)=>t(r,i,o,s))(io(e(r,o))),n):("number"==typeof t&&(n=t),Re((r,o)=>function E4(e,t,n,r,o,i,s,u){const d=[];let p=0,h=0,f=!1;const m=()=>{f&&!d.length&&!p&&t.complete()},v=_=>p{i&&t.next(_),p++;let D=!1;io(n(_,h++)).subscribe(dt(t,N=>{o?.(N),i?v(N):t.next(N)},()=>{D=!0},void 0,()=>{if(D)try{for(p--;d.length&&pb(N)):b(N)}m()}catch(N){t.error(N)}}))};return e.subscribe(dt(t,v,()=>{f=!0,m()})),()=>{u?.()}}(r,o,e,n)))}function bc(e=1/0){return rn(ho,e)}function Jg(...e){return function w4(){return bc(1)}()(Qt(e,cd(e)))}function pI(e){return new C(t=>{io(e()).subscribe(t)})}function ud(e,t){const n=Ke(e)?e:()=>e,r=o=>o.error(n());return new C(t?o=>t.schedule(r,0,o):r)}const xr=new C(e=>e.complete());function em(){return Re((e,t)=>{let n=null;e._refCount++;const r=dt(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount)return void(n=null);const o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}class hI extends C{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,wt(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new kt;const n=this.getSubject();t.add(this.source.subscribe(dt(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=kt.EMPTY)}return t}refCount(){return em()(this)}}function Or(e,t){return Re((n,r)=>{let o=null,i=0,s=!1;const u=()=>s&&!o&&r.complete();n.subscribe(dt(r,d=>{o?.unsubscribe();let p=0;const h=i++;io(e(d,h)).subscribe(o=dt(r,f=>r.next(t?t(d,f,h,p++):f),()=>{o=null,u()}))},()=>{s=!0,u()}))})}function Ms(e){return e<=0?()=>xr:Re((t,n)=>{let r=0;t.subscribe(dt(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function ko(e,t){return Re((n,r)=>{let o=0;n.subscribe(dt(r,i=>e.call(t,i,o++)&&r.next(i)))})}function dd(e){return Re((t,n)=>{let r=!1;t.subscribe(dt(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function fI(e=D4){return Re((t,n)=>{let r=!1;t.subscribe(dt(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function D4(){return new ld}function fi(e,t){const n=arguments.length>=2;return r=>r.pipe(e?ko((o,i)=>e(o,i,r)):ho,Ms(1),n?dd(t):fI(()=>new ld))}function Ec(e,t){return Ke(t)?rn(e,t,1):rn(e,1)}function yn(e,t,n){const r=Ke(e)||t||n?{next:e,error:t,complete:n}:e;return r?Re((o,i)=>{var s;null===(s=r.subscribe)||void 0===s||s.call(r);let u=!0;o.subscribe(dt(i,d=>{var p;null===(p=r.next)||void 0===p||p.call(r,d),i.next(d)},()=>{var d;u=!1,null===(d=r.complete)||void 0===d||d.call(r),i.complete()},d=>{var p;u=!1,null===(p=r.error)||void 0===p||p.call(r,d),i.error(d)},()=>{var d,p;u&&(null===(d=r.unsubscribe)||void 0===d||d.call(r)),null===(p=r.finalize)||void 0===p||p.call(r)}))}):ho}function As(e){return Re((t,n)=>{let i,r=null,o=!1;r=t.subscribe(dt(n,void 0,void 0,s=>{i=io(e(s,As(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function tm(e){return e<=0?()=>xr:Re((t,n)=>{let r=[];t.subscribe(dt(n,o=>{r.push(o),e{for(const o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function nm(e){return Re((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}const Te="primary",wc=Symbol("RouteTitle");class A4{constructor(t){this.params=t||{}}has(t){return Object.prototype.hasOwnProperty.call(this.params,t)}get(t){if(this.has(t)){const n=this.params[t];return Array.isArray(n)?n[0]:n}return null}getAll(t){if(this.has(t)){const n=this.params[t];return Array.isArray(n)?n:[n]}return[]}get keys(){return Object.keys(this.params)}}function Rs(e){return new A4(e)}function R4(e,t,n){const r=n.path.split("/");if(r.length>e.length||"full"===n.pathMatch&&(t.hasChildren()||r.lengthr[i]===o)}return e===t}function mI(e){return e.length>0?e[e.length-1]:null}function Po(e){return function T3(e){return!!e&&(e instanceof C||Ke(e.lift)&&Ke(e.subscribe))}(e)?e:Ru(e)?Qt(Promise.resolve(e)):ge(e)}const O4={exact:function bI(e,t,n){if(!mi(e.segments,t.segments)||!pd(e.segments,t.segments,n)||e.numberOfChildren!==t.numberOfChildren)return!1;for(const r in t.children)if(!e.children[r]||!bI(e.children[r],t.children[r],n))return!1;return!0},subset:EI},vI={exact:function k4(e,t){return kr(e,t)},subset:function P4(e,t){return Object.keys(t).length<=Object.keys(e).length&&Object.keys(t).every(n=>gI(e[n],t[n]))},ignored:()=>!0};function yI(e,t,n){return O4[n.paths](e.root,t.root,n.matrixParams)&&vI[n.queryParams](e.queryParams,t.queryParams)&&!("exact"===n.fragment&&e.fragment!==t.fragment)}function EI(e,t,n){return wI(e,t,t.segments,n)}function wI(e,t,n,r){if(e.segments.length>n.length){const o=e.segments.slice(0,n.length);return!(!mi(o,n)||t.hasChildren()||!pd(o,n,r))}if(e.segments.length===n.length){if(!mi(e.segments,n)||!pd(e.segments,n,r))return!1;for(const o in t.children)if(!e.children[o]||!EI(e.children[o],t.children[o],r))return!1;return!0}{const o=n.slice(0,e.segments.length),i=n.slice(e.segments.length);return!!(mi(e.segments,o)&&pd(e.segments,o,r)&&e.children[Te])&&wI(e.children[Te],t,i,r)}}function pd(e,t,n){return t.every((r,o)=>vI[n](e[o].parameters,r.parameters))}class gi{constructor(t=new tt([],{}),n={},r=null){this.root=t,this.queryParams=n,this.fragment=r}get queryParamMap(){return this._queryParamMap??=Rs(this.queryParams),this._queryParamMap}toString(){return F4.serialize(this)}}class tt{constructor(t,n){this.segments=t,this.children=n,this.parent=null,Object.values(n).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return fd(this)}}class _c{constructor(t,n){this.path=t,this.parameters=n}get parameterMap(){return this._parameterMap??=Rs(this.parameters),this._parameterMap}toString(){return DI(this)}}function mi(e,t){return e.length===t.length&&e.every((n,r)=>n.path===t[r].path)}let xs=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>new hd,providedIn:"root"})}return e})();class hd{parse(t){const n=new Y4(t);return new gi(n.parseRootSegment(),n.parseQueryParams(),n.parseFragment())}serialize(t){const n=`/${Cc(t.root,!0)}`,r=function H4(e){const t=Object.entries(e).map(([n,r])=>Array.isArray(r)?r.map(o=>`${gd(n)}=${gd(o)}`).join("&"):`${gd(n)}=${gd(r)}`).filter(n=>n);return t.length?`?${t.join("&")}`:""}(t.queryParams);return`${n}${r}${"string"==typeof t.fragment?`#${function B4(e){return encodeURI(e)}(t.fragment)}`:""}`}}const F4=new hd;function fd(e){return e.segments.map(t=>DI(t)).join("/")}function Cc(e,t){if(!e.hasChildren())return fd(e);if(t){const n=e.children[Te]?Cc(e.children[Te],!1):"",r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==Te&&r.push(`${o}:${Cc(i,!1)}`)}),r.length>0?`${n}(${r.join("//")})`:n}{const n=function $4(e,t){let n=[];return Object.entries(e.children).forEach(([r,o])=>{r===Te&&(n=n.concat(t(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==Te&&(n=n.concat(t(o,r)))}),n}(e,(r,o)=>o===Te?[Cc(e.children[Te],!1)]:[`${o}:${Cc(r,!1)}`]);return 1===Object.keys(e.children).length&&null!=e.children[Te]?`${fd(e)}/${n[0]}`:`${fd(e)}/(${n.join("//")})`}}function _I(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function gd(e){return _I(e).replace(/%3B/gi,";")}function om(e){return _I(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function md(e){return decodeURIComponent(e)}function CI(e){return md(e.replace(/\+/g,"%20"))}function DI(e){return`${om(e.path)}${function U4(e){return Object.entries(e).map(([t,n])=>`;${om(t)}=${om(n)}`).join("")}(e.parameters)}`}const V4=/^[^\/()?;#]+/;function im(e){const t=e.match(V4);return t?t[0]:""}const j4=/^[^\/()?;=#]+/,q4=/^[^=?&#]+/,W4=/^[^&#]+/;class Y4{constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new tt([],{}):new tt([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let n={};this.peekStartsWith("/(")&&(this.capture("/"),n=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(t.length>0||Object.keys(n).length>0)&&(r[Te]=new tt(t,n)),r}parseSegment(){const t=im(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new $(4009,!1);return this.capture(t),new _c(md(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const n=function z4(e){const t=e.match(j4);return t?t[0]:""}(this.remaining);if(!n)return;this.capture(n);let r="";if(this.consumeOptional("=")){const o=im(this.remaining);o&&(r=o,this.capture(r))}t[md(n)]=md(r)}parseQueryParam(t){const n=function G4(e){const t=e.match(q4);return t?t[0]:""}(this.remaining);if(!n)return;this.capture(n);let r="";if(this.consumeOptional("=")){const s=function K4(e){const t=e.match(W4);return t?t[0]:""}(this.remaining);s&&(r=s,this.capture(r))}const o=CI(n),i=CI(r);if(t.hasOwnProperty(o)){let s=t[o];Array.isArray(s)||(s=[s],t[o]=s),s.push(i)}else t[o]=i}parseParens(t){const n={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const r=im(this.remaining),o=this.remaining[r.length];if("/"!==o&&")"!==o&&";"!==o)throw new $(4010,!1);let i;r.indexOf(":")>-1?(i=r.slice(0,r.indexOf(":")),this.capture(i),this.capture(":")):t&&(i=Te);const s=this.parseChildren();n[i]=1===Object.keys(s).length?s[Te]:new tt([],s),this.consumeOptional("//")}return n}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new $(4011,!1)}}function II(e){return e.segments.length>0?new tt([],{[Te]:e}):e}function TI(e){const t={};for(const[r,o]of Object.entries(e.children)){const i=TI(o);if(r===Te&&0===i.segments.length&&i.hasChildren())for(const[s,u]of Object.entries(i.children))t[s]=u;else(i.segments.length>0||i.hasChildren())&&(t[r]=i)}return function Z4(e){if(1===e.numberOfChildren&&e.children[Te]){const t=e.children[Te];return new tt(e.segments.concat(t.segments),t.children)}return e}(new tt(e.segments,t))}function vi(e){return e instanceof gi}function SI(e){let t;const o=II(function n(i){const s={};for(const d of i.children){const p=n(d);s[d.outlet]=p}const u=new tt(i.url,s);return i===e&&(t=u),u}(e.root));return t??o}function NI(e,t,n,r){let o=e;for(;o.parent;)o=o.parent;if(0===t.length)return sm(o,o,o,n,r);const i=function X4(e){if("string"==typeof e[0]&&1===e.length&&"/"===e[0])return new AI(!0,0,e);let t=0,n=!1;const r=e.reduce((o,i,s)=>{if("object"==typeof i&&null!=i){if(i.outlets){const u={};return Object.entries(i.outlets).forEach(([d,p])=>{u[d]="string"==typeof p?p.split("/"):p}),[...o,{outlets:u}]}if(i.segmentPath)return[...o,i.segmentPath]}return"string"!=typeof i?[...o,i]:0===s?(i.split("/").forEach((u,d)=>{0==d&&"."===u||(0==d&&""===u?n=!0:".."===u?t++:""!=u&&o.push(u))}),o):[...o,i]},[]);return new AI(n,t,r)}(t);if(i.toRoot())return sm(o,o,new tt([],{}),n,r);const s=function J4(e,t,n){if(e.isAbsolute)return new yd(t,!0,0);if(!n)return new yd(t,!1,NaN);if(null===n.parent)return new yd(n,!0,0);const r=vd(e.commands[0])?0:1;return function eB(e,t,n){let r=e,o=t,i=n;for(;i>o;){if(i-=o,r=r.parent,!r)throw new $(4005,!1);o=r.segments.length}return new yd(r,!1,o-i)}(n,n.segments.length-1+r,e.numberOfDoubleDots)}(i,o,e),u=s.processChildren?Ic(s.segmentGroup,s.index,i.commands):RI(s.segmentGroup,s.index,i.commands);return sm(o,s.segmentGroup,u,n,r)}function vd(e){return"object"==typeof e&&null!=e&&!e.outlets&&!e.segmentPath}function Dc(e){return"object"==typeof e&&null!=e&&e.outlets}function sm(e,t,n,r,o){let s,i={};r&&Object.entries(r).forEach(([d,p])=>{i[d]=Array.isArray(p)?p.map(h=>`${h}`):`${p}`}),s=e===t?n:MI(e,t,n);const u=II(TI(s));return new gi(u,i,o)}function MI(e,t,n){const r={};return Object.entries(e.children).forEach(([o,i])=>{r[o]=i===t?n:MI(i,t,n)}),new tt(e.segments,r)}class AI{constructor(t,n,r){if(this.isAbsolute=t,this.numberOfDoubleDots=n,this.commands=r,t&&r.length>0&&vd(r[0]))throw new $(4003,!1);const o=r.find(Dc);if(o&&o!==mI(r))throw new $(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class yd{constructor(t,n,r){this.segmentGroup=t,this.processChildren=n,this.index=r}}function RI(e,t,n){if(e??=new tt([],{}),0===e.segments.length&&e.hasChildren())return Ic(e,t,n);const r=function nB(e,t,n){let r=0,o=t;const i={match:!1,pathIndex:0,commandIndex:0};for(;o=n.length)return i;const s=e.segments[o],u=n[r];if(Dc(u))break;const d=`${u}`,p=r0&&void 0===d)break;if(d&&p&&"object"==typeof p&&void 0===p.outlets){if(!OI(d,p,s))return i;r+=2}else{if(!OI(d,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}(e,t,n),o=n.slice(r.commandIndex);if(r.match&&r.pathIndexi!==Te)&&e.children[Te]&&1===e.numberOfChildren&&0===e.children[Te].segments.length){const i=Ic(e.children[Te],t,n);return new tt(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[i]=RI(e.children[i],t,s))}),Object.entries(e.children).forEach(([i,s])=>{void 0===r[i]&&(o[i]=s)}),new tt(e.segments,o)}}function am(e,t,n){const r=e.segments.slice(0,t);let o=0;for(;o{"string"==typeof r&&(r=[r]),null!==r&&(t[n]=am(new tt([],{}),0,r))}),t}function xI(e){const t={};return Object.entries(e).forEach(([n,r])=>t[n]=`${r}`),t}function OI(e,t,n){return e==n.path&&kr(t,n.parameters)}const Tc="imperative";var ke=function(e){return e[e.NavigationStart=0]="NavigationStart",e[e.NavigationEnd=1]="NavigationEnd",e[e.NavigationCancel=2]="NavigationCancel",e[e.NavigationError=3]="NavigationError",e[e.RoutesRecognized=4]="RoutesRecognized",e[e.ResolveStart=5]="ResolveStart",e[e.ResolveEnd=6]="ResolveEnd",e[e.GuardsCheckStart=7]="GuardsCheckStart",e[e.GuardsCheckEnd=8]="GuardsCheckEnd",e[e.RouteConfigLoadStart=9]="RouteConfigLoadStart",e[e.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",e[e.ChildActivationStart=11]="ChildActivationStart",e[e.ChildActivationEnd=12]="ChildActivationEnd",e[e.ActivationStart=13]="ActivationStart",e[e.ActivationEnd=14]="ActivationEnd",e[e.Scroll=15]="Scroll",e[e.NavigationSkipped=16]="NavigationSkipped",e}(ke||{});class Pr{constructor(t,n){this.id=t,this.url=n}}class bd extends Pr{constructor(t,n,r="imperative",o=null){super(t,n),this.type=ke.NavigationStart,this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class ao extends Pr{constructor(t,n,r){super(t,n),this.urlAfterRedirects=r,this.type=ke.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var Vn=function(e){return e[e.Redirect=0]="Redirect",e[e.SupersededByNewNavigation=1]="SupersededByNewNavigation",e[e.NoDataFromResolver=2]="NoDataFromResolver",e[e.GuardRejected=3]="GuardRejected",e}(Vn||{}),Ed=function(e){return e[e.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",e[e.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",e}(Ed||{});class yi extends Pr{constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o,this.type=ke.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Os extends Pr{constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o,this.type=ke.NavigationSkipped}}class cm extends Pr{constructor(t,n,r,o){super(t,n),this.error=r,this.target=o,this.type=ke.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class kI extends Pr{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=ke.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class oB extends Pr{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=ke.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class iB extends Pr{constructor(t,n,r,o,i){super(t,n),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i,this.type=ke.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class sB extends Pr{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=ke.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class aB extends Pr{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=ke.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class cB{constructor(t){this.route=t,this.type=ke.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class lB{constructor(t){this.route=t,this.type=ke.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class uB{constructor(t){this.snapshot=t,this.type=ke.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class dB{constructor(t){this.snapshot=t,this.type=ke.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class pB{constructor(t){this.snapshot=t,this.type=ke.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class hB{constructor(t){this.snapshot=t,this.type=ke.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class PI{constructor(t,n,r){this.routerEvent=t,this.position=n,this.anchor=r,this.type=ke.Scroll}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class lm{}class wd{constructor(t,n){this.url=t,this.navigationBehaviorOptions=n}}function dr(e){return e.outlet||Te}function Sc(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let t=e.parent;t;t=t.parent){const n=t.routeConfig;if(n?._loadedInjector)return n._loadedInjector;if(n?._injector)return n._injector}return null}class bB{get injector(){return Sc(this.route?.snapshot)??this.rootInjector}set injector(t){}constructor(t){this.rootInjector=t,this.outlet=null,this.route=null,this.children=new Nc(this.rootInjector),this.attachRef=null}}let Nc=(()=>{class e{constructor(n){this.rootInjector=n,this.contexts=new Map}onChildOutletCreated(n,r){const o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){const r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){const n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new bB(this.rootInjector),this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}static#e=this.\u0275fac=function(r){return new(r||e)(ue(In))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();class LI{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const n=this.pathFromRoot(t);return n.length>1?n[n.length-2]:null}children(t){const n=um(t,this._root);return n?n.children.map(r=>r.value):[]}firstChild(t){const n=um(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){const n=dm(t,this._root);return n.length<2?[]:n[n.length-2].children.map(o=>o.value).filter(o=>o!==t)}pathFromRoot(t){return dm(t,this._root).map(n=>n.value)}}function um(e,t){if(e===t.value)return t;for(const n of t.children){const r=um(e,n);if(r)return r}return null}function dm(e,t){if(e===t.value)return[t];for(const n of t.children){const r=dm(e,n);if(r.length)return r.unshift(t),r}return[]}class pr{constructor(t,n){this.value=t,this.children=n}toString(){return`TreeNode(${this.value})`}}function ks(e){const t={};return e&&e.children.forEach(n=>t[n.value.outlet]=n),t}class $I extends LI{constructor(t,n){super(t),this.snapshot=n,pm(this,t)}toString(){return this.snapshot.toString()}}function FI(e){const t=function EB(e){const i=new Cd([],{},{},"",{},Te,e,null,{});return new BI("",new pr(i,[]))}(e),n=new re([new _c("",{})]),r=new re({}),o=new re({}),i=new re({}),s=new re(""),u=new Ps(n,r,i,s,o,Te,e,t.root);return u.snapshot=t.root,new $I(new pr(u,[]),t)}class Ps{constructor(t,n,r,o,i,s,u,d){this.urlSubject=t,this.paramsSubject=n,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=u,this._futureSnapshot=d,this.title=this.dataSubject?.pipe($e(p=>p[wc]))??ge(void 0),this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe($e(t=>Rs(t))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe($e(t=>Rs(t))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function _d(e,t,n="emptyOnly"){let r;const{routeConfig:o}=e;return r=null===t||"always"!==n&&""!==o?.path&&(t.component||t.routeConfig?.loadComponent)?{params:{...e.params},data:{...e.data},resolve:{...e.data,...e._resolvedData??{}}}:{params:{...t.params,...e.params},data:{...t.data,...e.data},resolve:{...e.data,...t.data,...o?.data,...e._resolvedData}},o&&HI(o)&&(r.resolve[wc]=o.title),r}class Cd{get title(){return this.data?.[wc]}constructor(t,n,r,o,i,s,u,d,p){this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=u,this.routeConfig=d,this._resolve=p}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Rs(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Rs(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class BI extends LI{constructor(t,n){super(n),this.url=t,pm(this,n)}toString(){return UI(this._root)}}function pm(e,t){t.value._routerState=e,t.children.forEach(n=>pm(e,n))}function UI(e){const t=e.children.length>0?` { ${e.children.map(UI).join(", ")} } `:"";return`${e.value}${t}`}function hm(e){if(e.snapshot){const t=e.snapshot,n=e._futureSnapshot;e.snapshot=n,kr(t.queryParams,n.queryParams)||e.queryParamsSubject.next(n.queryParams),t.fragment!==n.fragment&&e.fragmentSubject.next(n.fragment),kr(t.params,n.params)||e.paramsSubject.next(n.params),function x4(e,t){if(e.length!==t.length)return!1;for(let n=0;nkr(n.parameters,t[r].parameters))}(e.url,t.url);return n&&!(!e.parent!=!t.parent)&&(!e.parent||fm(e.parent,t.parent))}function HI(e){return"string"==typeof e.title||null===e.title}let gm=(()=>{class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=Te,this.activateEvents=new pn,this.deactivateEvents=new pn,this.attachEvents=new pn,this.detachEvents=new pn,this.parentContexts=A(Nc),this.location=A(ir),this.changeDetector=A(Lu),this.inputBinder=A(Dd,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){const{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new $(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new $(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new $(4012,!1);this.location.detach();const n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){const n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new $(4013,!1);this._activatedRoute=n;const o=this.location,s=n.snapshot.component,u=this.parentContexts.getOrCreateContext(this.name).children,d=new mm(n,u,o.injector);this.activated=o.createComponent(s,{index:o.length,injector:d,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275dir=cn({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Go]})}return e})();class mm{__ngOutletInjector(t){return new mm(this.route,this.childContexts,t)}constructor(t,n,r){this.route=t,this.childContexts=n,this.parent=r}get(t,n){return t===Ps?this.route:t===Nc?this.childContexts:this.parent.get(t,n)}}const Dd=new Z("");let VI=(()=>{class e{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(n){this.unsubscribeFromRouteData(n),this.subscribeToRouteData(n)}unsubscribeFromRouteData(n){this.outletDataSubscriptions.get(n)?.unsubscribe(),this.outletDataSubscriptions.delete(n)}subscribeToRouteData(n){const{activatedRoute:r}=n,o=Xg([r.queryParams,r.params,r.data]).pipe(Or(([i,s,u],d)=>(u={...i,...s,...u},0===d?ge(u):Promise.resolve(u)))).subscribe(i=>{if(!n.isActivated||!n.activatedComponentRef||n.activatedRoute!==r||null===r.component)return void this.unsubscribeFromRouteData(n);const s=function Y2(e){const t=Me(e);if(!t)return null;const n=new Wa(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}(r.component);if(s)for(const{templateName:u}of s.inputs)n.activatedComponentRef.setInput(u,i[u]);else this.unsubscribeFromRouteData(n)});this.outletDataSubscriptions.set(n,o)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();function Mc(e,t,n){if(n&&e.shouldReuseRoute(t.value,n.value.snapshot)){const r=n.value;r._futureSnapshot=t.value;const o=function _B(e,t,n){return t.children.map(r=>{for(const o of n.children)if(e.shouldReuseRoute(r.value,o.value.snapshot))return Mc(e,r,o);return Mc(e,r)})}(e,t,n);return new pr(r,o)}{if(e.shouldAttach(t.value)){const i=e.retrieve(t.value);if(null!==i){const s=i.route;return s.value._futureSnapshot=t.value,s.children=t.children.map(u=>Mc(e,u)),s}}const r=function CB(e){return new Ps(new re(e.url),new re(e.params),new re(e.queryParams),new re(e.fragment),new re(e.data),e.outlet,e.component,e)}(t.value),o=t.children.map(i=>Mc(e,i));return new pr(r,o)}}class vm{constructor(t,n){this.redirectTo=t,this.navigationBehaviorOptions=n}}const jI="ngNavigationCancelingError";function Id(e,t){const{redirectTo:n,navigationBehaviorOptions:r}=vi(t)?{redirectTo:t,navigationBehaviorOptions:void 0}:t,o=zI(!1,Vn.Redirect);return o.url=n,o.navigationBehaviorOptions=r,o}function zI(e,t){const n=new Error(`NavigationCancelingError: ${e||""}`);return n[jI]=!0,n.cancellationCode=t,n}function qI(e){return!!e&&e[jI]}class TB{constructor(t,n,r,o,i){this.routeReuseStrategy=t,this.futureState=n,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(t){const n=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(n,r,t),hm(this.futureState.root),this.activateChildRoutes(n,r,t)}deactivateChildRoutes(t,n,r){const o=ks(n);t.children.forEach(i=>{const s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(t,n,r){const o=t.value,i=n?n.value:null;if(o===i)if(o.component){const s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(t,n,s.children)}else this.deactivateChildRoutes(t,n,r);else i&&this.deactivateRouteAndItsChildren(n,r)}deactivateRouteAndItsChildren(t,n){t.value.component&&this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,n):this.deactivateRouteAndOutlet(t,n)}detachAndStoreRouteSubtree(t,n){const r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=ks(t);for(const s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){const s=r.outlet.detach(),u=r.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:s,route:t,contexts:u})}}deactivateRouteAndOutlet(t,n){const r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=ks(t);for(const s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(t,n,r){const o=ks(n);t.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new hB(i.value.snapshot))}),t.children.length&&this.forwardEvent(new dB(t.value.snapshot))}activateRoutes(t,n,r){const o=t.value,i=n?n.value:null;if(hm(o),o===i)if(o.component){const s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(t,n,s.children)}else this.activateChildRoutes(t,n,r);else if(o.component){const s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const u=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(u.contexts),s.attachRef=u.componentRef,s.route=u.route.value,s.outlet&&s.outlet.attach(u.componentRef,u.route.value),hm(u.route.value),this.activateChildRoutes(t,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(t,null,s.children)}else this.activateChildRoutes(t,null,r)}}class GI{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Td{constructor(t,n){this.component=t,this.route=n}}function SB(e,t,n){const r=e._root;return Ac(r,t?t._root:null,n,[r.value])}function Ls(e,t){const n=Symbol(),r=t.get(e,n);return r===n?"function"!=typeof e||function KT(e){return null!==Wc(e)}(e)?t.get(e):e:r}function Ac(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){const i=ks(t);return e.children.forEach(s=>{(function MB(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){const i=e.value,s=t?t.value:null,u=n?n.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){const d=function AB(e,t,n){if("function"==typeof n)return n(e,t);switch(n){case"pathParamsChange":return!mi(e.url,t.url);case"pathParamsOrQueryParamsChange":return!mi(e.url,t.url)||!kr(e.queryParams,t.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!fm(e,t)||!kr(e.queryParams,t.queryParams);default:return!fm(e,t)}}(s,i,i.routeConfig.runGuardsAndResolvers);d?o.canActivateChecks.push(new GI(r)):(i.data=s.data,i._resolvedData=s._resolvedData),Ac(e,t,i.component?u?u.children:null:n,r,o),d&&u&&u.outlet&&u.outlet.isActivated&&o.canDeactivateChecks.push(new Td(u.outlet.component,s))}else s&&Rc(t,u,o),o.canActivateChecks.push(new GI(r)),Ac(e,null,i.component?u?u.children:null:n,r,o)})(s,i[s.value.outlet],n,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,u])=>Rc(u,n.getContext(s),o)),o}function Rc(e,t,n){const r=ks(e),o=e.value;Object.entries(r).forEach(([i,s])=>{Rc(s,o.component?t?t.children.getContext(i):null:t,n)}),n.canDeactivateChecks.push(new Td(o.component&&t&&t.outlet&&t.outlet.isActivated?t.outlet.component:null,o))}function xc(e){return"function"==typeof e}function WI(e){return e instanceof ld||"EmptyError"===e?.name}const Sd=Symbol("INITIAL_VALUE");function $s(){return Or(e=>Xg(e.map(t=>t.pipe(Ms(1),function C4(...e){const t=cd(e);return Re((n,r)=>{(t?Jg(e,n,t):Jg(e,n)).subscribe(r)})}(Sd)))).pipe($e(t=>{for(const n of t)if(!0!==n){if(n===Sd)return Sd;if(!1===n||$B(n))return n}return!0}),ko(t=>t!==Sd),Ms(1)))}function $B(e){return vi(e)||e instanceof vm}function KI(e){return function Uo(...e){return E(e)}(yn(t=>{if("boolean"!=typeof t)throw Id(0,t)}),$e(t=>!0===t))}class ym{constructor(t){this.segmentGroup=t||null}}class Nd extends Error{constructor(t){super(),this.urlTree=t}}function Fs(e){return ud(new ym(e))}class ZB{constructor(t,n){this.urlSerializer=t,this.urlTree=n}lineralizeSegments(t,n){let r=[],o=n.root;for(;;){if(r=r.concat(o.segments),0===o.numberOfChildren)return ge(r);if(o.numberOfChildren>1||!o.children[Te])return ud(new $(4e3,!1));o=o.children[Te]}}applyRedirectCommands(t,n,r,o,i){if("string"!=typeof n){const u=n,{queryParams:d,fragment:p,routeConfig:h,url:f,outlet:m,params:v,data:b,title:_}=o,D=wr(i,()=>u({params:v,data:b,queryParams:d,fragment:p,routeConfig:h,url:f,outlet:m,title:_}));if(D instanceof gi)throw new Nd(D);n=D}const s=this.applyRedirectCreateUrlTree(n,this.urlSerializer.parse(n),t,r);if("/"===n[0])throw new Nd(s);return s}applyRedirectCreateUrlTree(t,n,r,o){const i=this.createSegmentGroup(t,n.root,r,o);return new gi(i,this.createQueryParams(n.queryParams,this.urlTree.queryParams),n.fragment)}createQueryParams(t,n){const r={};return Object.entries(t).forEach(([o,i])=>{if("string"==typeof i&&":"===i[0]){const u=i.substring(1);r[o]=n[u]}else r[o]=i}),r}createSegmentGroup(t,n,r,o){const i=this.createSegments(t,n.segments,r,o);let s={};return Object.entries(n.children).forEach(([u,d])=>{s[u]=this.createSegmentGroup(t,d,r,o)}),new tt(i,s)}createSegments(t,n,r,o){return n.map(i=>":"===i.path[0]?this.findPosParam(t,i,o):this.findOrReturn(i,r))}findPosParam(t,n,r){const o=r[n.path.substring(1)];if(!o)throw new $(4001,!1);return o}findOrReturn(t,n){let r=0;for(const o of n){if(o.path===t.path)return n.splice(r),o;r++}return t}}const bm={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function QB(e,t,n,r,o){const i=Em(e,t,n);return i.matched?(r=function fB(e,t){return e.providers&&!e._injector&&(e._injector=uu(e.providers,t,`Route: ${e.path}`)),e._injector??t}(t,r),function WB(e,t,n,r){const o=t.canMatch;return o&&0!==o.length?ge(o.map(s=>{const u=Ls(s,e);return Po(function LB(e){return e&&xc(e.canMatch)}(u)?u.canMatch(t,n):wr(e,()=>u(t,n)))})).pipe($s(),KI()):ge(!0)}(r,t,n).pipe($e(s=>!0===s?i:{...bm}))):ge(i)}function Em(e,t,n){if("**"===t.path)return function XB(e){return{matched:!0,parameters:e.length>0?mI(e).parameters:{},consumedSegments:e,remainingSegments:[],positionalParamSegments:{}}}(n);if(""===t.path)return"full"===t.pathMatch&&(e.hasChildren()||n.length>0)?{...bm}:{matched:!0,consumedSegments:[],remainingSegments:n,parameters:{},positionalParamSegments:{}};const o=(t.matcher||R4)(n,e,t);if(!o)return{...bm};const i={};Object.entries(o.posParams??{}).forEach(([u,d])=>{i[u]=d.path});const s=o.consumed.length>0?{...i,...o.consumed[o.consumed.length-1].parameters}:i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:n.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function YI(e,t,n,r){return n.length>0&&function tU(e,t,n){return n.some(r=>Md(e,t,r)&&dr(r)!==Te)}(e,n,r)?{segmentGroup:new tt(t,eU(r,new tt(n,e.children))),slicedSegments:[]}:0===n.length&&function nU(e,t,n){return n.some(r=>Md(e,t,r))}(e,n,r)?{segmentGroup:new tt(e.segments,JB(e,n,r,e.children)),slicedSegments:n}:{segmentGroup:new tt(e.segments,e.children),slicedSegments:n}}function JB(e,t,n,r){const o={};for(const i of n)if(Md(e,t,i)&&!r[dr(i)]){const s=new tt([],{});o[dr(i)]=s}return{...r,...o}}function eU(e,t){const n={};n[Te]=t;for(const r of e)if(""===r.path&&dr(r)!==Te){const o=new tt([],{});n[dr(r)]=o}return n}function Md(e,t,n){return(!(e.hasChildren()||t.length>0)||"full"!==n.pathMatch)&&""===n.path}class iU{}class cU{constructor(t,n,r,o,i,s,u){this.injector=t,this.configLoader=n,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=u,this.applyRedirects=new ZB(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(t){return new $(4002,`'${t.segmentGroup}'`)}recognize(){const t=YI(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(t).pipe($e(({children:n,rootSnapshot:r})=>{const o=new pr(r,n),i=new BI("",o),s=function Q4(e,t,n=null,r=null){return NI(SI(e),t,n,r)}(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),{state:i,tree:s}}))}match(t){const n=new Cd([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Object.freeze({}),Te,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,t,Te,n).pipe($e(r=>({children:r,rootSnapshot:n})),As(r=>{if(r instanceof Nd)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof ym?this.noMatchError(r):r}))}processSegmentGroup(t,n,r,o,i){return 0===r.segments.length&&r.hasChildren()?this.processChildren(t,n,r,i):this.processSegment(t,n,r,r.segments,o,!0,i).pipe($e(s=>s instanceof pr?[s]:[]))}processChildren(t,n,r,o){const i=[];for(const s of Object.keys(r.children))"primary"===s?i.unshift(s):i.push(s);return Qt(i).pipe(Ec(s=>{const u=r.children[s],d=function yB(e,t){const n=e.filter(r=>dr(r)===t);return n.push(...e.filter(r=>dr(r)!==t)),n}(n,s);return this.processSegmentGroup(t,d,u,s,o)}),function T4(e,t){return Re(function I4(e,t,n,r,o){return(i,s)=>{let u=n,d=t,p=0;i.subscribe(dt(s,h=>{const f=p++;d=u?e(d,h,f):(u=!0,h),r&&s.next(d)},o&&(()=>{u&&s.next(d),s.complete()})))}}(e,t,arguments.length>=2,!0))}((s,u)=>(s.push(...u),s)),dd(null),function S4(e,t){const n=arguments.length>=2;return r=>r.pipe(e?ko((o,i)=>e(o,i,r)):ho,tm(1),n?dd(t):fI(()=>new ld))}(),rn(s=>{if(null===s)return Fs(r);const u=ZI(s);return function lU(e){e.sort((t,n)=>t.value.outlet===Te?-1:n.value.outlet===Te?1:t.value.outlet.localeCompare(n.value.outlet))}(u),ge(u)}))}processSegment(t,n,r,o,i,s,u){return Qt(n).pipe(Ec(d=>this.processSegmentAgainstRoute(d._injector??t,n,d,r,o,i,s,u).pipe(As(p=>{if(p instanceof ym)return ge(null);throw p}))),fi(d=>!!d),As(d=>{if(WI(d))return function oU(e,t,n){return 0===t.length&&!e.children[n]}(r,o,i)?ge(new iU):Fs(r);throw d}))}processSegmentAgainstRoute(t,n,r,o,i,s,u,d){return function rU(e,t,n,r){return!!(dr(e)===r||r!==Te&&Md(t,n,e))&&Em(t,e,n).matched}(r,o,i,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(t,o,r,i,s,d):this.allowRedirects&&u?this.expandSegmentAgainstRouteUsingRedirect(t,o,n,r,i,s,d):Fs(o):Fs(o)}expandSegmentAgainstRouteUsingRedirect(t,n,r,o,i,s,u){const{matched:d,parameters:p,consumedSegments:h,positionalParamSegments:f,remainingSegments:m}=Em(n,o,i);if(!d)return Fs(n);"string"==typeof o.redirectTo&&"/"===o.redirectTo[0]&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const v=new Cd(i,p,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,QI(o),dr(o),o.component??o._loadedComponent??null,o,XI(o)),b=_d(v,u,this.paramsInheritanceStrategy);v.params=Object.freeze(b.params),v.data=Object.freeze(b.data);const _=this.applyRedirects.applyRedirectCommands(h,o.redirectTo,f,v,t);return this.applyRedirects.lineralizeSegments(o,_).pipe(rn(D=>this.processSegment(t,r,n,D.concat(m),s,!1,u)))}matchSegmentAgainstRoute(t,n,r,o,i,s){const u=QB(n,r,o,t);return"**"===r.path&&(n.children={}),u.pipe(Or(d=>d.matched?this.getChildConfig(t=r._injector??t,r,o).pipe(Or(({routes:p})=>{const h=r._loadedInjector??t,{parameters:f,consumedSegments:m,remainingSegments:v}=d,b=new Cd(m,f,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,QI(r),dr(r),r.component??r._loadedComponent??null,r,XI(r)),_=_d(b,s,this.paramsInheritanceStrategy);b.params=Object.freeze(_.params),b.data=Object.freeze(_.data);const{segmentGroup:D,slicedSegments:N}=YI(n,m,v,p);if(0===N.length&&D.hasChildren())return this.processChildren(h,p,D,b).pipe($e(te=>new pr(b,te)));if(0===p.length&&0===N.length)return ge(new pr(b,[]));const T=dr(r)===i;return this.processSegment(h,p,D,N,T?Te:i,!0,b).pipe($e(te=>new pr(b,te instanceof pr?[te]:[])))})):Fs(n)))}getChildConfig(t,n,r){return n.children?ge({routes:n.children,injector:t}):n.loadChildren?void 0!==n._loadedRoutes?ge({routes:n._loadedRoutes,injector:n._loadedInjector}):function GB(e,t,n,r){const o=t.canLoad;return void 0===o||0===o.length?ge(!0):ge(o.map(s=>{const u=Ls(s,e);return Po(function xB(e){return e&&xc(e.canLoad)}(u)?u.canLoad(t,n):wr(e,()=>u(t,n)))})).pipe($s(),KI())}(t,n,r).pipe(rn(o=>o?this.configLoader.loadChildren(t,n).pipe(yn(i=>{n._loadedRoutes=i.routes,n._loadedInjector=i.injector})):function YB(){return ud(zI(!1,Vn.GuardRejected))}())):ge({routes:[],injector:t})}}function uU(e){const t=e.value.routeConfig;return t&&""===t.path}function ZI(e){const t=[],n=new Set;for(const r of e){if(!uU(r)){t.push(r);continue}const o=t.find(i=>r.value.routeConfig===i.value.routeConfig);void 0!==o?(o.children.push(...r.children),n.add(o)):t.push(r)}for(const r of n){const o=ZI(r.children);t.push(new pr(r.value,o))}return t.filter(r=>!n.has(r))}function QI(e){return e.data||{}}function XI(e){return e.resolve||{}}function JI(e){const t=e.children.map(n=>JI(n)).flat();return[e,...t]}function wm(e){return Or(t=>{const n=e(t);return n?Qt(n).pipe($e(()=>t)):ge(t)})}let eT=(()=>{class e{buildTitle(n){let r,o=n.root;for(;void 0!==o;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===Te);return r}getResolvedTitleForRoute(n){return n.data[wc]}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(mU),providedIn:"root"})}return e})(),mU=(()=>{class e extends eT{constructor(n){super(),this.title=n}updateTitle(n){const r=this.buildTitle(n);void 0!==r&&this.title.setTitle(r)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(_3))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const Bs=new Z("",{providedIn:"root",factory:()=>({})});let tT=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["ng-component"]],standalone:!0,features:[RC],decls:1,vars:0,template:function(r,o){1&r&&y(0,"router-outlet")},dependencies:[gm],encapsulation:2})}return e})();function _m(e){const t=e.children&&e.children.map(_m),n=t?{...e,children:t}:{...e};return!n.component&&!n.loadComponent&&(t||n.loadChildren)&&n.outlet&&n.outlet!==Te&&(n.component=tT),n}const Us=new Z("");let Cm=(()=>{class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=A(dD)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return ge(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);const r=Po(n.loadComponent()).pipe($e(nT),yn(i=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=i}),nm(()=>{this.componentLoaders.delete(n)})),o=new hI(r,()=>new G).pipe(em());return this.componentLoaders.set(n,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return ge({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);const i=function vU(e,t,n,r){return Po(e.loadChildren()).pipe($e(nT),rn(o=>o instanceof bw||Array.isArray(o)?ge(o):Qt(t.compileModuleAsync(o))),$e(o=>{r&&r(e);let i,s,u=!1;return Array.isArray(o)?(s=o,!0):(i=o.create(n).injector,s=i.get(Us,[],{optional:!0,self:!0}).flat()),{routes:s.map(_m),injector:i}}))}(r,this.compiler,n,this.onLoadEndListener).pipe(nm(()=>{this.childrenLoaders.delete(r)})),s=new hI(i,()=>new G).pipe(em());return this.childrenLoaders.set(r,s),s}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function nT(e){return function yU(e){return e&&"object"==typeof e&&"default"in e}(e)?e.default:e}let Dm=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(bU),providedIn:"root"})}return e})(),bU=(()=>{class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const rT=new Z(""),oT=new Z("");function EU(e,t,n){const r=e.get(oT),o=e.get(Un);return e.get(Je).runOutsideAngular(()=>{if(!o.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(p=>setTimeout(p));let i;const s=new Promise(p=>{i=p}),u=o.startViewTransition(()=>(i(),function wU(e){return new Promise(t=>{PE({read:()=>setTimeout(t)},{injector:e})})}(e))),{onViewTransitionCreated:d}=r;return d&&wr(e,()=>d({transition:u,from:t,to:n})),s})}const iT=new Z("");let Ad=(()=>{class e{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new G,this.transitionAbortSubject=new G,this.configLoader=A(Cm),this.environmentInjector=A(In),this.urlSerializer=A(xs),this.rootContexts=A(Nc),this.location=A(fc),this.inputBindingEnabled=null!==A(Dd,{optional:!0}),this.titleStrategy=A(eT),this.options=A(Bs,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=A(Dm),this.createViewTransition=A(rT,{optional:!0}),this.navigationErrorHandler=A(iT,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>ge(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=o=>this.events.next(new lB(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new cB(o))}complete(){this.transitions?.complete()}handleNavigationRequest(n){const r=++this.navigationId;this.transitions?.next({...this.transitions.value,...n,id:r})}setupNavigations(n,r,o){return this.transitions=new re({id:0,currentUrlTree:r,currentRawUrl:r,extractedUrl:this.urlHandlingStrategy.extract(r),urlAfterRedirects:this.urlHandlingStrategy.extract(r),rawUrl:r,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:Tc,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(ko(i=>0!==i.id),$e(i=>({...i,extractedUrl:this.urlHandlingStrategy.extract(i.rawUrl)})),Or(i=>{let s=!1,u=!1;return ge(i).pipe(Or(d=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",Vn.SupersededByNewNavigation),xr;this.currentTransition=i,this.currentNavigation={id:d.id,initialUrl:d.rawUrl,extractedUrl:d.extractedUrl,targetBrowserUrl:"string"==typeof d.extras.browserUrl?this.urlSerializer.parse(d.extras.browserUrl):d.extras.browserUrl,trigger:d.source,extras:d.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const p=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!p&&"reload"!==(d.extras.onSameUrlNavigation??n.onSameUrlNavigation)){const f="";return this.events.next(new Os(d.id,this.urlSerializer.serialize(d.rawUrl),f,Ed.IgnoredSameUrlNavigation)),d.resolve(!1),xr}if(this.urlHandlingStrategy.shouldProcessUrl(d.rawUrl))return ge(d).pipe(Or(f=>{const m=this.transitions?.getValue();return this.events.next(new bd(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),m!==this.transitions?.getValue()?xr:Promise.resolve(f)}),function dU(e,t,n,r,o,i){return rn(s=>function sU(e,t,n,r,o,i,s="emptyOnly"){return new cU(e,t,n,r,o,s,i).recognize()}(e,t,n,r,s.extractedUrl,o,i).pipe($e(({state:u,tree:d})=>({...s,targetSnapshot:u,urlAfterRedirects:d}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),yn(f=>{i.targetSnapshot=f.targetSnapshot,i.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:f.urlAfterRedirects};const m=new kI(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(m)}));if(p&&this.urlHandlingStrategy.shouldProcessUrl(d.currentRawUrl)){const{id:f,extractedUrl:m,source:v,restoredState:b,extras:_}=d,D=new bd(f,this.urlSerializer.serialize(m),v,b);this.events.next(D);const N=FI(this.rootComponentType).snapshot;return this.currentTransition=i={...d,targetSnapshot:N,urlAfterRedirects:m,extras:{..._,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=m,ge(i)}{const f="";return this.events.next(new Os(d.id,this.urlSerializer.serialize(d.extractedUrl),f,Ed.IgnoredByUrlHandlingStrategy)),d.resolve(!1),xr}}),yn(d=>{const p=new oB(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(p)}),$e(d=>(this.currentTransition=i={...d,guards:SB(d.targetSnapshot,d.currentSnapshot,this.rootContexts)},i)),function FB(e,t){return rn(n=>{const{targetSnapshot:r,currentSnapshot:o,guards:{canActivateChecks:i,canDeactivateChecks:s}}=n;return 0===s.length&&0===i.length?ge({...n,guardsResult:!0}):function BB(e,t,n,r){return Qt(e).pipe(rn(o=>function qB(e,t,n,r,o){const i=t&&t.routeConfig?t.routeConfig.canDeactivate:null;return i&&0!==i.length?ge(i.map(u=>{const d=Sc(t)??o,p=Ls(u,d);return Po(function PB(e){return e&&xc(e.canDeactivate)}(p)?p.canDeactivate(e,t,n,r):wr(d,()=>p(e,t,n,r))).pipe(fi())})).pipe($s()):ge(!0)}(o.component,o.route,n,t,r)),fi(o=>!0!==o,!0))}(s,r,o,e).pipe(rn(u=>u&&function RB(e){return"boolean"==typeof e}(u)?function UB(e,t,n,r){return Qt(t).pipe(Ec(o=>Jg(function VB(e,t){return null!==e&&t&&t(new uB(e)),ge(!0)}(o.route.parent,r),function HB(e,t){return null!==e&&t&&t(new pB(e)),ge(!0)}(o.route,r),function zB(e,t,n){const r=t[t.length-1],i=t.slice(0,t.length-1).reverse().map(s=>function NB(e){const t=e.routeConfig?e.routeConfig.canActivateChild:null;return t&&0!==t.length?{node:e,guards:t}:null}(s)).filter(s=>null!==s).map(s=>pI(()=>ge(s.guards.map(d=>{const p=Sc(s.node)??n,h=Ls(d,p);return Po(function kB(e){return e&&xc(e.canActivateChild)}(h)?h.canActivateChild(r,e):wr(p,()=>h(r,e))).pipe(fi())})).pipe($s())));return ge(i).pipe($s())}(e,o.path,n),function jB(e,t,n){const r=t.routeConfig?t.routeConfig.canActivate:null;if(!r||0===r.length)return ge(!0);const o=r.map(i=>pI(()=>{const s=Sc(t)??n,u=Ls(i,s);return Po(function OB(e){return e&&xc(e.canActivate)}(u)?u.canActivate(t,e):wr(s,()=>u(t,e))).pipe(fi())}));return ge(o).pipe($s())}(e,o.route,n))),fi(o=>!0!==o,!0))}(r,i,e,t):ge(u)),$e(u=>({...n,guardsResult:u})))})}(this.environmentInjector,d=>this.events.next(d)),yn(d=>{if(i.guardsResult=d.guardsResult,d.guardsResult&&"boolean"!=typeof d.guardsResult)throw Id(0,d.guardsResult);const p=new iB(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot,!!d.guardsResult);this.events.next(p)}),ko(d=>!!d.guardsResult||(this.cancelNavigationTransition(d,"",Vn.GuardRejected),!1)),wm(d=>{if(d.guards.canActivateChecks.length)return ge(d).pipe(yn(p=>{const h=new sB(p.id,this.urlSerializer.serialize(p.extractedUrl),this.urlSerializer.serialize(p.urlAfterRedirects),p.targetSnapshot);this.events.next(h)}),Or(p=>{let h=!1;return ge(p).pipe(function pU(e,t){return rn(n=>{const{targetSnapshot:r,guards:{canActivateChecks:o}}=n;if(!o.length)return ge(n);const i=new Set(o.map(d=>d.route)),s=new Set;for(const d of i)if(!s.has(d))for(const p of JI(d))s.add(p);let u=0;return Qt(s).pipe(Ec(d=>i.has(d)?function hU(e,t,n,r){const o=e.routeConfig,i=e._resolve;return void 0!==o?.title&&!HI(o)&&(i[wc]=o.title),function fU(e,t,n,r){const o=rm(e);if(0===o.length)return ge({});const i={};return Qt(o).pipe(rn(s=>function gU(e,t,n,r){const o=Sc(t)??r,i=Ls(e,o);return Po(i.resolve?i.resolve(t,n):wr(o,()=>i(t,n)))}(e[s],t,n,r).pipe(fi(),yn(u=>{if(u instanceof vm)throw Id(new hd,u);i[s]=u}))),tm(1),function N4(e){return $e(()=>e)}(i),As(s=>WI(s)?xr:ud(s)))}(i,e,t,r).pipe($e(s=>(e._resolvedData=s,e.data=_d(e,e.parent,n).resolve,null)))}(d,r,e,t):(d.data=_d(d,d.parent,e).resolve,ge(void 0))),yn(()=>u++),tm(1),rn(d=>u===s.size?ge(n):xr))})}(this.paramsInheritanceStrategy,this.environmentInjector),yn({next:()=>h=!0,complete:()=>{h||this.cancelNavigationTransition(p,"",Vn.NoDataFromResolver)}}))}),yn(p=>{const h=new aB(p.id,this.urlSerializer.serialize(p.extractedUrl),this.urlSerializer.serialize(p.urlAfterRedirects),p.targetSnapshot);this.events.next(h)}))}),wm(d=>{const p=h=>{const f=[];h.routeConfig?.loadComponent&&!h.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(h.routeConfig).pipe(yn(m=>{h.component=m}),$e(()=>{})));for(const m of h.children)f.push(...p(m));return f};return Xg(p(d.targetSnapshot.root)).pipe(dd(null),Ms(1))}),wm(()=>this.afterPreactivation()),Or(()=>{const{currentSnapshot:d,targetSnapshot:p}=i,h=this.createViewTransition?.(this.environmentInjector,d.root,p.root);return h?Qt(h).pipe($e(()=>i)):ge(i)}),$e(d=>{const p=function wB(e,t,n){const r=Mc(e,t._root,n?n._root:void 0);return new $I(r,t)}(n.routeReuseStrategy,d.targetSnapshot,d.currentRouterState);return this.currentTransition=i={...d,targetRouterState:p},this.currentNavigation.targetRouterState=p,i}),yn(()=>{this.events.next(new lm)}),((e,t,n,r)=>$e(o=>(new TB(t,o.targetRouterState,o.currentRouterState,n,r).activate(e),o)))(this.rootContexts,n.routeReuseStrategy,d=>this.events.next(d),this.inputBindingEnabled),Ms(1),yn({next:d=>{s=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new ao(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects))),this.titleStrategy?.updateTitle(d.targetRouterState.snapshot),d.resolve(!0)},complete:()=>{s=!0}}),function M4(e){return Re((t,n)=>{io(e).subscribe(dt(n,()=>n.complete(),wn)),!n.closed&&t.subscribe(n)})}(this.transitionAbortSubject.pipe(yn(d=>{throw d}))),nm(()=>{!s&&!u&&this.cancelNavigationTransition(i,"",Vn.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation=null,this.currentTransition=null)}),As(d=>{if(u=!0,qI(d))this.events.next(new yi(i.id,this.urlSerializer.serialize(i.extractedUrl),d.message,d.cancellationCode)),function DB(e){return qI(e)&&vi(e.url)}(d)?this.events.next(new wd(d.url,d.navigationBehaviorOptions)):i.resolve(!1);else{const p=new cm(i.id,this.urlSerializer.serialize(i.extractedUrl),d,i.targetSnapshot??void 0);try{const h=wr(this.environmentInjector,()=>this.navigationErrorHandler?.(p));if(h instanceof vm){const{message:f,cancellationCode:m}=Id(0,h);this.events.next(new yi(i.id,this.urlSerializer.serialize(i.extractedUrl),f,m)),this.events.next(new wd(h.redirectTo,h.navigationBehaviorOptions))}else{this.events.next(p);const f=n.errorHandler(d);i.resolve(!!f)}}catch(h){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(h)}}return xr}))}))}cancelNavigationTransition(n,r,o){const i=new yi(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(i),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){const n=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=this.currentNavigation?.targetBrowserUrl??this.currentNavigation?.extractedUrl;return n.toString()!==r?.toString()&&!this.currentNavigation?.extras.skipLocationChange}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function _U(e){return e!==Tc}let CU=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(IU),providedIn:"root"})}return e})();class DU{shouldDetach(t){return!1}store(t,n){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,n){return t.routeConfig===n.routeConfig}}let IU=(()=>{class e extends DU{static#e=this.\u0275fac=(()=>{let n;return function(o){return(n||(n=jp(e)))(o||e)}})();static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),sT=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:()=>A(TU),providedIn:"root"})}return e})(),TU=(()=>{class e extends sT{constructor(){super(...arguments),this.location=A(fc),this.urlSerializer=A(xs),this.options=A(Bs,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=A(Dm),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new gi,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=FI(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{"popstate"===r.type&&n(r.url,r.state)})}handleRouterEvent(n,r){if(n instanceof bd)this.stateMemento=this.createStateMemento();else if(n instanceof Os)this.rawUrlTree=r.initialUrl;else if(n instanceof kI){if("eager"===this.urlUpdateStrategy&&!r.extras.skipLocationChange){const o=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl);this.setBrowserUrl(r.targetBrowserUrl??o,r)}}else n instanceof lm?(this.currentUrlTree=r.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl),this.routerState=r.targetRouterState,"deferred"===this.urlUpdateStrategy&&!r.extras.skipLocationChange&&this.setBrowserUrl(r.targetBrowserUrl??this.rawUrlTree,r)):n instanceof yi&&(n.code===Vn.GuardRejected||n.code===Vn.NoDataFromResolver)?this.restoreHistory(r):n instanceof cm?this.restoreHistory(r,!0):n instanceof ao&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,r){const o=n instanceof gi?this.urlSerializer.serialize(n):n;if(this.location.isCurrentPathEqualTo(o)||r.extras.replaceUrl){const s={...r.extras.state,...this.generateNgRouterState(r.id,this.browserPageId)};this.location.replaceState(o,"",s)}else{const i={...r.extras.state,...this.generateNgRouterState(r.id,this.browserPageId+1)};this.location.go(o,"",i)}}restoreHistory(n,r=!1){if("computed"===this.canceledNavigationResolution){const i=this.currentPageId-this.browserPageId;0!==i?this.location.historyGo(i):this.currentUrlTree===n.finalUrl&&0===i&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(r&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r){return"computed"===this.canceledNavigationResolution?{navigationId:n,\u0275routerPageId:r}:{navigationId:n}}static#e=this.\u0275fac=(()=>{let n;return function(o){return(n||(n=jp(e)))(o||e)}})();static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Oc=function(e){return e[e.COMPLETE=0]="COMPLETE",e[e.FAILED=1]="FAILED",e[e.REDIRECTING=2]="REDIRECTING",e}(Oc||{});function aT(e,t){e.events.pipe(ko(n=>n instanceof ao||n instanceof yi||n instanceof cm||n instanceof Os),$e(n=>n instanceof ao||n instanceof Os?Oc.COMPLETE:n instanceof yi&&(n.code===Vn.Redirect||n.code===Vn.SupersededByNewNavigation)?Oc.REDIRECTING:Oc.FAILED),ko(n=>n!==Oc.REDIRECTING),Ms(1)).subscribe(()=>{t()})}function SU(e){throw e}const NU={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},MU={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Lr=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.console=A(eD),this.stateManager=A(sT),this.options=A(Bs,{optional:!0})||{},this.pendingTasks=A(Xo),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=A(Ad),this.urlSerializer=A(xs),this.location=A(fc),this.urlHandlingStrategy=A(Dm),this._events=new G,this.errorHandler=this.options.errorHandler||SU,this.navigated=!1,this.routeReuseStrategy=A(CU),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=A(Us,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!A(Dd,{optional:!0}),this.eventsSubscription=new kt,this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const n=this.navigationTransitions.events.subscribe(r=>{try{const o=this.navigationTransitions.currentTransition,i=this.navigationTransitions.currentNavigation;if(null!==o&&null!==i)if(this.stateManager.handleRouterEvent(r,i),r instanceof yi&&r.code!==Vn.Redirect&&r.code!==Vn.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof ao)this.navigated=!0;else if(r instanceof wd){const s=r.navigationBehaviorOptions,u=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),d={browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||"eager"===this.urlUpdateStrategy||_U(o.source),...s};this.scheduleNavigation(u,Tc,null,d,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function RU(e){return!(e instanceof lm||e instanceof wd)})(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Tc,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",r)},0)})}navigateToSyncWithBrowser(n,r,o){const i={replaceUrl:!0},s=o?.navigationId?o:null;if(o){const d={...o};delete d.navigationId,delete d.\u0275routerPageId,0!==Object.keys(d).length&&(i.state=d)}const u=this.parseUrl(n);this.scheduleNavigation(u,r,s,i)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(_m),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){const{relativeTo:o,queryParams:i,fragment:s,queryParamsHandling:u,preserveFragment:d}=r,p=d?this.currentUrlTree.fragment:s;let f,h=null;switch(u??this.options.defaultQueryParamsHandling){case"merge":h={...this.currentUrlTree.queryParams,...i};break;case"preserve":h=this.currentUrlTree.queryParams;break;default:h=i||null}null!==h&&(h=this.removeEmptyProps(h));try{f=SI(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof n[0]||"/"!==n[0][0])&&(n=[]),f=this.currentUrlTree.root}return NI(f,n,h,p??null)}navigateByUrl(n,r={skipLocationChange:!1}){const o=vi(n)?n:this.parseUrl(n),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,Tc,null,r)}navigate(n,r={skipLocationChange:!1}){return function AU(e){for(let t=0;t(null!=i&&(r[o]=i),r),{})}scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(!1);let u,d,p;s?(u=s.resolve,d=s.reject,p=s.promise):p=new Promise((f,m)=>{u=f,d=m});const h=this.pendingTasks.add();return aT(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(h))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:i,resolve:u,reject:d,promise:p,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),p.catch(f=>Promise.reject(f))}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Ae=(()=>{class e{constructor(n,r,o,i,s,u){this.router=n,this.route=r,this.tabIndexAttribute=o,this.renderer=i,this.el=s,this.locationStrategy=u,this.href=null,this.onChanges=new G,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1,this.routerLinkInput=null;const d=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===d||"area"===d,this.isAnchorElement?this.subscription=n.events.subscribe(p=>{p instanceof ao&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(n){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",n)}ngOnChanges(n){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(n){null==n?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(this.routerLinkInput=vi(n)||Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl("0"))}onClick(n,r,o,i,s){const u=this.urlTree;return!!(null===u||this.isAnchorElement&&(0!==n||r||o||i||s||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(u,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info}),!this.isAnchorElement)}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){const n=this.urlTree;this.href=null!==n&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n)):null;const r=null===this.href?null:function mb(e,t,n){return function uM(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?gb:fb}(t,n)(e)}(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",r)}applyAttributeValue(n,r){const o=this.renderer,i=this.el.nativeElement;null!==r?o.setAttribute(i,n,r):o.removeAttribute(i,n)}get urlTree(){return null===this.routerLinkInput?null:vi(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static#e=this.\u0275fac=function(r){return new(r||e)(fe(Lr),fe(Ps),function ya(e){return function O0(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const r=n.length;let o=0;for(;o{class e{get isActive(){return this._isActive}constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,this.cdr=i,this.link=s,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new pn,this.routerEventsSubscription=n.events.subscribe(u=>{u instanceof ao&&this.update()})}ngAfterContentInit(){ge(this.links.changes,ge(null)).pipe(bc()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const n=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=Qt(n).pipe(bc()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(n){const r=Array.isArray(n)?n:n.split(" ");this.classes=r.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{const n=this.hasActiveLinks();this.classes.forEach(r=>{n?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),n&&void 0!==this.ariaCurrentWhenActive?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){const r=function xU(e){return!!e.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return o=>{const i=o.urlTree;return!!i&&n.isActive(i,r)}}hasActiveLinks(){const n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}static#e=this.\u0275fac=function(r){return new(r||e)(fe(Lr),fe(wo),fe(ou),fe(Lu),fe(Ae,8))};static#t=this.\u0275dir=cn({type:e,selectors:[["","routerLinkActive",""]],contentQueries:function(r,o,i){if(1&r&&function oC(e,t,n,r){QE(e,t,n,r)}(i,Ae,5),2&r){let s;(function iC(e){const t=I(),n=Ne(),r=Op();yl(r+1);const o=gf(n,r);if(e.dirty&&function n0(e){return!(4&~e[ce])}(t)===!(2&~o.metadata.flags)){if(null===o.matches)e.reset([]);else{const i=JE(t,r);e.reset(i,Cy),e.notifyOnChanges()}return!0}return!1})(s=sC())&&(o.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[Go]})}return e})();class lT{}let OU=(()=>{class e{constructor(n,r,o,i,s){this.router=n,this.injector=o,this.preloadingStrategy=i,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(ko(n=>n instanceof ao),Ec(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(n,r){const o=[];for(const i of r){i.providers&&!i._injector&&(i._injector=uu(i.providers,n,`Route: ${i.path}`));const s=i._injector??n,u=i._loadedInjector??s;(i.loadChildren&&!i._loadedRoutes&&void 0===i.canLoad||i.loadComponent&&!i._loadedComponent)&&o.push(this.preloadConfig(s,i)),(i.children||i._loadedRoutes)&&o.push(this.processRoutes(u,i.children??i._loadedRoutes))}return Qt(o).pipe(bc())}preloadConfig(n,r){return this.preloadingStrategy.preload(r,()=>{let o;o=r.loadChildren&&void 0===r.canLoad?this.loader.loadChildren(n,r):ge(null);const i=o.pipe(rn(s=>null===s?ge(void 0):(r._loadedRoutes=s.routes,r._loadedInjector=s.injector,this.processRoutes(s.injector??n,s.routes))));return r.loadComponent&&!r._loadedComponent?Qt([i,this.loader.loadComponent(r)]).pipe(bc()):i})}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Lr),ue(dD),ue(In),ue(lT),ue(Cm))};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const Im=new Z("");let uT=(()=>{class e{constructor(n,r,o,i,s={}){this.urlSerializer=n,this.transitions=r,this.viewportScroller=o,this.zone=i,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration||="disabled",s.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof bd?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=n.navigationTrigger,this.restoredId=n.restoredState?n.restoredState.navigationId:0):n instanceof ao?(this.lastId=n.id,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.urlAfterRedirects).fragment)):n instanceof Os&&n.code===Ed.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof PI&&(n.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(n.position):n.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(n.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(n,r){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new PI(n,"popstate"===this.lastSource?this.store[this.restoredId]:null,r))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){!function Hb(){throw new Error("invalid")}()};static#t=this.\u0275prov=oe({token:e,factory:e.\u0275fac})}return e})();function $r(e,t){return{\u0275kind:e,\u0275providers:t}}function pT(){const e=A(Rt);return t=>{const n=e.get(cr);if(t!==n.components[0])return;const r=e.get(Lr),o=e.get(hT);1===e.get(Tm)&&r.initialNavigation(),e.get(fT,null,xe.Optional)?.setUpPreloading(),e.get(Im,null,xe.Optional)?.init(),r.resetRootComponentType(n.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const hT=new Z("",{factory:()=>new G}),Tm=new Z("",{providedIn:"root",factory:()=>1}),fT=new Z("");function $U(e){return $r(0,[{provide:fT,useExisting:OU},{provide:lT,useExisting:e}])}function BU(e){return $r(9,[{provide:rT,useValue:EU},{provide:oT,useValue:{skipNextTransition:!!e?.skipInitialTransition,...e}}])}const gT=new Z("ROUTER_FORROOT_GUARD"),UU=[fc,{provide:xs,useClass:hd},Lr,Nc,{provide:Ps,useFactory:function dT(e){return e.routerState.root},deps:[Lr]},Cm,[]];let on=(()=>{class e{constructor(n){}static forRoot(n,r){return{ngModule:e,providers:[UU,[],{provide:Us,multi:!0,useValue:n},{provide:gT,useFactory:zU,deps:[[Lr,new Xc,new Jc]]},{provide:Bs,useValue:r||{}},r?.useHash?{provide:pi,useClass:e$}:{provide:pi,useClass:a1},{provide:Im,useFactory:()=>{const e=A(EF),t=A(Je),n=A(Bs),r=A(Ad),o=A(xs);return n.scrollOffset&&e.setOffset(n.scrollOffset),new uT(o,r,e,t,n)}},r?.preloadingStrategy?$U(r.preloadingStrategy).\u0275providers:[],r?.initialNavigation?qU(r):[],r?.bindToComponentInputs?$r(8,[VI,{provide:Dd,useExisting:VI}]).\u0275providers:[],r?.enableViewTransitions?BU().\u0275providers:[],[{provide:mT,useFactory:pT},{provide:xu,multi:!0,useExisting:mT}]]}}static forChild(n){return{ngModule:e,providers:[{provide:Us,multi:!0,useValue:n}]}}static#e=this.\u0275fac=function(r){return new(r||e)(ue(gT,8))};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({})}return e})();function zU(e){return"guarded"}function qU(e){return["disabled"===e.initialNavigation?$r(3,[{provide:sg,multi:!0,useFactory:()=>{const t=A(Lr);return()=>{t.setUpLocationChangeListener()}}},{provide:Tm,useValue:2}]).\u0275providers:[],"enabledBlocking"===e.initialNavigation?$r(2,[{provide:Tm,useValue:0},{provide:sg,multi:!0,deps:[Rt],useFactory:t=>{const n=t.get(X2,Promise.resolve());return()=>n.then(()=>new Promise(r=>{const o=t.get(Lr),i=t.get(hT);aT(o,()=>{r(!0)}),t.get(Ad).afterPreactivation=()=>(r(!0),i.closed?ge(void 0):i),o.initialNavigation()}))}}]).\u0275providers:[]]}const mT=new Z(""),WU=[{path:"",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-home"]],decls:10,vars:0,consts:[[1,"d-flex","flex-column","justify-content-center","text-center","py-5","my-5"],[1,"display-3","mx-auto"],[1,"lead","w-75","mx-auto"],[1,"d-grid","gap-2","d-md-flex","justify-content-center"],["routerLink","/docs",1,"btn","btn-danger","px-4","me-md-2"],["href","https://github.com/DevNet-Framework",1,"btn","btn-outline-secondary","px-4"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"h1",1),a(2,"DevNet Framework"),c(),l(3,"p",2),a(4," A free open-source software, and cross-platform, inspired by ASP.NET Core, built in PHP for rapid application development, APIs, console and modern web application with high performance. "),c(),l(5,"div",3)(6,"a",4),a(7,"Documentation"),c(),l(8,"a",5),a(9,"View on GitHub"),c()()())},dependencies:[Ae]})}return e})()},{path:"docs",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-docs"]],decls:56,vars:0,consts:[[1,"d-flex","flex-column","justify-content-center","text-center","p-3",2,"min-height","280px","background-color","rebeccapurple"],[1,"text-white","display-4","mx-auto"],[1,"lead","text-white","w-75","mx-auto"],[1,"pt-3"],[1,"container"],[1,"row"],[1,"col-sm-6","col-md-4","mb-3"],[1,"card","shadow-sm","h-100","p-3"],[1,"card-body"],[1,"card-title"],[1,"card-text","mb-0"],["routerLink","/docs/setup",1,"card-link","stretched-link"],["routerLink","/docs/console",1,"card-link","stretched-link"],["routerLink","/docs/system",1,"card-link","stretched-link"],["routerLink","/docs/web",1,"card-link","stretched-link"],["routerLink","/docs/security",1,"card-link","stretched-link"],["routerLink","/docs/orm",1,"card-link","stretched-link"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"h1",1),a(2,"DevNet Documentation"),c(),l(3,"p",2),a(4,"Learn how to use DevNet Framework for rapid application development on any platform, using PHP with a new experience to the next level."),c()(),l(5,"section",3)(6,"div",4)(7,"div",5)(8,"div",6)(9,"div",7)(10,"div",8)(11,"h5",9),a(12,"Setup"),c(),l(13,"p",10),a(14,"Installing the framework and configuring the deployment environment"),c(),y(15,"a",11),c()()(),l(16,"div",6)(17,"div",7)(18,"div",8)(19,"h5",9),a(20,"Console Application"),c(),l(21,"p",10),a(22,"Creating console applications and command lines"),c(),y(23,"a",12),c()()(),l(24,"div",6)(25,"div",7)(26,"div",8)(27,"h5",9),a(28,"Fundamentals"),c(),l(29,"p",10),a(30,"Exploring the fundamental features of the core library"),c(),y(31,"a",13),c()()(),l(32,"div",6)(33,"div",7)(34,"div",8)(35,"h5",9),a(36,"Web Application"),c(),l(37,"p",10),a(38,"Creating web applications, web APIs and microservices"),c(),y(39,"a",14),c()()(),l(40,"div",6)(41,"div",7)(42,"div",8)(43,"h5",9),a(44,"Security"),c(),l(45,"p",10),a(46,"Protecting and controlling the access to the resources"),c(),y(47,"a",15),c()()(),l(48,"div",6)(49,"div",7)(50,"div",8)(51,"h5",9),a(52,"ORM"),c(),l(53,"p",10),a(54,"Manipulating the database using the object relational mapper"),c(),y(55,"a",16),c()()()()()())},dependencies:[Ae]})}return e})()},{path:"**",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-error"]],decls:8,vars:0,consts:[[1,"container"],[1,"d-flex","flex-column","justify-content-center","text-center",2,"height","75vh"],[1,"text-danger","display-6","mx-auto","fw-normal"],[1,"text-danger","display-1","mx-auto","fw-normal"],[1,"lead","w-75","mx-auto","text-dark","fw-normal"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"span",2),a(3,"ERROR"),c(),l(4,"h1",3),a(5,"404"),c(),l(6,"p",4),a(7,"Page not found!"),c()()())}})}return e})()}];let KU=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forRoot(WU,{scrollPositionRestoration:"enabled"}),on]})}return e})();const YU=[];let ZU=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(YU),on]})}return e})(),bi=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,ZU]})}return e})();const Ue=g(687);function XU(e){const r={className:"number",begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/,contains:[r,{className:"number",begin:/:\d{1,5}/},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"]},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable",begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}]},r,{className:"number",begin:/\b\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}function JU(e){const t=e.regex,n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{\w+\}/},{begin:t.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},o={endsWithParent:!0,keywords:{$pattern:/[a-z_]{2,}|\/dev\/poll/,literal:["on","off","yes","no","true","false","none","blocked","debug","info","notice","warn","error","crit","select","break","last","permanent","redirect","kqueue","rtsig","epoll","poll","/dev/poll"]},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|\\{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|\\{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]?\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{beginKeywords:"upstream location",end:/;|\{/,contains:o.contains,keywords:{section:"upstream location"}},{className:"section",begin:t.concat(e.UNDERSCORE_IDENT_RE+t.lookahead(/\s+\{/)),relevance:0},{begin:t.lookahead(e.UNDERSCORE_IDENT_RE+"\\s"),end:";|\\{",contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:o}],relevance:0}],illegal:"[^\\s\\}\\{]"}}let Ve=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-sidebar"]],decls:128,vars:0,consts:[[1,"position-sticky","top-0","overflow-auto","bg-white","p-2"],["id","menu",1,"list-unstyled","ps-0"],[1,"mb-1"],["data-bs-toggle","collapse","data-bs-target","#start-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","start-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],[1,"btn-toggle-nav","list-unstyled","fw-normal","pb-1","small"],["routerLink","/docs/setup/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/setup/installation","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/setup/deployment","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#console-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","console-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/console/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/output","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/input","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/command","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#fundamentals-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","fundamentals-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/system/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/properties","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/extension","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/linq","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/generics","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/asynchronous","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/delegates","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#web-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","web-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/web/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/http","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/middleware","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/routing","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/controller","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/view","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/filter","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/exception","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/dependency","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#security-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","security-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/security/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/authentication","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/authorization","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/antiforgery","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#entity-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","entity-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/orm/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/query","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/save","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/relationships","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/migrations","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"ul",1)(2,"li",2)(3,"button",3),a(4," Setup "),c(),l(5,"div",4)(6,"ul",5)(7,"li")(8,"a",6),a(9,"Overview"),c()(),l(10,"li")(11,"a",7),a(12,"Installation"),c()(),l(13,"li")(14,"a",8),a(15,"Deployment"),c()()()()(),l(16,"li",2)(17,"button",9),a(18," Console "),c(),l(19,"div",10)(20,"ul",5)(21,"li")(22,"a",11),a(23,"Get Started"),c()(),l(24,"li")(25,"a",12),a(26,"Output"),c()(),l(27,"li")(28,"a",13),a(29,"Input"),c()(),l(30,"li")(31,"a",14),a(32,"Command Line"),c()()()()(),l(33,"li",2)(34,"button",15),a(35," Fundamentals "),c(),l(36,"div",16)(37,"ul",5)(38,"li")(39,"a",17),a(40,"Overview"),c()(),l(41,"li")(42,"a",18),a(43,"Accessor Properties"),c()(),l(44,"li")(45,"a",19),a(46,"Extension Methods"),c()(),l(47,"li")(48,"a",20),a(49,"LINQ Methods"),c()(),l(50,"li")(51,"a",21),a(52,"Generic Types"),c()(),l(53,"li")(54,"a",22),a(55,"Async Operations"),c()(),l(56,"li")(57,"a",23),a(58,"Delegates & Events"),c()()()()(),l(59,"li",2)(60,"button",24),a(61," Web "),c(),l(62,"div",25)(63,"ul",5)(64,"li")(65,"a",26),a(66,"Get Started"),c()(),l(67,"li")(68,"a",27),a(69,"Http Context"),c()(),l(70,"li")(71,"a",28),a(72,"Middleware"),c()(),l(73,"li")(74,"a",29),a(75,"Routing"),c()(),l(76,"li")(77,"a",30),a(78,"Controller"),c()(),l(79,"li")(80,"a",31),a(81,"Views"),c()(),l(82,"li")(83,"a",32),a(84,"Filters"),c()(),l(85,"li")(86,"a",33),a(87,"Exception Handler"),c()(),l(88,"li")(89,"a",34),a(90,"Dependency Injection"),c()()()()(),l(91,"li",2)(92,"button",35),a(93," Security "),c(),l(94,"div",36)(95,"ul",5)(96,"li")(97,"a",37),a(98,"Overview"),c()(),l(99,"li")(100,"a",38),a(101,"Authentication"),c()(),l(102,"li")(103,"a",39),a(104,"Authorization"),c()(),l(105,"li")(106,"a",40),a(107,"CSRF Prevention"),c()()()()(),l(108,"li",2)(109,"button",41),a(110," ORM "),c(),l(111,"div",42)(112,"ul",5)(113,"li")(114,"a",43),a(115,"Get Started"),c()(),l(116,"li")(117,"a",44),a(118,"Query Data"),c()(),l(119,"li")(120,"a",45),a(121,"Save Data"),c()(),l(122,"li")(123,"a",46),a(124,"Relationships"),c()(),l(125,"li")(126,"a",47),a(127,"Migrations"),c()()()()()()())},dependencies:[Ae,cT],styles:[".btn-toggle[_ngcontent-%COMP%]{padding:.25rem .5rem;font-weight:600;color:#000000a6;background-color:transparent}.btn-toggle[_ngcontent-%COMP%]:hover, .btn-toggle[_ngcontent-%COMP%]:focus{color:#000000d9;background-color:#d2f4ea}.btn-toggle[_ngcontent-%COMP%]:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%}.btn-toggle[aria-expanded=true][_ngcontent-%COMP%]{color:#000000d9}.btn-toggle[aria-expanded=true][_ngcontent-%COMP%]:before{transform:rotate(90deg)}.btn-toggle-nav[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-left:2px solid #E0E0E0;margin-left:1rem}.btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.1875rem .5rem;margin-top:.15rem;margin-left:.8rem}.btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:focus{background-color:#d2f4ea}"]})}return e})();const e5=[{path:"docs/setup/overview",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["setup-overview"]],decls:33,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/framework.svg","alt","Web app home page","width","60%","height","auto"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/setup/installation",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet Framework is a free open-source PHP library and toolset for rapid application development with high performance to build console applications, web applications, web APIs, and microservices. "),c(),l(11,"h3"),a(12,"Architecture"),c(),l(13,"p"),a(14," The DevNet framework has a layered architecture, which can be represented by the following diagram, that shows the major components of the DevNet Framework in each layer. "),c(),l(15,"div"),y(16,"img",4),c(),l(17,"p"),a(18," The top layer is the application that performs specific tasks and operations that end users interact with, which is built on top of subsequent layers that contain more sophisticated services that are also built on layers below, down to the lowest layer of the system that provides the basic functionality that all components rely on. "),c(),l(19,"blockquote",5)(20,"b"),a(21,"Note:"),c(),a(22," Each of these components will be discussed in more detail in the upcoming chapters. "),c()(),l(23,"nav",6)(24,"ul",7)(25,"li",8)(26,"a",9),y(27,"i",10),a(28," Previous "),c()(),l(29,"li",8)(30,"a",11),a(31," Next "),y(32,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/setup/installation",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["setup-installation"]],decls:64,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["href","https://www.php.net/","rel","nofollow"],["href","https://getcomposer.org/","rel","nofollow"],[1,"alert","alert-warning"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/setup/deployment",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Installation"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet Framework has some software requirements in order to work, so make sure your system meets the software requirements before getting to the installation. "),c(),l(11,"h3"),a(12,"Software Requirements"),c(),l(13,"ul")(14,"li")(15,"a",4),a(16,"PHP"),c(),a(17," version 8.1 or higher"),c(),l(18,"li")(19,"a",5),a(20,"Composer"),c(),a(21," version 2.0 or higher"),c(),l(22,"li"),a(23,"You may need to install or activate "),l(24,"code"),a(25,"PDO PHP Extensions"),c()()(),l(26,"blockquote",6)(27,"b"),a(28,"Important:"),c(),a(29," If you are using composer on a Linux operating system, please make sure that you have added the path "),l(30,"code"),a(31,'"composer/vendor/bin"'),c(),a(32," to the system environment variables in the "),l(33,"code"),a(34,'".bashrc"'),c(),a(35," file as follows:"),y(36,"br"),l(37,"code"),a(38,'export PATH="$PATH:$HOME/.config/composer/vendor/bin"'),c()(),y(39,"br"),l(40,"h3"),a(41,"Installing DevNet Framework"),c(),l(42,"p"),a(43," It is recommended to Install the DevNet Framework globally in your system, just one framework runs multiple projects unless your projects use different versions of the DevNet framework, which may cause conflict because the composer doesn't support multi-versioning, in this case, you can solve this problem using docker container or installing the compatible version of DevNet framework locally inside its proper project. "),c(),l(44,"p"),a(45," To install DevNet Framework, open your terminal and run the following composer command-line: "),c(),l(46,"pre")(47,"code",7),a(48,"composer global require devnet/framework"),c()(),l(49,"p"),a(50," Then you can use the DevNet CLI to create and manage your project. "),c(),l(51,"pre")(52,"code",7),a(53,"devnet --help"),c()()(),l(54,"nav",8)(55,"ul",9)(56,"li",10)(57,"a",11),y(58,"i",12),a(59," Previous "),c()(),l(60,"li",10)(61,"a",13),a(62," Next "),y(63,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/setup/deployment",component:(()=>{class e{constructor(){}ngOnInit(){Ue.registerLanguage("apache",XU),Ue.registerLanguage("nginx",JU),Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["setup-deployment"]],decls:59,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-apache"],[1,"language-xml"],[1,"language-nginx"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/installation",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Deployment"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet web project comes with two default server configurations, Apache and IIS, to quickly deploy your web application, but you can add other server configurations, like the configuration of Nginx server, which is demonstrated in the last example of this section. "),c(),l(11,"h3"),a(12,"Apache configuration"),c(),l(13,"p"),a(14," For quick deployment on Apache server, your web project contains already "),l(15,"code"),a(16,".htaccess"),c(),a(17," file in the public directory "),l(18,"code"),a(19,"./webroot/"),c(),a(20," with the following configuration: "),c(),l(21,"pre")(22,"code",4),a(23,"RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^ index.php [QSA,L]"),c()(),y(24,"br"),l(25,"h3"),a(26,"IIS configuration"),c(),l(27,"p"),a(28," For IIS server deployment, your web project contains also the file "),l(29,"code"),a(30,"./webroot/Web.config"),c(),a(31," with the following configuration: "),c(),l(32,"pre")(33,"code",5),a(34,'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'),c()(),y(35,"br"),l(36,"h3"),a(37,"Nginx configuration"),c(),l(38,"p"),a(39," Assuming you have a PHP-FPM server installed in your system and running on "),l(40,"code"),a(41,"127.0.0.1:9000"),c(),a(42,", and you want to deploy your web application on the Nginx server, so you can configure the file "),l(43,"code"),a(44,"nginx.conf"),c(),a(45," like below: "),c(),l(46,"pre")(47,"code",6),a(48,"server {\n listen 80;\n server_name localhost;\n root /path/to/webroot;\n index index.php;\n error_page 404 /index.php;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n}"),c()()(),l(49,"nav",7)(50,"ul",8)(51,"li",9)(52,"a",10),y(53,"i",11),a(54," Previous "),c()(),l(55,"li",9)(56,"a",12),a(57," Next "),y(58,"i",13),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/setup",redirectTo:"docs/setup/overview",pathMatch:"full"}];let t5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(e5),on]})}return e})(),n5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,t5,bi]})}return e})();const r5=[{path:"docs/system/overview",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-overview"]],decls:46,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/command",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/properties",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet System is a low-level library that provides the fundamental functionalities of the DevNet framework, which can be represented in the following features: "),c(),l(11,"ul")(12,"li"),a(13,"Accessor Properties"),c(),l(14,"li"),a(15,"Extension Methods"),c(),l(16,"li"),a(17,"LINQ Methods"),c(),l(18,"li"),a(19,"Generic Types"),c(),l(20,"li"),a(21,"Asynchronous Operations"),c(),l(22,"li"),a(23,"Delegates & Events"),c(),l(24,"li"),a(25,"Database Access"),c(),l(26,"li"),a(27,"And more..."),c()(),y(28,"br"),l(29,"h3"),a(30,"Installation"),c(),l(31,"p"),a(32," If you have installed any of the DevNet packages, then you already have the DevNet System. However, you can still install DevNet System as a third-party library to work with any PHP project by running the following composer command-line: "),c(),l(33,"pre")(34,"code",4),a(35,"composer require devnet/system"),c()()(),l(36,"nav",5)(37,"ul",6)(38,"li",7)(39,"a",8),y(40,"i",9),a(41," Previous "),c()(),l(42,"li",7)(43,"a",10),a(44," Next "),y(45,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/properties",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-properties"]],decls:61,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Accessor Properties"),c(),y(8,"hr"),l(9,"p"),a(10," Accessor properties are methods that look like regular data properties from the outside but are invoked as methods internally when accessed as properties. This allows us to define custom logic for reading and writing the values of an object's properties, with more control over the property's behavior, such as how to validate or modify the input or output, unlike the data properties, which directly store a fixed value. "),c(),l(11,"p"),a(12," To enable the accessor property feature, you need to include the trait "),l(13,"code"),a(14,"DevNet\\System\\PropertyTrait"),c(),a(15," in your class. "),c(),l(16,"h3"),a(17,"Getter Accessor"),c(),l(18,"p"),a(19," The getter accessor is a function bound to a computed property and returns a value when that property is looked up. "),c(),l(20,"p"),a(21," Here is an example that shows how to define a getter accessor property, which is a method that has a property name prefixed with "),l(22,"code"),a(23,"get_"),c(),a(24," accessor and return a value. "),c(),l(25,"pre")(26,"code",4),a(27,"FirstName . ' ' . $this->LastName;\n }\n}\n"),c()(),l(28,"p"),a(29," And here how you can access the computed property: "),c(),l(30,"pre")(31,"code",4),a(32,'FirstName = "John";\n$person->LastName = "Doe";\n\n// Accessing the computed property.\nprint($person->FullName); // Output: John Doe\n'),c()(),y(33,"br"),l(34,"h3"),a(35,"Setter Accessor"),c(),l(36,"p"),a(37," The setter accessor is a function bound to a computed property and will be called when there is an attempt to set that property. "),c(),l(38,"p"),a(39," The following example shows how to define a setter accessor property as a method prefixed with "),l(40,"code"),a(41,"set_"),c(),a(42," accessor and take a value parameter to set object. "),c(),l(43,"pre")(44,"code",4),a(45,"FirstName = $segments[0] ?? '';\n $this->LastName = $segments[1] ?? '';\n }\n}\n"),c()(),l(46,"p"),a(47," And here how to set the computed property: "),c(),l(48,"pre")(49,"code",4),a(50,'FullName = "John Doe";\n\nprint($person->FirstName); // Output: John\nprint($person->LastName); // Output: Doe\n'),c()()(),l(51,"nav",5)(52,"ul",6)(53,"li",7)(54,"a",8),y(55,"i",9),a(56," Previous "),c()(),l(57,"li",7)(58,"a",10),a(59," Next "),y(60,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/extension",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-extension"]],decls:73,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"text-justify"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/properties",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/linq",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Extension Methods"),c(),y(8,"hr"),l(9,"p"),a(10," Extension methods are static methods that can be added to an existing class without modifying the class itself or creating a new derived one, and they can be called as if they were instance methods on that extended class. "),c(),l(11,"h3"),a(12,"Extended class"),c(),l(13,"p"),a(14," The extended class is the class that the extension method operates on, and must include the trait "),l(15,"code"),a(16,"DevNet\\System\\MethodTrait"),c(),a(17," to enable this feature like in the following code example: "),c(),l(18,"pre")(19,"code",4),a(20,"Salary - $employee->Salary * $tax;\n }\n}\n"),c()(),y(40,"br"),l(41,"h3"),a(42,"Calling the extension method"),c(),l(43,"p",5),a(44," To call an extension method as if it were an instance method on a particular extended class, the extension class must be brought into the same scope where that instance calls the extension method, using the keyword "),l(45,"code"),a(46,"use"),c()(),l(47,"pre")(48,"code",4),a(49,'Name = "John Doe";\n$employee->Salary = 25000;\n$tax = 0.15;\n\n// Calling the extension method as if it belongs to the employee instance.\n$income = $employee->getIncome($tax);\n\nprint("Income: {$income}$"); // Income: 21250$\n'),c()(),l(50,"p"),a(51," When calling the extension method, the first parameter will be skipped because it's the target reference, and the second parameter will become the first one, the third one will become the second one, and so on... "),c(),y(52,"br"),l(53,"blockquote",6)(54,"b"),a(55,"Note:"),c(),a(56," One of the best examples of extension methods is the "),l(57,"b"),a(58,"LINQ"),c(),a(59," methods that allow to perform queries on collections of type "),l(60,"code"),a(61,"IEnumerable"),c(),a(62,", More details about this feature in the upcoming section. "),c()(),l(63,"nav",7)(64,"ul",8)(65,"li",9)(66,"a",10),y(67,"i",11),a(68," Previous "),c()(),l(69,"li",9)(70,"a",12),a(71," Next "),y(72,"i",13),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/linq",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-linq"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/generics",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Language Integrated Query"),c(),y(8,"hr"),l(9,"p"),a(10," LINQ, or Language Integrated Query, is an integration of query capabilities as expressions of extension methods against data, such as in-memory data, document databases, or SQL databases. "),c(),l(11,"p"),a(12," Any collection class of type "),l(13,"code"),a(14,"IEnumerable"),c(),a(15," or "),l(16,"code"),a(17,"IQueryable"),c(),a(18," that uses the "),l(19,"code"),a(20,"DevNet\\System\\MethodTrait"),c(),a(21," to support the extension method can take advantage of using LINQ extension methods. "),c(),l(22,"p"),a(23," The difference between "),l(24,"code"),a(25,"IEnumerable"),c(),a(26," and "),l(27,"code"),a(28,"IQueryable"),c(),a(29," types is that the implementation of the "),l(30,"code"),a(31,"IEnumerable"),c(),a(32," type, like the "),l(33,"code"),a(34,"ArrayList"),c(),a(35,", uses LINQ against in-memory data, while the implementation of the "),l(36,"code"),a(37,"IQueryable"),c(),a(38," type, like the "),l(39,"code"),a(40,"EntitySet"),c(),a(41," repository of DevNet DevNet ORM, uses LINQ against SQL database, which means that this one uses "),l(42,"code"),a(43,"IQueryProvider"),c(),a(44," to compile the predicate expressions of the LINQ methods to SQL query syntax. "),c(),l(45,"h3"),a(46,"Using LINQ extension methods"),c(),l(47,"p"),a(48," We use the "),l(49,"code"),a(50,"ArrayList"),c(),a(51," collection as an example to show you how to use the Linq extension methods with the "),l(52,"code"),a(53,"IEnumerable"),c(),a(54," collection and make sure to declare the namespace "),l(55,"code"),a(56,"DevNet\\System\\Linq"),c(),a(57," to be able to use those extension methods. "),c(),l(58,"pre")(59,"code",4),a(60,"first();\n$last = $list->last();\nprint("First employee is {$first->Name} with Id {$first->Id}\\n");\nprint("Last employee is {$last->Name} with Id {$last->Id}\\n");\n'),c()(),l(67,"h6"),a(68,"Output:"),c(),l(69,"pre")(70,"code",5),a(71,"First employee is bob with Id 1\nLast employee is ted with Id 6\n"),c()(),y(72,"br"),l(73,"h5"),a(74,"Filtering"),c(),l(75,"pre")(76,"code",4),a(77,'print("Employees with Id greater than 2\\n");\n\n$employees = $list->where(fn($employee) => $employee->Id > 2);\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n\nprint("\\n");\nprint("Employees with Name ted\\n");\n\n$employees = $list->where(fn($employee) => $employee->Name == \'ted\');\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(78,"h6"),a(79,"Output:"),c(),l(80,"pre")(81,"code",5),a(82,"Employees with Id greater than 2\n3 => ted\n4 => alice\n5 => carol\n6 => ted\n\nEmployees with Name ted\n3 => ted\n6 => ted\n"),c()(),y(83,"br"),l(84,"h5"),a(85,"Sorting"),c(),l(86,"pre")(87,"code",4),a(88,'print("Ascending order by Name\\n");\n\n$employees = $list->orderBy(fn($employee) => $employee->Name);\nforeach ($employees as $employee) {\nprint("{$employee->Id} => {$employee->Name}\\n");\n}\n\nprint("\\n");\nprint("Descending order by Id\\n");\n\n$employees = $list->orderByDescending(fn($employee) => $employee->Id);\nforeach ($employees as $employee) {\nprint("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(89,"h6"),a(90,"Output:"),c(),l(91,"pre")(92,"code",5),a(93,"Ascending order by Name\n4 => alice\n1 => bob \n2 => carol\n5 => carol\n3 => ted \n6 => ted \n\nDescending order by Id\n6 => ted \n5 => carol\n4 => alice\n3 => ted \n2 => carol\n1 => bob\n"),c()(),y(94,"br"),l(95,"h5"),a(96,"Paging"),c(),l(97,"pre")(98,"code",4),a(99,'// Skips the first 2 employees then take just 3 from the rest of employees.\n$employees = $list->skip(2)->take(3);\n\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(100,"h6"),a(101,"Output:"),c(),l(102,"pre")(103,"code",5),a(104,"3 => ted\n4 => alice\n5 => carol\n"),c()(),y(105,"br"),l(106,"h5"),a(107,"Aggregating"),c(),l(108,"pre")(109,"code",4),a(110,'$count = $list->count();\n$max = $list->max(fn($employee) => $employee->Id);\n$min = $list->min(fn($employee) => $employee->Id);\n\nprint("Total employees => {$count}\\n");\nprint("Max employee Id => {$max}\\n");\nprint("Min employee Id => {$min}\\n");\n'),c()(),l(111,"h6"),a(112,"Output:"),c(),l(113,"pre")(114,"code",5),a(115,"Total employees => 6\nMax employee Id => 6\nMin employee Id => 1\n"),c()(),y(116,"br"),l(117,"h5"),a(118,"Grouping"),c(),l(119,"pre")(120,"code",4),a(121,'// Creates a groups of employees share the same name.\n$groups = $list->groupBy(fn($employee) => $employee->Name);\n\nforeach ($groups as $group) {\n print("Total employees in {$group->Key} group => {$group->count()}\\n");\n}\n'),c()(),l(122,"h6"),a(123,"Output:"),c(),l(124,"pre")(125,"code",5),a(126,"Total employees in bob group => 1\nTotal employees in carol group => 2\nTotal employees in ted group => 2\nTotal employees in alice group => 1\n"),c()()(),l(127,"nav",6)(128,"ul",7)(129,"li",8)(130,"a",9),y(131,"i",10),a(132," Previous "),c()(),l(133,"li",8)(134,"a",11),a(135," Next "),y(136,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/generics",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-generics"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/asynchronous",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Generic Types"),c(),y(8,"hr"),l(9,"p"),a(10," A generic type or parameterized type is a class with type parameters used in class operations without being specific to a particular data type, then defers the specification of these type parameters until the instantiation of the generic type to allow the code re-use. "),c(),l(11,"h3"),a(12,"Generic type parameter"),c(),l(13,"p"),a(14," The generic type parameter is a placeholder for a type that will be specified when an instance of the generic type is created. e.g. "),l(15,"code"),a(16,"TypeName"),c(),a(17," where "),l(18,"code"),a(19,"T"),c(),a(20," is a generic type parameter. "),c(),l(21,"p"),a(22," This feature can be added to your class by using the trait "),l(23,"code"),a(24,"DevNet\\System\\TypeTrait"),c(),a(25,". You can then define the generic type parameters using the attribute "),l(26,"code"),a(27,"DevNet\\System\\Template"),c(),a(28," on the generic class to specify the type parameters, and pass the generic type arguments via the constructor injection using the method "),l(29,"code"),a(30,"setGenericArguments()"),c()(),l(31,"p"),a(32," The type parameter can be used as the type of a method parameter using the attribute "),l(33,"code"),a(34,"DevNet\\System\\Type"),c(),a(35,", where the concrete type would ordinarily be used, and the method "),l(36,"code"),a(37,"checkArgumentTypes()"),c(),a(38," is the first to be called inside the method needed for the type checking. "),c(),l(39,"p"),a(40," Here is an example explaining how to create a generic class using this feature: "),c(),l(41,"pre")(42,"code",4),a(43,"setGenericArguments($typeName);\n }\n\n private function add(#[Type('T')] $item): void\n {\n // Checking the the type of the arguments before using them.\n $this->checkArgumentTypes(func_get_args());\n $this->items[] = $item;\n }\n\n public function getIterator(): Enumerator\n {\n return new Enumerator($this->items);\n }\n}\n"),c()(),y(44,"br"),l(45,"h3"),a(46,"Generic type argument"),c(),l(47,"p"),a(48," The generic type argument is a type that is passed to the generic type parameter when an instance of the generic type is created. e.g. "),l(49,"code"),a(50,"TypeName"),c(),a(51," where "),l(52,"code"),a(53,"string"),c(),a(54," is a generic type argument. "),c(),l(55,"p"),a(56," The following example uses the generic "),l(57,"code"),a(58,"Collection"),c(),a(59," class created in the previous example to show how to specify the actual type argument at the time of instantiation to make it work only with that specified type. "),c(),l(60,"pre")(61,"code",4),a(62,"Id = 1;\n$employee->Name = 'Alice';\n\n// Create an instance of type Collection\n$employees = new Collection(Employee::class);\n\n// Now this method accepts only arguments of type Employee, other wise will throw a TypeException.\n$employees->add($employee);\n"),c()(),y(63,"br"),l(64,"h3"),a(65,"Checking generic type"),c(),l(66,"p"),a(67," You can use the method "),l(68,"code"),a(69,"checkArgumentTypes()"),c(),a(70," to check the type of any method parameter, including the parameterized type defined in the "),l(71,"code"),a(72,"DevNet\\System\\Type"),c(),a(73," attribute. "),c(),l(74,"p"),a(75," The example below represents a class "),l(76,"code"),a(77,"EmployeeProvider"),c(),a(78," that accepts only the injection of "),l(79,"code"),a(80,"Collection"),c(),a(81," through the constructor. "),c(),l(82,"pre")(83,"code",4),a(84,"\n public function __construct(#[Type(Collection::class, [Employee::class])] $employees)\n {\n $this->checkArgumentTypes(func_get_args());\n $this->employees = $employees;\n }\n\n public function get(int $id): ?Employee\n {\n foreach ($this->employees as $employee) {\n if ($employee->Id == $id) {\n return $employee;\n }\n }\n return null;\n }\n}\n"),c()(),y(85,"br"),l(86,"h3"),a(87,"Multiple type parameters"),c(),l(88,"p"),a(89," As mentioned earlier, the generic class can have multiple type parameters, like a pair of key-value type parameters, which are demonstrated in the following example: "),c(),l(90,"pre")(91,"code",4),a(92,"setGenericArguments($keyTypeName, $valueTypeName);\n }\n\n private function add(#[Type('K')] $key, #[Type('V')] $value): void\n {\n $this->checkArgumentTypes(func_get_args());\n $this->items[$key()] = $value();\n }\n ...\n}\n"),c()(),y(93,"br"),l(94,"h3"),a(95,"Built-in generic collections"),c(),l(96,"p"),a(97," For rapid development, the DevNet Core library provides two types of generic collections: "),c(),l(98,"ul")(99,"li")(100,"code"),a(101,"ArrayList"),c(),a(102," an indexed generic collection, where the parameter "),l(103,"code"),a(104,"T"),c(),a(105," is the type of the items in the collection."),c(),l(106,"li")(107,"code"),a(108,"Dictionary"),c(),a(109," a key-value pairs generic collection, where the parameter "),l(110,"code"),a(111,"K"),c(),a(112," is the type of the keys, and the parameter "),l(113,"code"),a(114,"V"),c(),a(115," is the type of the values in the collection."),c()(),l(116,"h5"),a(117,"ArrayList Example:"),c(),l(118,"pre")(119,"code",4),a(120,".\n$array = new ArrayList('string');\n$array[] = 'Bob';\n\n// This will throw a TypeException because the key must be of type integer.\n$array['1'] = 'Alice';\n\n// This will throw a TypeException because the value must be of type string.\n$array[1] = 50;\n"),c()(),y(121,"br"),l(122,"h5"),a(123,"Dictionary Example:"),c(),l(124,"pre")(125,"code",4),a(126,".\n$array = new Dictionary('string', 'float');\n$array['width'] = 90.5;\n\n// This will throw a TypeException because the value must be of type float.\n$array['height'] = '50';\n\n// This will throw a TypeException because the key must be of type string.\n$array[1] = 50;\n"),c()()(),l(127,"nav",5)(128,"ul",6)(129,"li",7)(130,"a",8),y(131,"i",9),a(132," Previous "),c()(),l(133,"li",7)(134,"a",10),a(135," Next "),y(136,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/asynchronous",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-asynchronous"]],decls:58,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"text-justify"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/generics",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/delegates",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Asynchronous Operations"),c(),y(8,"hr"),l(9,"p"),a(10," Asynchronous programming is a cooperative multitasking technique that allows the program to perform other operations while concurrently waiting for a long-running task to complete and then return the result when that task is complete. This technique is useful when working with an independent process that runs in the background or with I/O stream operations such as network access or database queries. "),c(),l(11,"h3"),a(12,"Coroutine Task"),c(),l(13,"p"),a(14," A coroutine task is an object that represents an asynchronous operation. It is used to perform work without blocking the main thread's execution by suspending and resuming the execution of the task's operations until the task completes and then returns a result on success or throws an exception on failure. "),c(),l(15,"pre")(16,"code",4),a(17,"wait();\nwhile (true) {\n if ($task->IsCompleted) {\n break;\n }\n}\n\ntry {\n // Getting the result when the task is completed.\n $result = $task->Result;\n} catch ($exception $e) {\n // Logging the error report if the task is failed.\n}\n"),c()(),y(18,"br"),l(19,"h3"),a(20,"Continuation Task"),c(),l(21,"p",5),a(22," A continuation task is an asynchronous task that is chained to another task by calling the "),l(23,"code"),a(24,"then()"),c(),a(25," method which will be executed when its antecedent task completes its execution. "),c(),l(26,"pre")(27,"code",4),a(28,"then(function($task1) {\n $data = $task1->Result;\n return json_decode($data);\n });\n\n return $task2;\n}\n\n$task = readJsonAsync('path/to/data.json');\n$data = $task->Result;\n"),c()(),y(29,"br"),l(30,"h3"),a(31,"Async/Await Pattern"),c(),l(32,"p"),a(33," The async/await pattern is a feature related to the coroutine concept, where the async function can use the await operator to suspend the asynchronous operation until that operation completes and then returns a result. This enables asynchronous non-blocking functions to be structured like normal synchronous functions in the enclosing scope without blocking the main thread during the execution of the async function, which also returns a task object that represents an asynchronous operation and provides a result when the task completes successfully. "),c(),l(34,"pre")(35,"code",4),a(36,"readAsync($file->Length));\n $data = json_decode($json);\n\n $file->close();\n return $data;\n});\n\n$task = $readJsonAsync('path/to/data.json');\n$data = $task->getAwaiter()->getResult();\n"),c()(),l(37,"p"),a(38," Here is the same example in an object-oriented way, where the async method must be prefixed with the "),l(39,"code"),a(40,"async_"),c(),a(41," keyword, and the class that has the async method must use the trait "),l(42,"code"),a(43,"DevNet\\System\\MethodTrait"),c(),a(44," to enable this feature. "),c(),l(45,"pre")(46,"code",4),a(47,"readAsync($file->Length));\n $data = json_decode($json);\n \n $file->close();\n return $data;\n });\n}\n\n$reader = new Reader();\n$task = $reader->readJsonAsync('path/to/data.json');\n$data = $task->getAwaiter()->getResult();\n"),c()()(),l(48,"nav",6)(49,"ul",7)(50,"li",8)(51,"a",9),y(52,"i",10),a(53," Previous "),c()(),l(54,"li",8)(55,"a",11),a(56," Next "),y(57,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system/delegates",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["system-delegates"]],decls:111,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/asynchronous",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Delegates & Events"),c(),y(8,"hr"),l(9,"p"),a(10," A delegate is a type that holds references to methods or functions with a particular signature of parameters and return type, and any method or function compatible with the delegate signature can be associated with the instance of that delegate and can be called by invoking the delegate instance. "),c(),l(11,"h3"),a(12,"Defining the delegate"),c(),l(13,"p"),a(14," A delegate is constructed by extending the abstract class Delegate, defining the method signature with an empty body, and having the same name as the name of the defined delegate class, as shown in the code example below. "),c(),l(15,"pre")(16,"code",4),a(17,"invoke($args);\n}\n"),c()(),y(42,"br"),l(43,"h3"),a(44,"Event"),c(),l(45,"p"),a(46," An event is a special type of delegate that enables an object to notify other objects when something of interest occurs, where the class that sends or raises the event is called the publisher (other names: sender, subject), and the classes that receive or handle the event are called subscribers (other names: receivers, observers, listeners, handlers). "),c(),l(47,"h5"),a(48,"Event Handler"),c(),l(49,"p"),a(50," DevNet provides an easy way to subscribe to the event by using "),l(51,"code"),a(52,"DevNet\\System\\Event\\EventHandler"),c(),a(53,", which has the following delegate signature "),l(54,"code"),a(55,"function(object $sender, EventArgs $args): void"),c()(),l(56,"ul")(57,"li")(58,"b"),a(59,"$sender:"),c(),a(60," ("),l(61,"code"),a(62,"object"),c(),a(63,") represents the publisher that raises the event, and the reason for passing the sender as a parameter to the handler, is because the handler can be subscribed to multiple publishers, and sometimes we need to know which publisher raises the event."),c(),l(64,"li")(65,"b"),a(66,"$args:"),c(),a(67," ("),l(68,"code"),a(69,"DevNet\\System\\Event\\EventArgs"),c(),a(70,") represents the event arguments to be handled by the handler."),c()(),l(71,"p"),a(72," The example below represents a "),l(73,"code"),a(74,"Button"),c(),a(75," class as a publisher with two events: The "),l(76,"code"),a(77,"click"),c(),a(78," and "),l(79,"code"),a(80,"keypress"),c(),a(81," events, which can be associated with event listeners. "),c(),l(82,"pre")(83,"code",4),a(84,"Title = $title;\n $this->click = new EventHandler();\n $this->keypress = new EventHandler();\n }\n\n public function addListener(string $event, callable $handler): void\n {\n switch($event) {\n case 'click':\n $this->click[] = $handler;\n break;\n case 'keypress':\n $this->keypress[] = $handler;\n break;\n default:\n throw \\Exception(\"The event {$event} does not exist!\");\n }\n }\n\n public function click(): void\n {\n $this->click->invoke($this, new EventArgs);\n }\n\n public function keypress(): void\n {\n $this->keypress->invoke($this, new EventArgs);\n }\n}\n"),c()(),l(85,"p"),a(86," And the following example represents a "),l(87,"code"),a(88,"Window"),c(),a(89," class as a subscriber that can subscribe handlers to the "),l(90,"code"),a(91,"Button"),c(),a(92," events. "),c(),l(93,"pre")(94,"code",4),a(95,"Title = $title;\n $this->MyButton = new Button(\"My button\");\n // Subscribe to the click event.\n $this->MyButton->addListener('click', [$this, 'onMyButtonClick']);\n }\n\n public function onMyButtonClick(object $sender, EventArgs $event): void\n {\n print(\"{$sender->Title} was clicked\");\n }\n}\n"),c()(),l(96,"p"),a(97," And here is a working example of triggering the click event of the Window's button. "),c(),l(98,"pre")(99,"code",4),a(100,'MyButton->click();\n'),c()()(),l(101,"nav",5)(102,"ul",6)(103,"li",7)(104,"a",8),y(105,"i",9),a(106," Previous "),c()(),l(107,"li",7)(108,"a",10),a(109," Next "),y(110,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/system",redirectTo:"docs/system/overview",pathMatch:"full"}];let o5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(r5),on]})}return e})(),i5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,o5,bi]})}return e})();const s5=[{path:"docs/console/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["console-start"]],decls:78,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/deployment",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/output",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Application"),c(),y(8,"hr"),l(9,"p"),a(10," This chapter shows how to create and run a DevNet console application. "),c(),l(11,"h3"),a(12,"Create Console Project"),c(),l(13,"p"),a(14," To create a DevNet console project, enter the command below in the Terminal, where the argument "),l(15,"code"),a(16,"project-name"),c(),a(17," is any name you give to your project: "),c(),l(18,"pre")(19,"code",4),a(20,"devnet new console --output project-name"),c()(),l(21,"p"),a(22," Or, using the composer command-line: "),c(),l(23,"pre")(24,"code",4),a(25,"composer create-project devnet/console project-name"),c()(),y(26,"br"),l(27,"h4"),a(28,"Project Structure"),c(),l(29,"p"),a(30," The DevNet console project has the following folder structure: "),c(),l(31,"pre")(32,"code",4),a(33,"console-project/\n\u251c\u2500\u2500 bin/\n| \u251c\u2500\u2500 apphost\n| \u251c\u2500\u2500 run.bat\n| \u2514\u2500\u2500 run\n\u251c\u2500\u2500 src/\n| \u2514\u2500\u2500 Program.php\n\u251c\u2500\u2500 vendor/\n\u2514\u2500\u2500 devnet.proj"),c()(),y(34,"br"),l(35,"h4"),a(36,"Entry Point"),c(),l(37,"p"),a(38," By default, the entry point is the static method "),l(39,"code"),a(40,"Application\\Program::main(array $args)"),c(),a(41,", but you can change that in the project file "),l(42,"code"),a(43,"devnet.proj"),c()(),l(44,"pre")(45,"code",5),a(46,'{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["console-output"]],decls:211,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/input",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Output"),c(),y(8,"hr"),l(9,"p"),a(10," Console output is the text that is printed to the console screen or terminal window when a program is run, by writing data to the standard output stream. "),c(),l(11,"h3"),a(12,"Write to the console"),c(),l(13,"p"),a(14," To write data to the standard output stream, the following static methods are used: "),c(),l(15,"ul")(16,"li")(17,"code"),a(18,"DevNet\\System\\IO\\Console::write(string, $format, array|string ...$args)"),c()(),l(19,"li")(20,"code"),a(21,"DevNet\\System\\IO\\Console::writeLine(string, $format, array|string ...$args)"),c()()(),l(22,"p"),a(23," Both methods are similar, except that "),l(24,"code"),a(25,"Console::writeLine()"),c(),a(26," prints data along with a new line at the end of the output, while the "),l(27,"code"),a(28,"Console::write()"),c(),a(29," prints data without adding a new line, as shown in the following example. "),c(),l(30,"pre")(31,"code",4),a(32,'value, $color->name);\n }\n\n Console::writeLine();\n Console::$ForegroundColor = ConsoleColor::Black;\n Console::$BackgroundColor = ConsoleColor::White;\n Console::writeLine("List of the background colors:");\n Console::resetColor();\n\n foreach (ConsoleColor::cases() as $color) {\n Console::$BackgroundColor = $color;\n Console::writeLine("The background color {0} is {1}", $color->value, $color->name);\n }\n\n Console::resetColor();\n }\n}\n'),c()(),y(105,"br"),l(106,"h4"),a(107,"Colors"),c(),l(108,"p"),a(109," The enumeration "),l(110,"code"),a(111,"DevNet\\System\\IO\\ConsoleColor"),c(),a(112,", that defines the foreground and background colors for the console window, has the following fields: "),c(),l(113,"table",6)(114,"thead")(115,"tr")(116,"th",7),a(117,"Name"),c(),l(118,"th",7),a(119,"Code"),c()()(),l(120,"tbody")(121,"tr")(122,"td"),a(123,"Black"),c(),l(124,"td"),a(125,"0"),c()(),l(126,"tr")(127,"td"),a(128,"DarkGrey"),c(),l(129,"td"),a(130,"1"),c()(),l(131,"tr")(132,"td"),a(133,"DarkRed"),c(),l(134,"td"),a(135,"2"),c()(),l(136,"tr")(137,"td"),a(138,"DarkMagenta"),c(),l(139,"td"),a(140,"3"),c()(),l(141,"tr")(142,"td"),a(143,"DarkBlue"),c(),l(144,"td"),a(145,"4"),c()(),l(146,"tr")(147,"td"),a(148,"DarkCyan"),c(),l(149,"td"),a(150,"5"),c()(),l(151,"tr")(152,"td"),a(153,"DarkGreen"),c(),l(154,"td"),a(155,"6"),c()(),l(156,"tr")(157,"td"),a(158,"DarkYellow"),c(),l(159,"td"),a(160,"7"),c()(),l(161,"tr")(162,"td"),a(163,"Gray"),c(),l(164,"td"),a(165,"8"),c()(),l(166,"tr")(167,"td"),a(168,"Red"),c(),l(169,"td"),a(170,"9"),c()(),l(171,"tr")(172,"td"),a(173,"Magenta"),c(),l(174,"td"),a(175,"10"),c()(),l(176,"tr")(177,"td"),a(178,"Blue"),c(),l(179,"td"),a(180,"11"),c()(),l(181,"tr")(182,"td"),a(183,"Cyan"),c(),l(184,"td"),a(185,"12"),c()(),l(186,"tr")(187,"td"),a(188,"Green"),c(),l(189,"td"),a(190,"13"),c()(),l(191,"tr")(192,"td"),a(193,"Yellow"),c(),l(194,"td"),a(195,"14"),c()(),l(196,"tr")(197,"td"),a(198,"White"),c(),l(199,"td"),a(200,"15"),c()()()()(),l(201,"nav",8)(202,"ul",9)(203,"li",10)(204,"a",11),y(205,"i",12),a(206," Previous "),c()(),l(207,"li",10)(208,"a",13),a(209," Next "),y(210,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/console/input",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["console-input"]],decls:66,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/output",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/command",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Input"),c(),y(8,"hr"),l(9,"p"),a(10," Console input is the input data that is entered by the user through the console window, to interact with system programs or other console applications. "),c(),l(11,"h3"),a(12,"User input"),c(),l(13,"p"),a(14," The static method "),l(15,"code"),a(16,"DevNet\\System\\IO\\Console::readLine()"),c(),a(17,", is used to read the user input data from the standard input stream. "),c(),l(18,"p"),a(19," In the following example, the program prompts the user to enter his name, then reads the user input data and prints it in a greeting message. "),c(),l(20,"pre")(21,"code",4),a(22,'{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["console-command"]],decls:147,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"table"],["scope","col"],[1,"language-php"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/input",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/overview",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Command-Line Dispatcher"),c(),y(8,"hr"),l(9,"p"),a(10," The command-line dispatcher is a component used for building command-line applications, it provides a way to organize functionality into logical groups by creating a hierarchy of commands that can be navigated using subcommands, options, and arguments to execute particular actions, like providing the help information for the application. "),c(),l(11,"h3"),a(12,"Command-line syntax"),c(),l(13,"p"),a(14," The command-line parser will parse the input into tokens, which are strings delimited by spaces interpreted as commands, options, and arguments. "),c(),l(15,"p"),a(16," For example, consider the following command line: "),c(),l(17,"pre")(18,"code",4),a(19,"devnet add class --output MyClass"),c()(),l(20,"p"),a(21," The following table shows how the command-line parser interprets the preceding example: "),c(),l(22,"table",5)(23,"thead")(24,"tr")(25,"th",6),a(26,"Token"),c(),l(27,"th",6),a(28,"Description"),c()()(),l(29,"tbody")(30,"tr")(31,"td"),a(32,"devnet"),c(),l(33,"td"),a(34,"Root command"),c()(),l(35,"tr")(36,"td"),a(37,"add"),c(),l(38,"td"),a(39,"Child command"),c()(),l(40,"tr")(41,"td"),a(42,"class"),c(),l(43,"td"),a(44,"Argument for "),l(45,"b"),a(46,"add"),c(),a(47," command"),c()(),l(48,"tr")(49,"td"),a(50,"--output"),c(),l(51,"td"),a(52,"Option for "),l(53,"b"),a(54,"add"),c(),a(55," command"),c()(),l(56,"tr")(57,"td"),a(58,"MyClass"),c(),l(59,"td"),a(60,"Argument for "),l(61,"b"),a(62,"--output"),c(),a(63," option"),c()()()(),l(64,"h4"),a(65,"Root command"),c(),l(66,"p"),a(67," The root command is the top-level command that is executed when the application is run, is the one that specifies the name of the app's executable, and can accept parameters, such as subcommands, options, and arguments. "),c(),l(68,"h4"),a(69,"Child commands"),c(),l(70,"p"),a(71," The child commands, also known as subcommands or verbs, are commands nested within another, used to specify a particular action, and can accept additional subcommands as parameters, as well as options and arguments. "),c(),l(72,"h4"),a(73,"Options"),c(),l(74,"p"),a(75," Options are named parameters passed to a command optionally to modify its behavior, and they can accept an argument or be just flags without it. "),c(),l(76,"h4"),a(77,"Arguments"),c(),l(78,"p"),a(79," Arguments are values passed to a command or an option to provide additional information. "),c(),y(80,"br"),l(81,"h3"),a(82,"Define commands"),c(),l(83,"p"),a(84," You can define a root command, with some options and arguments, by creating an instance of the class "),l(85,"code"),a(86,"DevNet\\System\\Command\\CommandLine"),c(),a(87,", then you can define subcommands in the same way and add them to it. "),c(),l(88,"p"),a(89," The following code example is a command line application that can display the time according to the specified timezone. "),c(),l(90,"pre")(91,"code",7),a(92,"addOption('--version', 'Display the version information.', '-v');\n\n $rootCommand->setHandler(function (object $sender, CommandEventArgs $args): void {\n $version = $args->get('--version');\n if ($version) {\n Console::writeLine(\"watch command-line: v1.0.0\");\n return;\n }\n\n Console::writeLine(\"Try 'watch --help' to get information about the command's usage.\");\n });\n\n // Defines the child command.\n $subcommand = new CommandLine('time', 'Display the current time');\n $subcommand->addArgument('timezone', 'Define the time zone');\n\n $subcommand->setHandler(function (object $sender, CommandEventArgs $args): void {\n $datetime = new DateTime('now');\n $timezone = $args->get('timezone');\n if ($timezone) {\n $datetime->setTimezone(new DateTimeZone($timezone->Value));\n }\n\n Console::writeLine($datetime->format('H:i:s'));\n }\n\n // Adds the child command.\n $rootCommand->addCommand($subcommand);\n\n // Parsing the input, then invoking the command.\n $rootCommand->invoke($args);\n }\n}\n"),c()(),l(93,"blockquote",8)(94,"b"),a(95,"Note:"),c(),a(96," You can run your command-line application by executing the bin file of your application "),l(97,"code"),a(98,"./bin/run"),c()(),l(99,"p"),a(100," In this example, we have renamed the bin files "),l(101,"code"),a(102,"./bin/run"),c(),a(103," and "),l(104,"code"),a(105,"./bin/run.bat"),c(),a(106," to "),l(107,"code"),a(108,"./bin/watch"),c(),a(109," and "),l(110,"code"),a(111,"./bin/watch.bat"),c(),a(112," to match the name of the root command. "),c(),l(113,"p"),a(114," Now you can execute the command with a given time zone argument to get the current time of that zone. "),c(),l(115,"pre")(116,"code",4),a(117,"./bin/watch time America/Toronto"),c()(),l(118,"h5"),a(119,"Output"),c(),l(120,"pre")(121,"code",4),a(122,"19:29:01"),c()(),y(123,"br"),l(124,"p"),a(125," Or execute the command with the option "),l(126,"code"),a(127,"--version"),c(),a(128," to get the version information. "),c(),l(129,"pre")(130,"code",4),a(131,"./bin/watch --version"),c()(),l(132,"h5"),a(133,"Output"),c(),l(134,"pre")(135,"code",4),a(136,"watch command-line: v1.0.0"),c()()(),l(137,"nav",9)(138,"ul",10)(139,"li",11)(140,"a",12),y(141,"i",13),a(142," Previous "),c()(),l(143,"li",11)(144,"a",14),a(145," Next "),y(146,"i",15),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/console",redirectTo:"docs/console/start",pathMatch:"full"}];let a5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(s5),on]})}return e})(),c5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,a5,bi]})}return e})();const l5=[{path:"docs/web/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-start"]],decls:121,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],[1,"alert","alert-info"],["href","http://localhost:8000"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/delegates",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/http",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Web Application"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet web application is based on Middleware architecture with Action-Domain-Responder architectural pattern, which is suitable for creating a minimal web APIs, but it supports also Model-View-Controller architectural pattern which is available as an action dispatcher with a template engine that can be integrated into the services and invoked in the middleware endpoint. "),c(),l(11,"h3"),a(12,"Create a web project"),c(),l(13,"p"),a(14," To create a DevNet web project, enter the command below in the Terminal, where the argument "),l(15,"code"),a(16,"project-name"),c(),a(17," is any name you give to your web project: "),c(),l(18,"pre")(19,"code",4),a(20,"devnet new web --output project-name"),c()(),l(21,"p"),a(22," Or, using the composer command-line: "),c(),l(23,"pre")(24,"code",4),a(25,"composer create-project devnet/web project-name"),c()(),l(26,"p"),a(27," You can also create a DevNet web project from MVC template: "),c(),l(28,"pre")(29,"code",4),a(30,"composer create-project devnet/mvc project-name"),c()(),y(31,"br"),l(32,"h4"),a(33,"Project Structure"),c(),l(34,"p"),a(35," The DevNet web project has the following folder structure: "),c(),l(36,"pre")(37,"code",4),a(38,"web-project/\n\u251c\u2500\u2500 bin/\n| \u251c\u2500\u2500 apphost\n| \u251c\u2500\u2500 run.bat\n| \u2514\u2500\u2500 run\n\u251c\u2500\u2500 src/\n| \u2514\u2500\u2500 Program.php\n\u251c\u2500\u2500 webroot/\n| \u251c\u2500\u2500 css/\n| \u251c\u2500\u2500 js/\n| \u251c\u2500\u2500 lib/\n| \u251c\u2500\u2500 .htaccess\n| \u251c\u2500\u2500 index.php\n| \u2514\u2500\u2500 web.config\n\u251c\u2500\u2500 vendor/\n\u251c\u2500\u2500 devnet.proj\n\u2514\u2500\u2500 settings.json"),c()(),y(39,"br"),l(40,"h4"),a(41,"Entry Point"),c(),l(42,"p"),a(43," Like the console project, the entry point by default is the static method "),l(44,"code"),a(45,"Application\\Program::main(array $args)"),c(),a(46,", and you can change that in the project file: "),l(47,"samp"),a(48,'"devnet.proj"'),c()(),l(49,"p"),a(50," The entry point method calls the static method "),l(51,"code"),a(52,"WebHost::createDefaultBuilder(array $args)"),c(),a(53," to create a "),l(54,"code"),a(55,"WebHostBuilder"),c(),a(56," instance which can configure services through the method "),l(57,"code"),a(58,"register()"),c(),a(59,", and builds a "),l(60,"code"),a(61,"WebHost"),c(),a(62," instance which calls the "),l(63,"code"),a(64,"start()"),c(),a(65," method to configure the app's request pipeline, then runs the application as shown in the code below: "),c(),l(66,"pre")(67,"code",5),a(68,'register(function ($services) {\n // Services\n });\n\n $host = $builder->build();\n $host->start(function ($app) {\n // Middlewares\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n // Routes\n $routes->mapGet("/", fn () => "Hello World!");\n });\n });\n }\n}'),c()(),l(69,"blockquote",6)(70,"b"),a(71,"Note:"),c(),a(72," Working with services, middlewares and routes will be discussed in details in the upcoming sections."),c(),y(73,"br"),l(74,"h3"),a(75,"Run the application"),c(),l(76,"p"),a(77," To run the web application, run the following command in the Terminal : "),c(),l(78,"pre")(79,"code",4),a(80,"devnet run"),c()(),l(81,"p"),a(82," This will start the development web server at "),l(83,"a",7),a(84,"http://localhost:8000"),c(),a(85," in "),l(86,"samp"),a(87,"/webroot"),c(),a(88," folder, and optionally you can override this default server settings by adding arguments to the following parameters "),l(89,"code"),a(90,"--host"),c(),a(91,", "),l(92,"code"),a(93,"--port"),c(),a(94," and "),l(95,"code"),a(96,"--root"),c(),a(97," to the "),l(98,"code"),a(99,"run"),c(),a(100," command in the terminal like the following example: "),c(),l(101,"pre")(102,"code",4),a(103,"devnet run --host 127.0.0.1 --port 8888 --root webroot"),c()(),l(104,"blockquote",6)(105,"b"),a(106,"Note:"),c(),a(107," In Visual Studio Code with the PHP Xdebug extension, you can press the "),l(108,"b"),a(109,"F5"),c(),a(110," key button to launch the application in debug mode."),c()(),l(111,"nav",8)(112,"ul",9)(113,"li",10)(114,"a",11),y(115,"i",12),a(116," Previous "),c()(),l(117,"li",10)(118,"a",13),a(119," Next "),y(120,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/http",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-http"]],decls:157,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"text-justify"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/middleware",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"HTTP Client-Server "),c(),y(8,"hr"),l(9,"h3"),a(10,"Http Server"),c(),l(11,"p",4),a(12," DevNet provides the HttpContext class which encapsulates all HTTP information about the HTTP server request received from the client, and HTTP server response that will be sent to the client. "),c(),l(13,"p",4),a(14," HttpContext already injected in the your application, and you can access it through middlewares and request handler endpoints, but if you want to use HttpContext as a third-party component to another project than DevNet, you can create an instance of HttpContext using "),l(15,"code"),a(16,"HttpContextFactory"),c(),a(17," it will create a default instance with global server variables. "),c(),l(18,"pre")(19,"code",5),a(20,"Request->Method;"),c()(),y(37,"br"),l(38,"h6"),a(39,"The Request URL"),c(),l(40,"pre")(41,"code",5),a(42,"$scheme = $httpContext->Request->Url->Scheme;\n$host = $httpContext->Request->Url->Host->Name;\n$port = $httpContext->Request->Url->Host->Port;\n$path = $httpContext->Request->Url->Path;"),c()(),y(43,"br"),l(44,"h6"),a(45,"The Request Query"),c(),l(46,"pre")(47,"code",5),a(48,"$query = $httpContext->Request->Url->Query;\n$value = $query->getValue('name');"),c()(),l(49,"h6"),a(50,"The Request Form"),c(),l(51,"pre")(52,"code",5),a(53,"$form = $httpContext->Request->Form;\n$value = $form->getValue('name');"),c()(),y(54,"br"),l(55,"h6"),a(56,"The Request From Files"),c(),l(57,"pre")(58,"code",5),a(59,"$files = $httpContext->Request->Form->Files;\n$file = $files->getFile('name');\n \n$file->copyTo('path');"),c()(),y(60,"br"),l(61,"h6"),a(62,"The Request Headers"),c(),l(63,"pre")(64,"code",5),a(65,"$headers = $httpContext->Request->Headers;\n$values = $headers->getValues('name');\n$value = $values[0];"),c()(),y(66,"br"),l(67,"h6"),a(68,"The Request Cookies"),c(),l(69,"pre")(70,"code",5),a(71,"$cookies = $httpContext->Request->Cookies;\n$value = $cookies->getValue('name');"),c()(),y(72,"br"),l(73,"h4"),a(74,"Http Response"),c(),l(75,"p",4),a(76," You can access the "),l(77,"code"),a(78,"HttpResponse"),c(),a(79," property from the "),l(80,"code"),a(81,"HttpContext"),c(),a(82," and set the HTTP response data as shown below. "),c(),l(83,"h6"),a(84,"Adding Response Header"),c(),l(85,"pre")(86,"code",5),a(87,"$httpContext->Response->Headers->add('name', 'value', replace: true);"),c()(),y(88,"br"),l(89,"h6"),a(90,"Adding Response Cookie"),c(),l(91,"pre")(92,"code",5),a(93,"$options = new \\DevNet\\Http\\Message\\CookieOptions(expires: new DateTime('7 days'), path: '/');\n$httpContext->Response->Cookies->add('name', 'value', $options);"),c()(),y(94,"br"),l(95,"h6"),a(96,"Writing Response Content"),c(),l(97,"pre")(98,"code",5),a(99,"$httpContext->Response->Body->write('content');"),c()(),y(100,"br"),l(101,"h6"),a(102,"Writing Response Content Asynchronously"),c(),l(103,"pre")(104,"code",5),a(105,"$task = $httpContext->Response->writeAsync('content');\n$task = $httpContext->Response->writeJsonAsync($object);"),c()(),y(106,"br"),l(107,"h6"),a(108,"Send Redirect Response"),c(),l(109,"pre")(110,"code",5),a(111,"$httpContext->Response->redirect('path');"),c()(),y(112,"br"),l(113,"h6"),a(114,"Set Response Status Code"),c(),l(115,"pre")(116,"code",5),a(117,"$httpContext->Response->setStatusCode(403);"),c()(),y(118,"br"),l(119,"h4"),a(120,"Http Client"),c(),l(121,"p",4),a(122," DevNet Provides a "),l(123,"code"),a(124,"HttpClient"),c(),a(125," class for sending HTTP requests to a web API server and receiving back HTTP responses. "),c(),l(126,"pre")(127,"code",5),a(128,"requestAsync('GET', 'www.example.com');\n $response = await($task);\n $content = null;\n while(!$response->Body->EndOfStream) {\n $content .= await($response->Body->readAsync(1024));\n }\n return $content;\n});\n\n$task = $action();"),c()(),y(129,"br"),l(130,"h6"),a(131,"Send request content"),c(),l(132,"pre")(133,"code",5),a(134,"$form = \"Username=john_doe&Password=123456\";\n$content = new HttpRequestContent('application/x-www-form-urlencoded', $form);\n$task = $client->requestAsync('POST', 'www.example.com', $content);"),c()(),y(135,"br"),l(136,"h6"),a(137,"Send HTTP method request using short calls"),c(),l(138,"pre")(139,"code",5),a(140,"$task = $client->getRequestAsync('www.example.com', $requestContent);\n$task = $client->postRequestAsync('www.example.com', $requestContent);\n$task = $client->putRequestAsync('www.example.com', $requestContent);\n$task = $client->deleteRequestAsync('www.example.com', $requestContent);"),c()(),y(141,"br"),l(142,"h6"),a(143,"Send get request that returns response content"),c(),l(144,"pre")(145,"code",5),a(146,"$task = $client->getStringAsync('www.example.com');"),c()()(),l(147,"nav",6)(148,"ul",7)(149,"li",8)(150,"a",9),y(151,"i",10),a(152," Previous "),c()(),l(153,"li",8)(154,"a",11),a(155," Next "),y(156,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/middleware",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-middleware"]],decls:92,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/middleware.svg","alt","Web app home page","width","100%","height","auto"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/core/http",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/routing",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Middleware"),c(),y(8,"hr"),l(9,"p"),a(10," Middlewares are software components that are chained into the application pipeline to handle HTTP requests and responses, Each middleware component in the request pipeline is responsible for invoking the next component called Request Delegate, till reaching the endpoint of the application, and can perform work before and after the next component in the pipeline or short-circuiting the chain to prevent the next middlewares from processing the request. "),c(),l(11,"p"),a(12," The following diagram represents the DevNet request pipeline, which consists of a sequence of request delegates, called one after the other. "),c(),y(13,"br")(14,"img",4)(15,"br")(16,"br")(17,"br"),l(18,"p"),a(19," The following code represents an example of a middleware class called "),l(20,"code"),a(21,"RedirectMiddleware"),c(),a(22,", it redirects the old URL requested that has been changed permanently to the new URL before the request gets to the Router middleware. "),c(),l(23,"pre")(24,"code",5),a(25,'Request->Uri->Path == "/old/path") {\n $context->Response->setStatusCode(301);\n $context->Response->redirect("/new/path");\n return;\n }\n // Await next request delegate to chain the pipeline to the next middleware or endpoint.\n await($next($context));\n // Logging or other works can be done here after calling the next request delegate.\n }\n}'),c()(),y(26,"br"),l(27,"h3"),a(28,"Registering Middlewares"),c(),l(29,"p"),a(30," Inside the method "),l(31,"code"),a(32,"WebHost::start(Closure $configure)"),c(),a(33,", middlewares can be registered to the pipeline as a class that implements the interface "),l(34,"code"),a(35,"DevNet\\Http\\Middleware\\IMiddleware"),c(),a(36," or as an in-line middleware defined by an anonymous async function, with the help of the following methods: "),c(),l(37,"ul")(38,"li")(39,"code"),a(40,"ApplicationBuilder::use(callable $middleware)"),c()(),l(41,"li")(42,"code"),a(43,"ApplicationBuilderExtensions::useMiddleware(string $middleware, ...$args)"),c()()(),l(44,"pre")(45,"code",5),a(46,"start(function ($app) {\n $app->UseExceptionHandler();\n\n // Using middleware class\n $app->useMiddleware(RedirectMiddleware::class);\n $app->useRouter();\n\n // Using in-line middleware\n $app->use(async(function($context, $next) { //;\n // Some works can be done here before calling the next request delegate.\n await($next($context));\n // Other works can be done here after calling the next request delegate.\n }));\n\n // Other middlewares can be used here.\n\n $app->useEndpoint(function($routes) {\n // Routes\n });\n});"),c()(),y(47,"br"),l(48,"h3"),a(49,"Built-in middlewares"),c(),l(50,"table",6)(51,"thead")(52,"tr")(53,"th",7),a(54,"Method"),c(),l(55,"th",7),a(56,"Description"),c()()(),l(57,"tbody")(58,"tr")(59,"td")(60,"code"),a(61,"ApplicationBuilder::useExceptionHandler()"),c()(),l(62,"td"),a(63,"add ExceptionHandler middleware to the pipeline"),c()(),l(64,"tr")(65,"td")(66,"code"),a(67,"ApplicationBuilder::useRouter()"),c()(),l(68,"td"),a(69,"add Router matcher middleware to the pipeline"),c()(),l(70,"tr")(71,"td")(72,"code"),a(73,"ApplicationBuilder::useAuthentication()"),c()(),l(74,"td"),a(75,"add Authentication middleware to the pipeline"),c()(),l(76,"tr")(77,"td")(78,"code"),a(79,"ApplicationBuilder::useEndpoint()"),c()(),l(80,"td"),a(81,"add Endpoint dispatcher middleware to the pipeline"),c()()()()(),l(82,"nav",8)(83,"ul",9)(84,"li",10)(85,"a",11),y(86,"i",12),a(87," Previous "),c()(),l(88,"li",10)(89,"a",13),a(90," Next "),y(91,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/routing",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-routing"]],decls:200,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col",1,"col-md-6"],["scope","col",1,"col-md-4"],["scope","col",1,"col-3"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/middleware",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/controller",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Routing"),c(),y(8,"hr"),l(9,"p"),a(10," The router is a component responsible for matching incoming HTTP requests and dispatching those requests to the app's executable endpoints, which are executable actions responsible for request-handling, defined and configured in the application builder, and selected and executed when request URL matches a defined URL Pattern called Route Template. "),c(),l(11,"p"),a(12," The endpoint matching process can also filter HTTP requests by allowing restraint HTTP Verbs and can extract values from the request's URL and provide those values for request processing."),y(13,"br"),a(14," Routing is also able to generate URLs that map to endpoints. "),c(),l(15,"h3"),a(16,"Routing basics"),c(),l(17,"p"),a(18," Router is registered in the middleware pipeline in the "),l(19,"code"),a(20,"start()"),c(),a(21," method of "),l(22,"code"),a(23,"WebHost"),c(),a(24," class."),y(25,"br"),a(26," by using a pair of middleware, defined by "),l(27,"code"),a(28,"useRouter()"),c(),a(29," and "),l(30,"code"),a(31,"useEndpoint(RouteCollection $routes)"),c(),a(32," methods: "),c(),l(33,"ul")(34,"li")(35,"b"),a(36,"UseRouter"),c(),a(37," adds route matching middleware to the middleware pipeline, and this middleware looks at the set of endpoints defined in the App and selects the best match based on the request. "),c(),l(38,"li")(39,"b"),a(40,"UseEndpoint"),c(),a(41," adds endpoint execution middleware to the middleware pipeline, which runs the request delegate associated with the selected endpoint. "),c()(),l(42,"p"),a(43," The following code below shows a basic routing example, write "),l(44,"code"),a(45,'"Hello World!"'),c(),a(46," to the HTTP response when an HTTP GET request is sent to the root URL "),l(47,"code"),a(48,'"/"'),c(),a(49,", which is By default is "),l(50,"code"),a(51,"https://localhost:8000/"),c(),y(52,"br"),a(53," else If the request doesn't match any route, an HTTP 404 page not found is returned. "),c(),l(54,"pre")(55,"code",4),a(56,'start(function ($app) {\n $app->UseExceptionHandler();\n $app->useRouter();\n // Additional middlewares here\n $app->useEndpoint(function ($routes) {\n // Routes\n $routes->mapGet("/", fn () => "Hello World!");\n });\n});'),c()(),l(57,"p"),a(58," The following table shows the available routing methods and their descriptions. "),c(),l(59,"table",5)(60,"thead")(61,"tr")(62,"th",6),a(63,"Methods"),c(),l(64,"th",7),a(65,"Description"),c()()(),l(66,"tbody")(67,"tr")(68,"td")(69,"code"),a(70,"mapGet(string $pattern callable $handler)"),c()(),l(71,"td"),a(72,"Route that matches HTTP GET request for the specified path."),c()(),l(73,"tr")(74,"td")(75,"code"),a(76,"mapPost(string $pattern, callable $handler)"),c()(),l(77,"td"),a(78,"Route that matches HTTP POST request for the specified path."),c()(),l(79,"tr")(80,"td")(81,"code"),a(82,"mapPut(string $pattern, callable $handler)"),c()(),l(83,"td"),a(84,"Route that matches HTTP PUT request for the specified path."),c()(),l(85,"tr")(86,"td")(87,"code"),a(88,"mapDelete(string $pattern, callable $handler)"),c()(),l(89,"td"),a(90,"Route that matches HTTP DELETE request for the specified path."),c()(),l(91,"tr")(92,"td")(93,"code"),a(94,"mapPatch(string $pattern, callable $handler)"),c()(),l(95,"td"),a(96,"Route that matches HTTP PATCH request for the specified path."),c()(),l(97,"tr")(98,"td")(99,"code"),a(100,"mapRoute(string $pattern, callable $handler, ?string $verb = null)"),c()(),l(101,"td"),a(102,"Route that matches HTTP request for the specified path and HTTP method, or any HTTP method if it's not specified."),c()()()(),y(103,"br"),l(104,"h3"),a(105,"Async Handler"),c(),l(106,"p"),a(107," DevNet route can accept the Request Handler as an async function to handle the HTTP request asynchronously, like in the following example: "),c(),l(108,"pre")(109,"code",4),a(110,"useEndpoint(function($routes) {\n $routes->mapGet(\"/\", async(function(HttpContext $context) {\n $client = new HttpClient();\n $content = await($client->getStringAsync('www.example.com'));\n await($context->Response->writeAsync($content));\n }));\n});"),c()(),y(111,"br"),l(112,"h3"),a(113,"Route Template"),c(),l(114,"p"),a(115," A route template is a string pattern composed of segments, separated by a slash "),l(116,"code"),a(117,'"/"'),c(),a(118," used to define how the endpoint matches the URL Path, by splitting the URL path into segments and matching each segment with the route pattern segment in the same corresponding order. "),c(),l(119,"p"),a(120," The segment pattern can be literal or parameter enclosed in curly brackets "),l(121,"code"),a(122,'"{ }"'),c(),a(123," to hold a potential value of its corresponding matched URL segment, and this parameter can be mandatory or optionally by adding interrogation point "),l(124,"code"),a(125,'"?"'),c(),a(126," or it can have a default value using the equal sign "),l(127,"code"),a(128,'"="'),c(),a(129," after the route parameter name followed by a value. "),c(),l(130,"p"),a(131," The following code example shows a simple get route with a callback request handler, that retrieves the value of the parameter "),l(132,"code"),a(133,"{id}"),c(),a(134," from "),l(135,"code"),a(136,"HttpContext"),c(),a(137," to look for a product in the repository and then returns the data as a JSON response. "),c(),l(138,"pre")(139,"code",4),a(140,'...\n$app->useEndpoint(function($routes) {\n $routes->mapGet("/api/products/{id?}", function(HttpContext $context) {\n $id = $context->Request->RouteValues["id"];\n $product = ProductRepository::find($id);\n return $context->Response->writeJsonAsync($product);\n });\n});'),c()(),l(141,"p"),a(142," The following table demonstrates a list of route templates examples: "),c(),l(143,"table",5)(144,"thead")(145,"tr")(146,"th",8),a(147,"Route template"),c(),l(148,"th",8),a(149,"Matching URL example"),c()()(),l(150,"tbody")(151,"tr")(152,"td"),a(153,"/contact"),c(),l(154,"td"),a(155,"/contact"),c()(),l(156,"tr")(157,"td"),a(158,"/{language}/shop"),c(),l(159,"td"),a(160,"/en/shop"),c()(),l(161,"tr")(162,"td"),a(163,"/posts/{title?}"),c(),l(164,"td"),a(165,"/posts or /posts/my-post"),c()(),l(166,"tr")(167,"td"),a(168,"/{page=home}"),c(),l(169,"td"),a(170,"/ or /about"),c()()()(),l(171,"blockquote",9)(172,"b"),a(173,"Important:"),c(),a(174," The order of the routes is important, if a route matches the request URL, it will not check the next route, so make sure to not put a route with a greedy pattern at the top, because it will catch all the URLs. "),c(),y(175,"br"),l(176,"h3"),a(177,"Attribute Routing"),c(),l(178,"p"),a(179," Attribute routing is a technique that allows routes to be defined directly on the controller actions by using attributes that specify the URL patterns and HTTP methods that match the HTTP requests, giving more control and flexibility over the routing behavior. "),c(),l(180,"p"),a(181," The following code example shows how to map routes to MVC controllers. "),c(),l(182,"pre")(183,"code",4),a(184,"...\n$app->useEndpoint(function($routes) {\n $routes->mapControllers();\n});"),c()(),l(185,"p"),a(186," Then, you can use attributes to decorate your controller's action methods with their associated routes. "),c(),l(187,"pre")(188,"code",4),a(189,"view();\n }\n\n // Accept only the HTTP method GET.\n #[Route(path: '/contact', method: 'GET')]\n public function contact(): IActionResult\n {\n return $this->view();\n }\n\n // Accept only the HTTP method POST.\n #[Route(path: '/contact/submit', method: 'POST')]\n public function submit(string $subject, string $message): IActionResult\n {\n mail(\"email@example.com\", $subject, $message);\n return $this->statusCode(200);\n }\n}"),c()()(),l(190,"nav",10)(191,"ul",11)(192,"li",12)(193,"a",13),y(194,"i",14),a(195," Previous "),c()(),l(196,"li",12)(197,"a",15),a(198," Next "),y(199,"i",16),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/controller",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-controller"]],decls:179,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/mvc.svg","alt","Web app home page","width","80%","height","auto"],[1,"language-shell"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/routing",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/view",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Controller"),c(),y(8,"hr"),l(9,"p"),a(10," A controller is one of the important components of the architectural pattern MVC (Model View Controller) which helps to achieve the separation of concerns, it is the brain of the application that controls how the data is displayed, where each browser request is mapped to a particular method of a particular controller class called Action, and this action will handle the HTTP request and return data as HTTP response via the view engine. "),c(),y(11,"img",4)(12,"br")(13,"br")(14,"br"),l(15,"h3"),a(16,"Adding Controller Class"),c(),l(17,"p"),a(18," Controller class can be created manually or by using the devnet command-line: "),c(),l(19,"pre")(20,"code",5),a(21,"devnet add controller --name HomeController"),c()(),l(22,"p"),a(23," The class below represent an example of a controller class named "),l(24,"code"),a(25,"HomeController"),c(),a(26," extends a "),l(27,"code"),a(28,"Controller"),c(),a(29," base class to inherit some MVC features, and has one action method called "),l(30,"code"),a(31,"index()"),c(),a(32," that returns an instance of "),l(33,"code"),a(34,"IActionResult"),c(),a(35,", with a content of "),l(36,"samp"),a(37,'"Hello World!"'),c(),a(38," as a response."),y(39,"br"),c(),l(40,"pre")(41,"code",6),a(42,"content(\"Hello World!\");\n }\n}"),c()(),y(43,"br"),l(44,"h3"),a(45,"Action Result"),c(),l(46,"p"),a(47," The action result represents the result of the action method, which returns a HTTP response. "),c(),l(48,"p"),a(49," The following table shows a list of controller methods that return an action result for different kinds of responses: "),c(),l(50,"table",7)(51,"thead")(52,"tr")(53,"th",8),a(54,"Method"),c(),l(55,"th",8),a(56,"Description"),c()()(),l(57,"tbody")(58,"tr")(59,"td")(60,"code"),a(61,"view(object|array $data, ?string $name): IActionResult"),c()(),l(62,"td"),a(63,"Return HTML content result"),c()(),l(64,"tr")(65,"td")(66,"code"),a(67,"json(object|array $data): IActionResult"),c()(),l(68,"td"),a(69,"Return JSON data result"),c()(),l(70,"tr")(71,"td")(72,"code"),a(73,"content(string $content, ?string $contentType): IActionResult"),c()(),l(74,"td"),a(75,"Return text content result"),c()(),l(76,"tr")(77,"td")(78,"code"),a(79,"file(string $path, ?string $contentType): IActionResult"),c()(),l(80,"td"),a(81,"Return HTML content result"),c()(),l(82,"tr")(83,"td")(84,"code"),a(85,"redirect(string $url): IActionResult"),c()(),l(86,"td"),a(87,"Redirect the request to the giving path"),c()(),l(88,"tr")(89,"td")(90,"code"),a(91,"statusCode(int $code): IActionResult"),c()(),l(92,"td"),a(93,"Return HTTP status code result"),c()()()(),y(94,"br"),l(95,"h3"),a(96,"Async Action"),c(),l(97,"p"),a(98," DevNet Controller can use async method to handle the HTTP request asynchronously. "),c(),l(99,"pre")(100,"code",6),a(101,"content($content);\n }\n}"),c()(),y(102,"br"),l(103,"h3"),a(104,"Model binding"),c(),l(105,"p"),a(106," Model Bidding is a mechanism that retrieves data from the HTTP request and provides it to the controller action method parameters as simple data types or updates the data into the properties of a complex type parameter. "),c(),l(107,"p"),a(108," It automates the process of retrieving data from various sources, such as: "),c(),l(109,"ul")(110,"li"),a(111,"Route data."),c(),l(112,"li"),a(113,"Query strings."),c(),l(114,"li"),a(115,"Form fields."),c(),l(116,"li"),a(117,"Uploaded files."),c()(),l(118,"h4"),a(119,"Simple type binding"),c(),l(120,"p"),a(121," Simple model bidding is a technique that automatically assigns values to the controller action method parameters that have the same names as the request data and are of simple types such as string, int, or bool, etc. "),c(),l(122,"p"),a(123," The following example shows how the Model Binder maps the route data and query string to the controller action method parameters of simple types. "),c(),l(124,"pre")(125,"code",6),a(126,"content(\"Excerpt from the content of the post: {$id}\");\n }\n\n return $this->content(\"The full content of the post: {$id}\");\n }\n}"),c()(),l(127,"p"),a(128," Assuming the user requests the following URL: "),l(129,"samp"),a(130,'"/posts/1/?excerpt=true"'),c(),y(131,"br"),a(132," The model binder will retrieve the value "),l(133,"code"),a(134,"1"),c(),a(135," from the route data and provide it to the "),l(136,"code"),a(137,"$id"),c(),a(138," parameter and the value "),l(139,"code"),a(140,"true"),c(),a(141," from the query string to the "),l(142,"code"),a(143,"$excerpt"),c(),a(144," parameter. "),c(),y(145,"br"),l(146,"h4"),a(147,"Complex type binding"),c(),l(148,"p"),a(149," The complex-type binding is an automatic way of mapping the request data to the public properties of an object that is passed as a parameter to a controller action method. This provides easy access to the data of the HTTP request without having to parse it manually. "),c(),l(150,"p"),a(151," The code example below shows a controller with a "),l(152,"code"),a(153,"send()"),c(),a(154," action method that accepts a complex type parameter of type "),l(155,"code"),a(156,"Contact"),c(),a(157,", where the Model Binder automatically populates the request form data into the public properties of the Contact object, which is used to validate the data before sending it via email when the user submits the contact form. "),c(),l(158,"pre")(159,"code",6),a(160,"isValid()) {\n return $this->content(\"All required fields must be filled out!\");\n }\n\n mail(\"email@example.com\", $form->Subject, $form->Message);\n return $this->statusCode(200);\n }\n}"),c()(),l(161,"p"),a(162," And here is the code for the "),l(163,"code"),a(164,"Contact"),c(),a(165," model that is used as a parameter in the controller action method.\n"),c(),l(166,"pre")(167,"code",6),a(168,"Subject) && isset($this->Message)) {\n return true\n }\n\n return false;\n }\n}"),c()()(),l(169,"nav",9)(170,"ul",10)(171,"li",11)(172,"a",12),y(173,"i",13),a(174," Previous "),c()(),l(175,"li",11)(176,"a",14),a(177," Next "),y(178,"i",15),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/view",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-view"]],decls:240,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php-template"],[1,"alert","alert-warning"],[1,"language-php"],[1,"alert","alert-info"],["target","_blank","href","https://www.php.net/manual/en/control-structures.alternative-syntax.php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/controller",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/filter",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Views"),c(),y(8,"hr"),l(9,"p"),a(10," Views are the presentation details of the user\u2019s interaction, in form of HTML templates with minimal of embedded PHP code that generate content to send to the client, views are "),l(11,"samp"),a(12,".phtml"),c(),a(13," files stored by default in a Views folder at the root of the application, typically each controller will have its own folder, in which are views for specific controller actions. "),c(),l(14,"p"),a(15," By convention, all the views stored in the folder called "),l(16,"b"),a(17,'"Views"'),c(),a(18,", grouped into sub-folders have the same name as the the name of the controller they belong to, and each view file has the same name as the name of the action that return it. "),c(),l(19,"p"),a(20," The following code represent a view template with a sample HTML code, stored in "),l(21,"code"),a(22,'"/Views/Home/index.phtml"'),c(),y(23,"br"),a(24," assuming that the controller name is "),l(25,"b"),a(26,'"Home"'),c(),a(27," and the action name is "),l(28,"b"),a(29,'"index"'),c(),a(30,". "),c(),l(31,"pre")(32,"code",4),a(33,'\n\n\n \n \n <?= $viewName ?>\n\n\n

Hello World!

\n\n'),c()(),l(34,"blockquote",5)(35,"b"),a(36,"Important:"),c(),a(37," DevNet view engine uses its own PHP short tag syntax "),l(38,"code"),a(39,""),c(),a(40," without causing any conflict with XML tags, and there is no need to enable it in "),l(41,"samp"),a(42,'"php.ini"'),c()(),y(43,"br"),l(44,"h3"),a(45,"Returning the View"),c(),l(46,"p"),a(47," Typically views are returned from actions as a "),l(48,"code"),a(49,"ViewResult"),c(),a(50,", which is a type of "),l(51,"code"),a(52,"IActionResult"),c(),a(53,", the Action method can create and return a ViewResult directly, but that isn't commonly done, since controllers inherit from Controller base class, you simply use the method "),l(54,"code"),a(55,"view()"),c(),a(56," to return the ViewResult. "),c(),l(57,"pre")(58,"code",6),a(59,"view();\n }\n}"),c()(),y(60,"br"),l(61,"h4"),a(62,"Returning Explicit View"),c(),l(63,"p"),a(64," If your view doesn't follow the naming convention, you can return an explicit view, by passing a string argument to view method that define a relative path to the view file without the extension file "),l(65,"samp"),a(66,'".phtml"'),c()(),l(67,"p"),a(68," The following code shows an example of controller with action "),l(69,"code"),a(70,"index"),c(),a(71," that returns a content of an explicit view called "),l(72,"samp"),a(73,'"home.phtml"'),c(),a(74,", belong to the folder "),l(75,"samp"),a(76,'"Template"'),c()(),l(77,"pre")(78,"code",6),a(79,'view(name: "Template/home");\n }\n}'),c()(),y(80,"br"),l(81,"h3"),a(82,"Passing data to the view"),c(),l(83,"p"),a(84," The view data is an MVC communication mechanism for passing data from the controller's action method to the view. The data is passed as a key-value array argument and can then be retrieved in the view by accessing its corresponding keys in the ViewData property or by using variables with the same names as the keys. "),c(),l(85,"p"),a(86," Here is an example of a controller that passes key-value data to the view. "),c(),l(87,"pre")(88,"code",6),a(89," 'MySite',\n 'page' => 'Home'\n ];\n return $this->view($data);\n }\n}"),c()(),l(90,"p"),a(91," And here is an example of a view that retrieves the passed data by accessing the keys of the ViewData property. "),c(),l(92,"pre")(93,"code",4),a(94,'\n\n\n \n \n <?= $this->ViewData[\'site\'] . \'-\' . $this->ViewData[\'page\'] ?><title>\n ...\n'),c()(),l(95,"p"),a(96," Or, retrieve the view data as variables with the same names as the keys of the ViewData property. "),c(),l(97,"pre")(98,"code",4),a(99,'<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title><?= $site . \'-\' . $page ?><title>\n ...\n'),c()(),y(100,"br"),l(101,"h3"),a(102,"Layout"),c(),l(103,"p"),a(104," The layout or master page is common UI (User Interface) a template of common HTML elements that remains the same throughout the application, such as header, navigation bar, or footer section, to reduce duplicate code in views and make it easy to maintain. "),c(),l(105,"p"),a(106," By default layouts placed in the folder "),l(107,"samp"),a(108,'"/views/layouts"'),c(),a(109," and, an individual views can specify a layout by calling the method "),l(110,"code"),a(111,"layout(string $layoutName)"),c(),a(112,", the string parameter "),l(113,"code"),a(114,"$layoutName"),c(),a(115," define the relative path to the layout file without the extension file "),l(116,"samp"),a(117,'".phtml"'),c(),a(118," as shown in the following example: "),c(),l(119,"pre")(120,"code",4),a(121,"<? $this->layout('Shared/layout') ?>\n \n<h1>Hello World!</h1>"),c()(),l(122,"p"),a(123," Layout can include the view contents, by calling the method "),l(124,"code"),a(125,"renderBody()"),c(),a(126," and wherever the call to this method is placed, the contents of the view will be rendered. "),c(),l(127,"p"),a(128," In this example the view engin catch the content "),l(129,"code"),a(130,"<h1>Hello World!</h1>"),c(),a(131," of the view and rendered it into the body of the layout where the method "),l(132,"code"),a(133,"renderBody()"),c(),a(134," is called. "),c(),l(135,"pre")(136,"code",4),a(137,'<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <link rel="stylesheet" type="text/css" href="/css/style.css" />\n <title>DevNet\n\n\n
\n \n
\n
\n renderBody() ?>\n
\n\n'),c()(),y(138,"br"),l(139,"h4"),a(140,"Partial views"),c(),l(141,"p"),a(142," A partial view is a reusable portion of the layout, which means Layout can be split into many files that contains HTML code, It can be used in one or more views or layout views, You can use the same partial view at multiple places and eliminates the redundant code. "),c(),l(143,"pre")(144,"code",4),a(145,'\n\n\n \n \n \n DevNet\n\n\n
\n renderPartial(\'Shared/navbar\') ?>\n
\n
\n renderBody() ?>\n
\n\n'),c()(),l(146,"p"),a(147," The code below is the content of the partial view in separated file: "),l(148,"samp"),a(149,'"/Views/layouts/navbar.phtml"'),c(),a(150,". "),c(),l(151,"pre")(152,"code",4),a(153,''),c()(),y(154,"br"),l(155,"h4"),a(156,"Sections"),c(),l(157,"p"),a(158," Sections provide a dynamic way to organize where certain page elements should be placed, unlike the partial view which they remains the same throughout all the application, sections can be changed for each view. "),c(),l(159,"p"),a(160," To be able to use a section in a layout, we must first define a section in the view, by writing a block of content between the methods "),l(161,"code"),a(162,"section(string $sectionName)"),c(),a(163," and "),l(164,"code"),a(165,"endSection()"),c(),a(166," and give a ane to the section, which help us later to select which section to be rendered in the layout. "),c(),l(167,"pre")(168,"code",4),a(169,"layout('Shared/layout') ?>\n \n

Hello World!

\n\nsection('sidebar') ?>\n
    \n
  • \n
  • \n
\nendSection() ?>"),c()(),l(170,"p"),a(171," A layout can include one or more view sections, by calling the method "),l(172,"code"),a(173,"RenderSection(string $sectionName)"),c(),a(174," with specifying the name of the section be rendered, and where the call of this method is placed, the view section contents will be rendered. "),c(),l(175,"pre")(176,"code",4),a(177,'\n\n\n \n \n \n DevNet\n\n\n
\n renderPartial(\'Shared/navbar\') ?>\n
\n
\n \n
\n renderBody() ?>\n
\n
\n\n'),c()(),y(178,"br"),l(179,"h3"),a(180,"The control structures"),c(),l(181,"p"),a(182," DevNet view engine uses the PHP alternative syntax for control structures, such as "),l(183,"code"),a(184,"if"),c(),a(185,", "),l(186,"code"),a(187,"while"),c(),a(188,", "),l(189,"code"),a(190,"for"),c(),a(191,", "),l(192,"code"),a(193,"foreach"),c(),a(194,", and "),l(195,"code"),a(196,"switch"),c(),a(197,", which use the colon ("),l(198,"code"),a(199,":"),c(),a(200,") instead of opening brace and the "),l(201,"code"),a(202,"endif;"),c(),a(203,", "),l(204,"code"),a(205,"endwhile;"),c(),a(206,", "),l(207,"code"),a(208,"endfor;"),c(),a(209,", "),l(210,"code"),a(211,"endforeach;"),c(),a(212,", or "),l(213,"code"),a(214,"endswitch;"),c(),a(215,", respectively, instead of the closing brace. "),c(),l(216,"p"),a(217," The following example uses the alternative syntax of the "),l(218,"code"),a(219,"if"),c(),a(220," statement to display different navbars based on the user's authentication status, where the user identity is injected into the view by default when using the MVC controller. "),c(),l(221,"pre")(222,"code",4),a(223,'\n\n\n \n \n \n DevNet\n\n\n
\n User->isAuthenticated()): ?>\n renderPartial(\'Shared/authenticatedUserNavbar\') ?>\n \n renderPartial(\'Shared/anonymousUserNavbar\') ?>\n \n
\n
\n renderBody() ?>\n
\n\n'),c()(),l(224,"blockquote",7)(225,"b"),a(226,"Note:"),c(),a(227," For more information about the PHP alternative syntax, you can visit the PHP documentation website "),l(228,"a",8),a(229,"here"),c()()(),l(230,"nav",9)(231,"ul",10)(232,"li",11)(233,"a",12),y(234,"i",13),a(235," Previous "),c()(),l(236,"li",11)(237,"a",14),a(238," Next "),y(239,"i",15),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/filter",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-filter"]],decls:67,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/layout",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/exception",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Action Filters"),c(),y(8,"hr"),l(9,"p"),a(10," Action Filters are similar to Middlewares, they allow code to be run before or after specific stages in the request processing pipeline and can choose to short-circuit the pipeline or pass the request to the next filter or the endpoint action, but the difference is that the action filters are invoked after the dispatcher selects the action to execute, just before and after the execution of the action. "),c(),l(11,"p"),a(12," The following code example represents an action filter class called "),l(13,"code"),a(14,"AuthenticationFilter"),c(),a(15," that prevents accessing the requested resources if the user is not authenticated. "),c(),l(16,"pre")(17,"code",4),a(18,"HttpContext->User) {\n $context->HttpContext->Response->setStatusCode(401);\n return;\n }\n // Await next action delegate to chain the pipeline to the next filter before executing the action.\n await($next($context));\n // Logging or other works can be done here after executing the action.\n }\n}\n"),c()(),y(19,"br"),l(20,"h3"),a(21,"Registering action filters"),c(),l(22,"p"),a(23," The code example below shows how to add action filters to the route endpoint handler as class or as an anonymous async function, with the help of the method "),l(24,"code"),a(25,"RouteHandler::addFilter(callable|string $filter, ...$args)"),c()(),l(26,"pre")(27,"code",4),a(28,'start(function ($app) {\n // Middlewares\n $app->UseExceptionHandler();\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n $routes->mapGet("/users", function ($httpContext) {\n // Code...\n })\n // Adding action filter class.\n ->addFilter(AuthenticationFilter::class)\n\n // Adding in-line action filter as anonymous async function.\n ->addFilter(async(function ($actionContext, $next)) {\n // Some works can be done here before executing the action.\n await($next);\n // Other works can be done here after executing the action.\n }));\n\n // Other routes.\n });\n});'),c()(),l(29,"p"),a(30," You can apply the action filter to a controller using the attribute syntax and decorate the controller class or the action method with the filter name, as shown in the following code example.\n"),c(),l(31,"pre")(32,"code",4),a(33,"view();\n }\n\n // This filter will be applied only to this action method.\n #[Validate]\n #[Route(path: '/user/create', method: 'POST')]\n public function create(Profile $form): IActionResult\n {\n // Code...\n }\n}\n"),c()(),y(34,"br"),l(35,"h3"),a(36,"Built-in filters"),c(),l(37,"table",5)(38,"thead")(39,"tr")(40,"th",6),a(41,"Filter"),c(),l(42,"th",6),a(43,"Description"),c()()(),l(44,"tbody")(45,"tr")(46,"td")(47,"code"),a(48,"DevNet\\Core\\Endpoint\\Filters\\Authorize"),c()(),l(49,"td"),a(50,"Prevent a non-authorized user from accessing the resources."),c()(),l(51,"tr")(52,"td")(53,"code"),a(54,"DevNet\\Core\\Endpoint\\Filters\\ValidateAntiForgery"),c()(),l(55,"td"),a(56,"Prevent Cross-Site Request Forgery"),c()()()()(),l(57,"nav",7)(58,"ul",8)(59,"li",9)(60,"a",10),y(61,"i",11),a(62," Previous "),c()(),l(63,"li",9)(64,"a",12),a(65," Next "),y(66,"i",13),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/dependency",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-dependency"]],decls:161,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/exception",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/overview",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Dependency Injection"),c(),y(8,"hr"),l(9,"p"),a(10," Dependency injection (DI) is a technique for achieving loose coupling between objects and dependencies rather than directly instantiating dependencies or using static references, most often the dependency objects are provided to the class which depends on, via constructor injection declaration, allowing them to follow the Explicit Dependencies Principle. "),c(),l(11,"p"),a(12," The following code represents a class "),l(13,"code"),a(14,"MyService"),c(),a(15," that depends on the class "),l(16,"code"),a(17,"MyDependency"),c(),a(18,", which will be injected automatically into its constructor by the service container. "),c(),l(19,"pre")(20,"code",4),a(21,"Dependency = $dependency;\n }\n}\n"),c()(),y(22,"br"),l(23,"h2"),a(24,"Service Container"),c(),l(25,"p"),a(26," Service Container is an implementation of Dependency Injection Container (aka Inversion of Controller Container), a system that implements an automatic dependency injection, it creates an object of the specified class as a service and injects all the dependency objects through their constructor by its type and manages its lifetime, whether Transient or Singleton lifetime. "),c(),l(27,"h5"),a(28,"Transient"),c(),l(29,"p"),a(30," Transient lifetime services are created each time they're requested from the service container. This lifetime works best for lightweight, stateless services. "),c(),l(31,"h5"),a(32,"Singleton"),c(),l(33,"p"),a(34," Singleton lifetime services are created only once, and Every subsequent request uses the same instance in the application life cycle. "),c(),l(35,"h2"),a(36,"Registering services"),c(),l(37,"p"),a(38," Typically the method "),l(39,"code"),a(40,"WebHostBuilder::register(IServiceCollection $services)"),c(),a(41," is responsible for defining the services that will be used throw your application without hard coding, and you can add services to the container with complex dependencies by using one of the following methods: "),c(),l(42,"ul")(43,"li")(44,"code"),a(45,"IServiceCollection::addSingleton(String $serviceType, String|Object|Closure $service);"),c()(),l(46,"li")(47,"code"),a(48,"IServiceCollection::addTransient(String $serviceType, String|Object|Closure $service);"),c()()(),l(49,"p"),a(50," Services are defined by the same service type class, parent class, or interface that the service is implementing, which will be used later to call the service from the service provider. "),c(),l(51,"p"),a(52," The following code shows an example of registering two services, "),l(53,"code"),a(54,"MyDependency"),c(),a(55," registered with Transient lifetime, defined by the same service type, and "),l(56,"code"),a(57,"MyService"),c(),a(58," with singleton lifetime defined by "),l(59,"code"),a(60,"IMyService"),c(),a(61," interface: "),c(),l(62,"pre")(63,"code",4),a(64,"register(function ($services) {\n // Adding services\n $services->addTransient(MyDependency::class);\n $services->addSingleton(IMyService::class, MyService::class);\n });\n ...\n }\n}\n"),c()(),y(65,"br"),l(66,"h3"),a(67,"Registering services using custom factory"),c(),l(68,"p"),a(69," Devnet Service container uses Service Activator to create your dependency when you call it, but if you want to resolve the instantiation of your dependency in your way, DevNet service container allows you to implement your own factory using a closure function that has "),l(70,"code"),a(71,"IServiceProvider"),c(),a(72," parameter to allow you to call any service registered within "),l(73,"code"),a(74,"IServiceCollection"),c(),a(75," and use it as a dependency for your service creation process as shown in the following example: "),c(),l(76,"pre")(77,"code",4),a(78,"register(function ($services) {\n $services->addSingleton(IService::class,\n fn($provider) => new MyService($provider->getService(MyDependency::class)));\n \n $services->addTransient(MyDependency::class);\n });\n ...\n }\n}\n"),c()(),y(79,"br"),l(80,"h3"),a(81,"Requesting Services"),c(),l(82,"p"),a(83," Services can be requested by their type using the method "),l(84,"code"),a(85,"IServiceProvider::getService(string $type)"),c(),a(86,", which can be accessible from the property "),l(87,"code"),a(88,"HttpContext::Services"),c(),a(89,", like in the following example. "),c(),l(90,"pre")(91,"code",4),a(92,'\n...\n$app->useEndpoint(function($routes) {\n $routes->mapGet("/service", function(HttpContext $context) {\n // Getting the services\n $service1 = $context->Services->getService(IService::class);\n $service2 = $context->Services->getService(MyService::class);\n // Code...\n });\n});\n'),c()(),y(93,"br"),l(94,"h3"),a(95,"Requesting services through controller"),c(),l(96,"p"),a(97," Services are injected into controllers as a constructor parameter during the creation of the controller, the service activator resolves the services from "),l(98,"code"),a(99,"IServiceCollection"),c(),a(100," that matches the parameter types of the controller's constructor and injects them into it automatically. "),c(),l(101,"pre")(102,"code",4),a(103,"MyService = $myService;\n }\n ...\n}\n"),c()(),y(104,"br"),l(105,"h3"),a(106,"Built-in services"),c(),l(107,"table",5)(108,"thead")(109,"tr")(110,"th",6),a(111,"Method"),c(),l(112,"th",6),a(113,"Description"),c()()(),l(114,"tbody")(115,"tr")(116,"td")(117,"code"),a(118,"addAntiForgery(?Closure $configuration)"),c()(),l(119,"td"),a(120,"Register IAntiForgery service."),c()(),l(121,"tr")(122,"td")(123,"code"),a(124,"addAuthentication(?Closure $configuration)"),c()(),l(125,"td"),a(126,"Register IAuthentication service."),c()(),l(127,"tr")(128,"td")(129,"code"),a(130,"addAuthorization(?Closure $configuration)"),c()(),l(131,"td"),a(132,"Register IAuthorization service."),c()(),l(133,"tr")(134,"td")(135,"code"),a(136,"addEntityContext(?Closure $configuration)"),c()(),l(137,"td"),a(138,"Register EntityContext service."),c()(),l(139,"tr")(140,"td")(141,"code"),a(142,"addHttpClient(?Closure $configuration)"),c()(),l(143,"td"),a(144,"Register HttpClient service."),c()(),l(145,"tr")(146,"td")(147,"code"),a(148,"addLogging(?Closure $configuration)"),c()(),l(149,"td"),a(150,"Register ILoggerFactory service."),c()()()()(),l(151,"nav",7)(152,"ul",8)(153,"li",9)(154,"a",10),y(155,"i",11),a(156," Previous "),c()(),l(157,"li",9)(158,"a",12),a(159," Next "),y(160,"i",13),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web/exception",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["web-exception"]],decls:90,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-json"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/filter",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/dependency",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Exception Handler"),c(),y(8,"hr"),l(9,"p"),a(10," The exception handler is a middleware that displays detailed information about unhandled request exceptions, it's the first middleware that runs in the request pipeline so that it can catch all the unhandled exceptions thrown in the middleware that follows. "),c(),l(11,"h3"),a(12,"Registering the Exception Handler"),c(),l(13,"p"),a(14," Exception Handler is enabled through the method "),l(15,"code"),a(16,"WebHost::start(Closure $configure)"),c(),a(17," by calling the extension method "),l(18,"code"),a(19,"ApplicationBuilderExtensions::useExceptionHandler()"),c(),a(20," of the Application builder, which adds the pre-built middleware "),l(21,"code"),a(22,"ExceptionHandlerMiddleware"),c(),a(23," to the request pipeline, and must be in the top order of all middlewares. "),c(),l(24,"pre")(25,"code",4),a(26,"start(function ($app) {\n // Registering the exception handler in the top order.\n $app->useExceptionHandler();\n // Some middlewares here.\n});\n"),c()(),y(27,"br"),l(28,"h3"),a(29,"Custom error handling"),c(),l(30,"p"),a(31," The default configuration of the exception handler displays the Developer Exception page that shows detailed information about the error exception, which is very useful for debugging, but it is not recommended for deploying the application in the production environment, instead you need to handle the errors differently with a custom error handler, e.g. log the errors and return only the status code. "),c(),l(32,"p"),a(33," The following example shows how to register an exception handler that redirects the errors to a custom error handler endpoint to handle the errors differently. "),c(),l(34,"pre")(35,"code",4),a(36,'start(function ($app) {\n // Registering an exception handler that redirects the errors to a custom error handler.\n $app->useExceptionHandler("/error");\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n $routes->mapGet("/", fn () => "Hello World!");\n // The custom error handler endpoint.\n $routes->mapGet("/error", function ($context) {\n $error = $context->Items->getValue(\'ErrorException\');\n $code = $error ? $error->getCode() : 404;\n $code = $code != 0 ? $code : 500;\n if ($code == 401) {\n $context->Response->redirect(\'/login\');\n } else {\n $context->Response->setStatusCode($code);\n // You may need to log the error message here.\n // e.g. Logger::log(LogLevel::Error, $error->getMessage());\n }\n });\n });\n});\n'),c()(),y(37,"br"),l(38,"h3"),a(39,"Runtime environment"),c(),l(40,"p"),a(41," The DevNet web application can determine the runtime environment by reading the environment variable "),l(42,"samp")(43,"b"),a(44,"DEVNET_ENVIRONMENT"),c()(),a(45," from your system environment variables or from the "),l(46,"samp"),a(47,'"lunch.json"'),c(),a(48," file of Visual Studio Code, which can have two values: "),l(49,"code"),a(50,"development"),c(),a(51," or "),l(52,"code"),a(53,"production"),c(),a(54,", so you can use it as an advantage to control the error-handling behavior of your application. "),c(),l(55,"p"),a(56," The environment variable "),l(57,"samp")(58,"b"),a(59,"DEVNET_ENVIRONMENT"),c()(),a(60," is set to "),l(61,"code"),a(62,"development"),c(),a(63," in the "),l(64,"samp"),a(65,'"lunch.json"'),c(),a(66," file, so when you debug your application, it runs in development mode. "),c(),l(67,"pre")(68,"code",5),a(69,'"configurations": [\n {\n "name": "Launch Built-in web server",\n "type": "php",\n "request": "launch",\n "cwd": "${workspaceRoot}/webroot",\n "runtimeArgs": [\n "-dxdebug.mode=debug",\n "-dxdebug.start_with_request=yes",\n "-S",\n "localhost:8000"\n ],\n "env": {\n "DEVNET_ENVIRONMENT": "development"\n }\n }\n]\n'),c()(),y(70,"br"),l(71,"h4"),a(72,"Controlling the error-handling conditions"),c(),l(73,"p"),a(74," By default, the Developer Exception page is enabled when the runtime environment is set to development mode, without the need to register it, but that can be controlled by adding a condition in your application pipeline to use a custom exception handler if the runtime environment is not in development mode. "),c(),l(75,"pre")(76,"code",4),a(77,'start(function ($app) {\n if (!$app->Environment->isDevolvement()) {\n $app->useExceptionHandler("/error");\n }\n // The rest of middlewares.\n ...\n});\n'),c()(),l(78,"p"),a(79," In this way, your application will run in development or production mode, depending on the runtime environment of your system or your application. "),c()(),l(80,"nav",6)(81,"ul",7)(82,"li",8)(83,"a",9),y(84,"i",10),a(85," Previous "),c()(),l(86,"li",8)(87,"a",11),a(88," Next "),y(89,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/web",redirectTo:"docs/web/start",pathMatch:"full"}];let u5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(l5),on]})}return e})(),d5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,u5,bi]})}return e})();const p5=[{path:"docs/orm/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["orm-start"]],decls:213,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/orm.svg","width","100%","height","auto"],[1,"language-shell"],[1,"language-php"],[1,"table"],["scope","col"],[1,"language-json"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/antiforgery",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/query",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Get Started"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet ORM (Object-relational Mapping) is a system that offers an automated mechanism to developers for accessing and storing the data in the database in an object-oriented way, by performing the work required to map between Entities defined in an application's programming language as classes and data stored in relational data sources as tables, without needing the data-access code to be written. "),c(),l(11,"p"),a(12," The following diagram is an abstraction of DevNet ORM architecture. "),c(),y(13,"img",4)(14,"br")(15,"br"),l(16,"p")(17,"b"),a(18,"EntityContext:"),c(),a(19," is an implementation of the Unit of work pattern, represents a gateway to the database by providing an API to communicate with the database with the following capabilities: "),c(),l(20,"ul")(21,"li"),a(22,"Database Connections"),c(),l(23,"li"),a(24,"Data querying and persistance"),c(),l(25,"li"),a(26,"Change Tracking"),c(),l(27,"li"),a(28,"Model building"),c(),l(29,"li"),a(30,"Data Mapping"),c(),l(31,"li"),a(32,"Transaction management"),c()(),l(33,"p")(34,"b"),a(35,"EntitySet:"),c(),a(36," is an implementation of the Repository pattern, a class that holds a collection of entities of the same type related to a table in the database, and each entity is an instance that represents a data row in that table. "),c(),y(37,"br"),l(38,"h3"),a(39,"Installation"),c(),l(40,"p"),a(41," If the DevNet framework is not fully installed, you can install the DevNet ORM package into your project using Composer by running the following command in your terminal: "),c(),l(42,"pre")(43,"code",5),a(44,"composer require devnet/orm"),c()(),y(45,"br"),l(46,"h3"),a(47,"Defining the EntityContext"),c(),l(48,"p"),a(49," The recommended way to work with DevNet ORM is to define a context class in the "),l(50,"b"),a(51,'"Models"'),c(),a(52," folder that derives from "),l(53,"code"),a(54,"DevNet\\ORM\\EntityContext"),c(),a(55," and exposes "),l(56,"code"),a(57,"DevNet\\ORM\\EntitySet"),c(),a(58," properties that represent collections of the specified entities in the context, as shown in the following example. "),c(),l(59,"pre")(60,"code",6),a(61,"Posts = $this->set(Post::class);\n }\n}\n"),c()(),y(62,"br"),l(63,"h4"),a(64,"Entity Type"),c(),l(65,"p"),a(66," By convention, the entity types that are exposed in "),l(67,"code"),a(68,"EntitySet"),c(),a(69," properties in "),l(70,"code"),a(71,"EntityContext"),c(),a(72," are included in the model and mapped automatically to the database tables based on their shape. "),c(),l(73,"ul")(74,"li"),a(75," Each entity class will be mapped automatically to the corresponding database table with the same name. "),c(),l(76,"li"),a(77," Each public property will be mapped to the corresponding column with the same name in the table. "),c(),l(78,"li"),a(79," By default, the property that is named "),l(80,"b"),a(81,'"Id"'),c(),a(82," will be considered as the primary key. "),c()(),l(83,"p"),a(84," The following code example is the entity class "),l(85,"code"),a(86,"Application\\Models\\Post"),c(),a(87," used in the previous context, and it represents the "),l(88,"b"),a(89,'"Post"'),c(),a(90," table in the database where the properties represent the columns of that table. "),c(),l(91,"pre")(92,"code",6),a(93,"ProviderType = SqliteDataProvider::class;\n$options->ConnectionString = "/path/to/database.db3";\n\n$blog = new BlogContext($options);\n$posts = $blog->Posts;\n'),c()(),y(124,"br"),l(125,"h4"),a(126,"Database Providers"),c(),l(127,"p"),a(128," The following table shows a list of database providers that are supported by DevNet ORM. "),c(),l(129,"table",7)(130,"thead")(131,"tr")(132,"th",8),a(133,"Database Provider"),c(),l(134,"th",8),a(135,"Database Engine"),c()()(),l(136,"tbody")(137,"tr")(138,"td")(139,"code"),a(140,"DevNet\\ORM\\MySql\\MySqlDataProvider"),c()(),l(141,"td"),a(142,"MySql"),c()(),l(143,"tr")(144,"td")(145,"code"),a(146,"DevNet\\ORM\\PgSql\\PgSqlDataProvider"),c()(),l(147,"td"),a(148,"PostgreSql"),c()(),l(149,"tr")(150,"td")(151,"code"),a(152,"DevNet\\ORM\\Sqlite\\SqliteDataProvider"),c()(),l(153,"td"),a(154,"SQLite"),c()()()(),l(155,"h4"),a(156,"Connection String"),c(),l(157,"p"),a(158,' The client-server database providers like "MySql" and "PostgreSql" use the following connection string format:'),y(159,"br"),l(160,"code"),a(161,'"host=hostname;port=port;database=dbname;user=username;password=password"'),c()(),l(162,"p"),a(163,' The serverless database providers like "SQLite" use the following connection string format:'),y(164,"br"),l(165,"code"),a(166,'"/path/to/database.db3"'),c(),a(167," or "),l(168,"code"),a(169,'":memory:"'),c()(),y(170,"br"),l(171,"h3"),a(172,"Registering the EntityContext"),c(),l(173,"p"),a(174," It is recommended that you register the DevNet ORM as a reusable service to be injected into your application using the "),l(175,"code"),a(176,"ServiceCollectionExtensions::addEntityContext()"),c(),a(177," Extension method, which is called within the "),l(178,"code"),a(179,"WebHostBuilder::register()"),c(),a(180," method, with the use of the configuration provider that gets the database configuration from the "),l(181,"samp"),a(182,'"settings.json"'),c(),a(183," file as shown in the following code example: "),c(),l(184,"pre")(185,"code",6),a(186,"Configuration;\n $builder->register(function ($services) use ($configuration) { //;\n // Adding EntityContext\n $services->addEntityContext(BlogContext::class,\n function ($options) {\n $options->ProviderType = $configuration->getValue('Database:ProviderType');\n $options->ConnectionString = $configuration->getValue('Database:ConnectionString');\n }\n );\n });\n ...\n }\n}\n"),c()(),l(187,"p"),a(188," In the "),l(189,"samp"),a(190,'"settings.json"'),c(),a(191," file, you need to set the database configuration, like in the following example: "),c(),l(192,"pre")(193,"code",9),a(194,'"Database": {\n "ProviderType": "DevNet\\\\Entity\\\\PgSql\\\\PgSqlDataProvider",\n "ConnectionString": "host=localhost;database=dbname;user=username;password=password"\n}\n'),c()(),l(195,"p"),a(196," Then, you can get the "),l(197,"code"),a(198,"EntityContext"),c(),a(199," using the controller constructor injection, like this: "),c(),l(200,"pre")(201,"code",6),a(202,"blog = $blog;\n }\n\n #[Route(\"/blog\")]\n public function index(): IActionResult\n {\n $this->view(['posts' => $this->blog->Posts]);\n }\n}\n"),c()()(),l(203,"nav",10)(204,"ul",11)(205,"li",12)(206,"a",13),y(207,"i",14),a(208," Previous "),c()(),l(209,"li",12)(210,"a",15),a(211," Next "),y(212,"i",16),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/orm/query",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["orm-query"]],decls:192,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"alert","alert-warning"],[1,"language-sql"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/save",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Querying Data"),c(),y(8,"hr"),l(9,"p"),a(10," The entity repository represents a collection of all records of a particular entity type and can be used to query a single entity or multiple entities. "),c(),l(11,"h3"),a(12,"Loading All Entities"),c(),l(13,"p"),a(14," The entity repository is an iterable collection, so you can load all the entities by iterating the "),l(15,"code"),a(16,"EntitySet"),c(),a(17," instance using the "),l(18,"code"),a(19,"foreach"),c(),a(20," statement, like in the following example: "),c(),l(21,"pre")(22,"code",4),a(23,"Posts as $post) {\n print($post->Title . PHP_EOL);\n}\n"),c()(),l(24,"p"),a(25," Or you can just export all the entities to an array to deal with them later by using the method "),l(26,"code"),a(27,"toArray()"),c(),a(28," like this: "),c(),l(29,"pre")(30,"code",4),a(31,"$posts = $blog->Posts->toArray();"),c()(),y(32,"br"),l(33,"h3"),a(34,"Loading a single entity"),c(),l(35,"p"),a(36," To load a single particular entity selected by its Id, use the method "),l(37,"code"),a(38,"EntitySet::find(string $keyValue)"),c(),a(39,", which will look first if it's already loaded in the tracker to return it quickly, and if it's not, then will load it from the database to the tracker and return it, and here is an example of how to use this method: "),c(),l(40,"pre")(41,"code",4),a(42,"$post = $blog->Posts->find($id);"),c()(),l(43,"p"),a(44," Otherwise, you can use the method "),l(45,"code"),a(46,"EntitySet::first()"),c(),a(47," to load to the first entity of the record or use the method "),l(48,"code"),a(49,"EntitySet::last()"),c(),a(50," to load the last one. "),c(),l(51,"pre")(52,"code",4),a(53,"$firstPost = $blog->Posts->first();\n$lastPost = $blog->Posts->last();\n"),c()(),y(54,"br"),l(55,"h3"),a(56,"Linq Query"),c(),l(57,"p")(58,"code"),a(59,"EntitySet"),c(),a(60," implements the "),l(61,"code"),a(62,"IQueryable"),c(),a(63," interface so it can use LINQ (Language-Integrated Query) to query data from the database, which are chained methods that represent SQL operations, compiled by the database provider to be sent as a specific database query language (MySQL, SQLite, ...) and then to get the result set. "),c(),l(64,"blockquote",5)(65,"b"),a(66,"Important:"),c(),a(67," Linq methods are extension methods, so to use this feature, you have to declare the use of the Linq namespace "),l(68,"code"),a(69,"DevNet\\System\\Linq"),c(),a(70," in every class or code that uses Linq methods with an instance of "),l(71,"code"),a(72,"EntitySet"),c(),a(73,". "),c(),y(74,"br"),l(75,"h4"),a(76,"Filtering Data"),c(),l(77,"p"),a(78," The method "),l(79,"code"),a(80,"where()"),c(),a(81," is used to restrict the result set to contain only those elements that satisfy the specified condition in the arrow function, like in the following code example: "),c(),l(82,"pre")(83,"code",4),a(84,'Posts->where(fn($post) => $post->Title == "My first post")->first();\n'),c()(),l(85,"p"),a(86," Which will be compiled to SQL then executed like this: "),c(),l(87,"pre")(88,"code",6),a(89,"SELECT * FROM Blog.Post WHERE Title = 'My first post';"),c()(),y(90,"br"),l(91,"h4"),a(92,"Ordering Data"),c(),l(93,"p"),a(94," To sort the result set in ascending order by a specified column, use the method "),l(95,"code"),a(96,"orderBy()"),c(),a(97,", and if the rows have the same value in that column, you can optionally chain it with the method "),l(98,"code"),a(99,"thenBy()"),c(),a(100," to sort them by another column, like in the following code: "),c(),l(101,"pre")(102,"code",4),a(103,"posts = $blog->Posts->orderBy(fn($p) => $p->Date)->thenBy(fn($p) => $p->Title)->toArray();"),c()(),l(104,"p"),a(105," And that will be compiled then executed in SQL like this: "),c(),l(106,"pre")(107,"code",6),a(108,"SELECT * FROM Blog.Post ORDER BY Date, Title;"),c()(),l(109,"p"),a(110," You can also sort the result set in descending order by a specified column using the method "),l(111,"code"),a(112,"orderByDescending()"),c(),a(113,", and optionally you can chain it by the method "),l(114,"code"),a(115,"ThenBy()"),c(),a(116," or "),l(117,"code"),a(118,"thenByDescending()"),c(),a(119," to sort the rows of the same values by another column, like in the code below: "),c(),l(120,"pre")(121,"code",4),a(122,"$posts = $blog->Posts->orderByDescending(fn($p) => $p->Date)\n ->thenByDescending(fn($p) => $p->Title)\n ->toArray();\n"),c()(),l(123,"p"),a(124," And this one will be compiled then executed in SQL as following: "),c(),l(125,"pre")(126,"code",6),a(127,"SELECT * FROM Blog.Post ORDER BY Date DESC, Title DESC;"),c()(),y(128,"br"),l(129,"h4"),a(130,"Partitioning Data"),c(),l(131,"p"),a(132," The partitioning data is the operation of dividing an input sequence into sections without changing the order of the elements and then returning one of those sections. "),c(),l(133,"p"),a(134," You can use the method "),l(135,"code"),a(136,"skip()"),c(),a(137," to skip a specified number of elements from the beginning of a sequence and then return the remaining elements, and use the method "),l(138,"code"),a(139,"take()"),c(),a(140," to return a specified number of contiguous elements from the start of a sequence, like in the following code example: "),c(),l(141,"pre")(142,"code",4),a(143,"$posts = $blog->Posts->skip(5)->take(10)->toArray();"),c()(),l(144,"p"),a(145," Which will be compiled then executed in SQL like this: "),c(),l(146,"pre")(147,"code",6),a(148,"SELECT * FROM Blog.Post LIMIT 5,10;"),c()(),y(149,"br"),l(150,"h5"),a(151,"Pagination Example"),c(),l(152,"p"),a(153," You can implement data pagination in DevNet ORM using the LINQ methods "),l(154,"code"),a(155,"skip()"),c(),a(156," and "),l(157,"code"),a(158,"take()"),c(),a(159," like this: "),c(),l(160,"pre")(161,"code",4),a(162,"$page = 1; // The page number you want to retrieve.\n$size = 10; // The number of items per page.\n$posts = $blog->Posts->skip(($page - 1) * $size)->take($size)->toArray();\n"),c()(),l(163,"p"),a(164," Page number 1 will display the first 10 posts, page 2 will skip the first 10 posts and display the next 10 posts, page 3 will skip 20 posts and display the next 10 posts, and so on... "),c(),y(165,"br"),l(166,"h4"),a(167,"Complex Query"),c(),l(168,"p"),a(169," Sometimes a simple query is not enough to solve a complex problem, so you can combine two or more clauses together to reach what you need as shown in the following code example: "),c(),l(170,"pre")(171,"code",4),a(172,"$posts = $blog->Posts->where(fn($p) =>$p->Date == '2023-01-01' && $p->Likes > 200)\n ->orderBy(fn($p) => $p->Title)\n ->take(10)\n ->toArray();\n"),c()(),l(173,"p"),a(174," And that will be compiled then executed in SQL like this: "),c(),l(175,"pre")(176,"code",6),a(177,"SELECT * FROM Blog.Post WHERE Date = '2023-01-01' AND Likes > 200 ORDER BY Title LIMIT 10;"),c()(),l(178,"blockquote",7)(179,"b"),a(180,"Note:"),c(),a(181," Linq queries are always executed against the database even if the entities returned already exist in the tracker. "),c()(),l(182,"nav",8)(183,"ul",9)(184,"li",10)(185,"a",11),y(186,"i",12),a(187," Previous "),c()(),l(188,"li",10)(189,"a",13),a(190," Next "),y(191,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/orm/save",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["orm-save"]],decls:70,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/query",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/relationships",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Saving Data"),c(),y(8,"hr"),l(9,"p"),a(10," Saving data is the process of persisting the changes made to the entities in the context to be applied to the database, such as adding new entities, removing entities, or modifying the properties of existing entities. "),c(),l(11,"h3"),a(12,"Adding Data"),c(),l(13,"p"),a(14," The "),l(15,"code"),a(16,"EntitySet::add(object $entity)"),c(),a(17," method adds a new entity instance to the context to be inserted into the database when calling the "),l(18,"code"),a(19,"EntityContext::save()"),c(),a(20," method. "),c(),l(21,"pre")(22,"code",4),a(23,'Title = "Post Title";\n$post->Content = "Some content...";\n$post->Date = new DateTime("now");\n\n$blog = new BlogContext();\n$blog->Posts->add($post);\n$blog->save();\n'),c()(),y(24,"br"),l(25,"h3"),a(26,"Deleting Data"),c(),l(27,"p"),a(28," The "),l(29,"code"),a(30,"EntitySet::remove(object $entity)"),c(),a(31," method attaches the selected entity instance to the context with deleted status, to be deleted from the database when calling the "),l(32,"code"),a(33,"EntityContext::save()"),c(),a(34," method. "),c(),l(35,"pre")(36,"code",4),a(37,"Posts->find(1);\n$blog->Posts->remove($post);\n$blog->save();\n"),c()(),y(38,"br"),l(39,"h3"),a(40,"Updating Data"),c(),l(41,"p"),a(42," To update a record in the database table, modify the values of the loaded entity instance, and when calling the method "),l(43,"code"),a(44,"EntityContext::save()"),c(),a(45,", the changes will be automatically detected and updated in the database. "),c(),l(46,"pre")(47,"code",4),a(48,'Posts->find(1);\n$post->Content = "Updated content";\n$blog->save();\n'),c()(),y(49,"br"),l(50,"h3"),a(51,"Multiple Operations"),c(),l(52,"p"),a(53," You can combine multiple operations (Add/Update/Remove) and then persist all the changes in a single call to the "),l(54,"code"),a(55,"EntityContext::save()"),c(),a(56," method, and here an example: "),c(),l(57,"pre")(58,"code",4),a(59,'Title = "Post Title";\n$post->Content = "Some content...";\n$post->Date = new DateTime("now");\n$blog->Posts->add($post);\n\n// Deletes post with id = 2\n$post = $blog->Posts->find(2);\n$blog->Posts->remove($post);\n\n// Updates post with id = 1\n$post = $blog->Posts->find(1);\n$post->Content = "Updated content";\n\n// Persists all the operations\n$blog->save();\n'),c()()(),l(60,"nav",5)(61,"ul",6)(62,"li",7)(63,"a",8),y(64,"i",9),a(65," Previous "),c()(),l(66,"li",7)(67,"a",10),a(68," Next "),y(69,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/orm/relationships",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["orm-relationships"]],decls:164,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"mb-2"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/save",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/migrations",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Relationships"),c(),y(8,"hr"),l(9,"p"),a(10," A relationship describes how entities are associated with each other, represented by a referential constraint that defines which entity is the principal or dependent role in the relationship, and there are many kinds of entity relationships, such as one-to-one, one-to-many, many-to-one, and many-to-many. "),c(),l(11,"ul")(12,"li",4)(13,"b"),a(14,"Dependent entity:"),c(),a(15,' sometimes called the "child" is the entity that contains the foreign key, which is a reference to the primary key of the principal entity.'),c(),l(16,"li",4)(17,"b"),a(18,"Principal entity:"),c(),a(19,' sometimes called the "parent" is the entity that contains the primary key, which is referenced as a foreign key in the dependent entity.'),c()(),l(20,"h3"),a(21,"Navigation property:"),c(),l(22,"p"),a(23," A navigation property is a public property presented in the principal or dependent entity that can have a reference type to single or multiple related entities to allow navigation from one entity to another. "),c(),l(24,"ul")(25,"li",4)(26,"b"),a(27,"Collection navigation property:"),c(),a(28," is a property that contains references to multiple related entities, used to navigate through one-to-many and many-to-many relationships, defined by the type "),l(29,"code"),a(30,"DevNet\\System\\Collections\\ICollection"),c(),a(31," with the annotation "),l(32,"code"),a(33,"DevNet\\System\\Generic"),c(),a(34," which specifies the type of the related entity collection."),c(),l(35,"li",4)(36,"b"),a(37,"Reference navigation property:"),c(),a(38," is a property that contains a reference to a single related entity, used to navigate through one-to-one and many-to-one relationships, has the same type as the type of the related entity, and may have the annotation "),l(39,"code"),a(40,"DevNet\\ORM\\Annotations\\ForeignKey"),c(),a(41," to define the name of the property that is used as a foreign key in the dependent entity."),c()(),l(42,"p"),a(43," The example below demonstrates an entity class named "),l(44,"code"),a(45,"Post"),c(),a(46," that has two navigation properties: a reference property called "),l(47,"code"),a(48,"Post::User"),c(),a(49,", and a collection property called "),l(50,"code"),a(51,"Post::Classifications"),c(),a(52,". "),c(),l(53,"pre")(54,"code",5),a(55,"Users->find($id);\n// Iterating through the posts that are related to the selected user.\nforeach($user->Posts as $post) {\n $post->Title;\n}\n"),c()(),y(83,"br"),l(84,"h3"),a(85,"One to one"),c(),l(86,"p"),a(87," A one-to-one relationship is one entity associated with at most one other entity by introducing a unique constraint to the foreign key to ensure only one dependent is related to the principal entity. "),c(),l(88,"p"),a(89," The following example represents an entity class "),l(90,"code"),a(91,"Profile"),c(),a(92," that has a one-to-one relationship with the entity class "),l(93,"code"),a(94,"User"),c(),a(95," presented in the previous example, and both entities have reference navigate to each other, except the entity "),l(96,"code"),a(97,"Profile"),c(),a(98," is a dependent entity has the property "),l(99,"code"),a(100,"Profile::UserId"),c(),a(101," defined as a foreign key. "),c(),l(102,"pre")(103,"code",5),a(104,"Users->find($id);\n// Getting the related Profile entity from the User entity.\n$profile = $user->Profile;\n// Getting the related User entity from the Profile entity.\n$user = $profile->User;\n"),c()(),y(110,"br"),l(111,"h3"),a(112,"Many to Many"),c(),l(113,"p"),a(114," A many-to-many relationship is any number of entities of the same entity type associated with any number of entities of another entity type, this relationship is composed of two on-to-many relationships, represented by a joining table that includes the foreign keys of both tables, and these foreign keys are composite primary keys. "),c(),l(115,"p"),a(116," Here is an example of an entity named "),l(117,"code"),a(118,"Category"),c(),a(119,", which has a many-to-many relationship with the entity "),l(120,"code"),a(121,"Post"),c(),a(122," demonstrated in the first example, through the junction entity "),l(123,"code"),a(124,"Classification"),c(),a(125,". "),c(),l(126,"pre")(127,"code",5),a(128,"Categories->find($id);\n// Iterates the related entities through the junction entity.\nforeach($category->Classifications as $classification) {\n $classification->Post->Title;\n}\n"),c()()(),l(154,"nav",6)(155,"ul",7)(156,"li",8)(157,"a",9),y(158,"i",10),a(159," Previous "),c()(),l(160,"li",8)(161,"a",11),a(162," Next "),y(163,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/orm/migrations",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["orm-migrations"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],[1,"text-justify"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/relationships",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Migrations"),c(),y(8,"hr"),l(9,"p"),a(10," Migration provides a way to update the database schema incrementally, To keep it in sync with the changes in the data model, Without losing the existing data in the database. "),c(),l(11,"h3"),a(12,"Creating a migration"),c(),l(13,"p"),a(14," To create a migration, navigate to the root of your project and run the following command in the terminal: "),c(),l(15,"pre")(16,"code",4),a(17,"devnet add migration --name InitialMigration"),c()(),l(18,"p"),a(19," This will generate an empty migration class in the "),l(20,"samp"),a(21,'"Migrations"'),c(),a(22," folder, And the class file name will be prefixed by a timestamp date as an Id. "),c(),l(23,"p"),a(24," e.g. "),l(25,"samp"),a(26,'"/Migrations/20230701082859_InitialMigration.php"'),c()(),l(27,"pre")(28,"code",5),a(29,"createTable('User', function ($table) {\n $table->column('Id', 'integer')->identity(); // auto-increment\n $table->column('Fullname', 'string', 45)->nullable(false);\n $table->column('Username', 'string', 45)->nullable(false);\n $table->column('Password', 'string', 60)->nullable(false);\n $table->column('Role', 'string', 45)->default('User');\n $table->primaryKey('Id');\n $table->uniqueConstraint('Username');\n });\n\n $builder->createTable('Post', function ($table) {\n $table->column('Id', 'integer')->identity();\n $table->column('UserId', 'integer');\n $table->column('Title', 'string', 60)->nullable(false);\n $table->column('Content', 'text');\n $table->column('Date', 'date');\n $table->primaryKey('Id');\n $table->foreignKey('UserId')->references('User', 'Id')->onDelete('cascade');\n });\n\n $builder->createTable('Category', function ($table) {\n $table->column('Id', 'integer')->identity();\n $table->column('Name', 'string', 45)->nullable(false);\n $table->column('Description', 'string', 255)->nullable();\n $table->primaryKey('Id');\n $table->uniqueConstraint('Name');\n });\n\n $builder->createTable('PostCategory', function ($table) {\n $table->column('PostId', 'integer');\n $table->column('CategoryId', 'integer');\n $table->primaryKey('PostId', 'CategoryId');\n $table->foreignKey('PostId')->references('Post', 'Id')->onDelete('cascade');\n $table->foreignKey('CategoryId')->references('Category', 'Id')->onDelete('cascade');\n });\n }\n\n public function down(MigrationBuilder $builder): void\n {\n // if the constraint ON DELETE is configured as \"strict\" and which is the default configuration,\n // the child table must be dropped before the parent table, otherwise will throw an error.\n $builder->dropTable('PostCategory');\n $builder->dropTable('Category');\n $builder->dropTable('Post');\n $builder->dropTable('User');\n }\n}\n"),c()(),y(66,"br"),l(67,"h4"),a(68,"Updating the database schema"),c(),l(69,"p"),a(70," If the domain entity has been changed, it might be necessary to update the database schema to match it, and this can be done by creating another migration to make necessary alterations, as shown in the example below: "),c(),l(71,"pre")(72,"code",5),a(73,"alterTable('User', function ($table) {\n $table->addColumn('Email', 'string', 45);\n $table->addColumn('Phone', 'string', 15);\n $table->addColumn('Location', 'string', 45);\n });\n\n $builder->alterTable('Category', function ($table) {\n $table->renameColumn('Description', 'Definition');\n });\n\n $builder->renameTable('PostCategory', 'Classification');\n }\n\n public function down(MigrationBuilder $builder): void\n {\n $builder->alterTable('User', function ($table) {\n $table->removeColumn('Fullname');\n $table->removeColumn('Email';\n $table->removeColumn('Phone');\n $table->removeColumn('Location');\n });\n\n $builder->alterTable('Category', function ($table) {\n $table->renameColumn('Definition', 'Description');\n });\n\n $builder->renameTable('Classification', 'PostCategory');\n }\n}\n"),c()(),y(74,"br"),l(75,"h4"),a(76,"Seeding the database"),c(),l(77,"p",6),a(78," Seed data is data that populates the database at the time of migration execution, used to provide initial values for lookup lists or demo or test purposes, etc... "),c(),l(79,"pre")(80,"code",5),a(81," $name) {\n $builder->insertData('Category', [\n 'Id' => ++$id,\n 'Name' => $name\n ]);\n }\n }\n\n public function down(MigrationBuilder $builder): void\n {\n for ($i = 1; $i <= 4; $i++) {\n $builder->deleteData('Category', ['Id' => $i]);\n }\n }\n}\n"),c()(),y(82,"br"),l(83,"h3"),a(84,"Applying migrations"),c(),l(85,"p"),a(86," When you run the migration command for the first time, a migration history table will be created, which tracks the history of the applied migrations to determine later whether to upgrade or downgrade the migrations. "),c(),l(87,"p"),a(88," If the migration target is higher than the last migration applied, it will upgrade to the migration target. On the other hand, if it's lower, it will downgrade to the migration target. However, if the migration target has already been applied, then no action will be taken. "),c(),l(89,"p"),a(90," And here is an example shows how to run the migrate command targeting the migration that we created earlier: "),c(),l(91,"pre")(92,"code",4),a(93,"devnet migrate --target 20230701082859_InitialMigration"),c()(),l(94,"blockquote",7)(95,"b"),a(96,"Important:"),c(),a(97," Make sure to specify the database configuration in the "),l(98,"samp")(99,"b"),a(100,"settings.json"),c()(),a(101," before running the "),l(102,"code"),a(103,"migrate"),c(),a(104," command or pass it to the command as parameters using the options: "),l(105,"code"),a(106,"--provider"),c(),a(107," and "),l(108,"code"),a(109,"--connection"),c(),a(110,". "),c(),y(111,"br"),l(112,"h4"),a(113,"Applying all migrations"),c(),l(114,"p"),a(115," When you run the migration command without specifying the migration target, it will apply all migrations or continue from the latest migration applied. If all migrations have already been applied, no action will be taken. "),c(),l(116,"pre")(117,"code",4),a(118,"devnet migrate"),c()(),y(119,"br"),l(120,"h4"),a(121,"Reversing all migrations"),c(),l(122,"p"),a(123," To reverse all migrations to roll back to the state zero, run the migrate command with a target of 0 (zero), like this: "),c(),l(124,"pre")(125,"code",4),a(126,"devnet migrate --target 0"),c()()(),l(127,"nav",8)(128,"ul",9)(129,"li",10)(130,"a",11),y(131,"i",12),a(132," Previous "),c()(),l(133,"li",10)(134,"a",13),a(135," Next "),y(136,"i",14),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/orm",redirectTo:"docs/orm/start",pathMatch:"full"}];let h5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(p5),on]})}return e})(),f5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,h5,bi]})}return e})();const g5=[{path:"docs/security/overview",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["security-overview"]],decls:40,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/dependency",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/authentication",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),y(8,"hr"),l(9,"p"),a(10," DevNet Security package provides several security libraries for building secure web applications and APIs, based on the following features: "),c(),l(11,"ul")(12,"li"),a(13,"Cookie-based Authentication"),c(),l(14,"li"),a(15,"Token-based Authentication"),c(),l(16,"li"),a(17,"Role-based Authorization"),c(),l(18,"li"),a(19,"Policy-based Authorization"),c(),l(20,"li"),a(21,"CSRF Prevention"),c()(),y(22,"br"),l(23,"h3"),a(24,"Requirement"),c(),l(25,"p"),a(26," DevNet Security package is part of the DevNet Framework, and if it's not already installed on your system or project, you still can install it using the composer command line: "),c(),l(27,"pre")(28,"code",4),a(29,"composer require devnet/security"),c()()(),l(30,"nav",5)(31,"ul",6)(32,"li",7)(33,"a",8),y(34,"i",9),a(35," Previous "),c()(),l(36,"li",7)(37,"a",10),a(38," Next "),y(39,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/security/authentication",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["security-authentication"]],decls:86,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/authorization",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Authentication"),c(),y(8,"hr"),l(9,"p"),a(10," Authentication is the process of verifying the identity of the user who accesses a web application. This may require the user to input a username and password to log into the web application. "),c(),l(11,"p"),a(12," Authentication is handled by the authentication middleware, which uses the registered authentication service that can have multiple authentication schemes, and each scheme is related to an authentication handler to determine later in the authorization policies which authentication handler should be used to authenticate the user and provides a "),l(13,"code"),a(14,"ClaimsIdentity"),c(),a(15," that represents the user in the request context. "),c(),l(16,"h3"),a(17,"Configuration"),c(),l(18,"p"),a(19," The authentication service is added to the application by calling the "),l(20,"code"),a(21,"addAuthentication()"),c(),a(22," method, and then authentication schemes can be specified by calling one of the following methods: "),c(),l(23,"ul")(24,"li")(25,"code"),a(26,"AddCookie()"),c(),a(27," for cookie-based authentication"),c(),l(28,"li")(29,"code"),a(30,"AddJwtBearer()"),c(),a(31," for token-based authentication"),c()(),l(32,"p"),a(33," The authentication middleware is used in the application by calling the "),l(34,"code"),a(35,"useAuthentication()"),c(),a(36," method and must be called before any middleware that depends on the user being authenticated. "),c(),l(37,"p"),a(38," This example shows the configuration of both approaches, cookie-based and token-based authentication, but you can choose one of the two approaches. "),c(),l(39,"pre")(40,"code",4),a(41,'register(function ($services) {\n // Adding authentication service\n $services->addAuthentication(function ($builder) {\n // Adding cookie-based authentication handler\n $builder->addCookie(AuthenticationScheme::CookieSession, function ($options) {\n // Optimally you can modify the following default options.\n $options->CookieName = "Identity";\n $options->CookiePath = "/";\n $options->ExpireTime = TimeSpan::fromDays(7);\n });\n // Adding token-based authentication handler\n $builder->addJwtBearer(AuthenticationScheme::JwtBearer, function ($options) {\n $options->SecurityKey = "jwt security key";\n // Optionally you can configure the following validation options\n $options->Issuer = "127.0.0.1:8000"; // server address\n $options->Audience = "127.0.0.1:8080"; // client address\n });\n });\n });\n \n $host = $builder->build();\n\n $host->start(function ($app) {\n $app->UseExceptionHandler();\n $app->useRouter();\n // Adding the authentication middleware before the endpoint middleware.\n $app->useAuthentication();\n $app->useEndpoint(function ($routes) {\n // Routes\n });\n });\n }\n}\n'),c()(),y(42,"br"),l(43,"h3"),a(44,"Cookie-based Authentication"),c(),l(45,"p"),a(46," The cookie-based authentication is a stateful process, which means that the server stores the user session data and sends to the client a cookie that contains a session reference, which is often stored in the browser and sent back to the server with every request to authenticate the client requests and maintain session information on the server over the stateless HTTP protocol. "),c(),l(47,"p"),a(48," The following example demonstrates the working process of cookie-based authentication using "),l(49,"code"),a(50,"ClaimsIdentity"),c(),a(51," and the "),l(52,"code"),a(53,"IAuthentication"),c(),a(54," service to log in and log out the user. "),c(),l(55,"pre")(56,"code",4),a(57,"useEndpoint(function($routes) {\n $routes->mapPost(\"/login\", function(HttpContext $context) {\n $user = $context->User;\n if (!$user->isAuthenticated()) {\n $form = $context->Request->Form;\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Username == $form->getValue('username'))->first();\n if (!$user || !password_verify($form->getValue('password'), $user->Password)) {\n return $context->Response->setStatusCode(401);\n }\n\n $identity = new ClaimsIdentity(AuthenticationScheme::CookieSession);\n $identity->addClaim(new Claim('Username' , $form->getValue('username')));\n $identity->addClaim(new Claim('Role', $user->Role));\n\n $authentication = $context->Services->getService(IAuthentication::class);\n $authentication->signIn($identity, $form->getValue('remember'));\n }\n\n return $context->Response->redirect('/account');\n });\n\n $routes->mapGet(\"/logout\", function(HttpContext $context) {\n $authentication = $context->Services->getService(IAuthentication::class);\n $authentication->signOut();\n return $context->Response->redirect('/login');\n })\n});"),c()(),y(58,"br"),l(59,"h3"),a(60,"Token-based Authentication"),c(),l(61,"p"),a(62," The token-based authentication is a stateless process. This means that the server does not store any session information about the user on its side. Instead, it sends to the client an encrypted token, typically JWT (JSON Web Token), that contains the user information and expiration time, and the client stores this token and sends it back to the server with every request, where the server does the token validation and grants access to the user. "),c(),l(63,"p"),a(64," The following example demonstrates the working process of token-based authentication using ClaimsIdentity and JwtSecurityTokenHandler to generate a JWT token and send it to the client to send it back later for authentication. "),c(),l(65,"p"),a(66," Due to the limitations of this approach, there is no option for remembering or logging out the user on the server side. However, you can easily log out by removing the token from your request header on the client side. "),c(),l(67,"pre")(68,"code",4),a(69,"useEndpoint(function($routes) {\n $routes->mapGet(\"/login\", (function(HttpContext $context) {\n $user = $context->User;\n if (!$user->isAuthenticated()) {\n $form = $context->Request->Form;\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Username == $form->getValue('username'))->first();\n if (!$user || $user->Password != $form->getValue('password')) {\n return $context->Response->setStatusCode(401);\n }\n\n $claims = new ClaimsIdentity(AuthenticationScheme::JwtBearer);\n $claims->addClaim(new Claim('sub', $form->getValue('username')));\n $claims->addClaim(new Claim('role', $user->Role));\n $claims->addClaim(new Claim('iss', '127.0.0.1:8000'));\n $claims->addClaim(new Claim('aud', '127.0.0.1:8080'));\n\n // The asymmetric encryption RSA not supported yet, only the symmetric encryption HSA for now.\n $token = new JwtSecurityToken($claims, 'HS256', new DateTime('7 days'));\n $jwtHandler = new JwtSecurityTokenHandler();\n $signedToken = $jwtHandler->writeToken($token, \"jwt security key\");\n\n // Need to send the token to the client.\n return $context->Response->WriteJsonAsync(['jwt' => $signedToken]);\n }\n\n return $context->Response->redirect('/account');\n }));\n});"),c()(),l(70,"blockquote",5)(71,"b"),a(72,"Important:"),c(),a(73," The client should send back the JWT token in the Authorization header using the Bearer schema in the following format: "),l(74,"code"),a(75,"Authorization: Bearer "),c()()(),l(76,"nav",6)(77,"ul",7)(78,"li",8)(79,"a",9),y(80,"i",10),a(81," Previous "),c()(),l(82,"li",8)(83,"a",11),a(84," Next "),y(85,"i",12),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/security/authorization",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["security-authorization"]],decls:135,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/authentication",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/antiforgery",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Authorization"),c(),y(8,"hr"),l(9,"p"),a(10," Authorization is the process that determines if the user has permission to access or use resources, and usually is coupled with authentication so that the server has some concept of who the user is before determining what the user can do. "),c(),l(11,"p"),a(12," The authorization is controlled by the "),l(13,"code"),a(14,"Authorize"),c(),a(15," filter which is responsible for enforcing the authorization policy on the endpoint action. It uses the "),l(16,"code"),a(17,"IAuthorization"),c(),a(18," service to evaluate the policy and decide which rule applies to the action. The rule can allow or deny access to the action based on various criteria. "),c(),l(19,"h3"),a(20,"Configuration"),c(),l(21,"p"),a(22," To use the authorization feature in your application, you need first to add the "),l(23,"code"),a(24,"IAuthorization"),c(),a(25," service to the dependency, which also depends on the "),l(26,"code"),a(27,"IAuthentication"),c(),a(28," service, and the code below shows a simple way to add this feature. "),c(),l(29,"pre")(30,"code",4),a(31,"register(function ($services) {\n // The authentication service is needed for authorization service.\n $services->addAuthentication(function ($builder) {\n $builder->addCookie();\n });\n // Adding the authorization service\n $services->addAuthorization();\n });\n ...\n }\n}"),c()(),y(32,"br"),l(33,"h3"),a(34,"Simple Authorization"),c(),l(35,"p"),a(36," By default, applying the "),l(37,"code"),a(38,"Authorize"),c(),a(39," filter on the endpoint action without specifying any option will restrict the execution of that action only for authenticated users, as shown in the code example below. "),c(),l(40,"pre")(41,"code",4),a(42,'useEndpoint(function($routes) {\n $routes->mapGet("/account", function(HttpContext $context) {\n $user = $context->User;\n $claim = $user->findClaim(fn ($claim) => $claim->Type == "name");\n $name = $claim ? $claim->Value : null;\n return $context->Response->writeAsync("Welcome {$name}");\n })\n // Adding the authorize filter.\n ->addFilter(new Authorize());\n});'),c()(),l(43,"p"),a(44," You can also apply the "),l(45,"code"),a(46,"Authorize"),c(),a(47," filter to a controller's action methods using the attribute syntax. "),c(),l(48,"pre")(49,"code",4),a(50,"Context->User;\n $claim = $user->findClaim(fn ($claim) => $claim->Type == \"name\");\n $name = $claim ? $claim->Value : null;\n return $this->content(\"Welcome {$name}\");\n }\n\n #[Route('/register', 'GET')]\n public function register(): IActionResult\n {\n return $this->view();\n }\n\n #[Route('/account/create', 'POST')]\n public function create(Registration $form): IActionResult\n {\n if (!$form->isValid()) {\n return $this->redirect('/register');\n }\n\n $data = [];\n if (file_exists(__DIR__ . '/../../data.json')) {\n $json = file_get_contents(__DIR__ . '/../../data.json');\n $data = json_decode($json);\n }\n\n $user = new User();\n $user->Username = $form->Username;\n $user->Password = password_hash($form->Password, PASSWORD_DEFAULT);\n $user->Role = \"User\";\n\n $data[] = $user;\n $json = json_encode($data, JSON_PRETTY_PRINT);\n file_put_contents(__DIR__ . '/../../data.json', $json);\n\n return $this->content(\"The user was successfully created.\");\n }\n}"),c()(),l(51,"p"),a(52," Another way to restrict access to the controller's action method is to use the Authorize attribute on the entire controller class, which applies the Authorize filter to all the action methods in the controller. But, If you want to exclude some action methods from that, you can use the "),l(53,"code"),a(54,'Authorize("Anonymous")'),c(),a(55," attribute on those methods to override the class-level filter that requires the user to be authenticated and allow access to anyone. "),c(),l(56,"p"),a(57," In this example, the Authorize filter is applied to all controller methods except for the "),l(58,"code"),a(59,"register()"),c(),a(60," and "),l(61,"code"),a(62,"login()"),c(),a(63," methods. "),c(),l(64,"pre")(65,"code",4),a(66,"content(\"Hello Administrator\");\n }\n}"),c()(),y(92,"br"),l(93,"h4"),a(94,"Authorization with multiple roles"),c(),l(95,"p"),a(96," Multiple roles can be specified as an array of strings using the named argument "),l(97,"code"),a(98,"roles:"),c(),a(99," in the Authorize attribute, and the user must have at least one of these roles to access the resources. "),c(),l(100,"pre")(101,"code",4),a(102,"content(\"Hello to either Administrator or Manager\");\n }\n}"),c()(),l(103,"p"),a(104," When applying multiple Authorize attributes, the associated resources can only be accessed if the user satisfies all specified roles, unlike the previous example, where the user only needs to have at least one of the roles. "),c(),l(105,"pre")(106,"code",4),a(107,"content(\"Hello to Administrator and Manager\");\n }\n}"),c()(),y(108,"br"),l(109,"h3"),a(110,"Policy-based Authorization"),c(),l(111,"p"),a(112," Policy-based authorization is a way of creating authorization rules that depend on claims requirements that the user must satisfy to access a resource. It can require any user's claims such as ID, Name, Email, Role, etc., unlike role-based authorization, which is just a special case of policy-based authorization that only requires the role claim. "),c(),l(113,"p"),a(114," To use a policy in your application, you must first define it in the Authorization service by calling the addPolicy() method, which allows you to specify a group of claim requirements, as shown in the following example. "),c(),l(115,"pre")(116,"code",4),a(117,"register(function ($services) {\n $services->addAuthentication(function ($builder) {\n $builder->addCookie();\n });\n // Adding the authorization service with policy\n $services->addAuthorization(function($config) {\n $config->addPolicy(\"Administration\", function ($policy) {\n $policy->RequireClaim('EmployeeNumber');\n $policy->RequireClaim('Role', ['Administrator', 'Manager']);\n }\n });\n });\n ...\n }\n}\n"),c()(),l(118,"p"),a(119," And here is an example of how to apply a policy in the Authorize attribute using the named argument "),l(120,"code"),a(121,"policy:"),c()(),l(122,"pre")(123,"code",4),a(124,"content(\"Administration space\");\n }\n}"),c()()(),l(125,"nav",5)(126,"ul",6)(127,"li",7)(128,"a",8),y(129,"i",9),a(130," Previous "),c()(),l(131,"li",7)(132,"a",10),a(133," Next "),y(134,"i",11),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/security/antiforgery",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["security-antiforgery"]],decls:120,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"mb-2"],[1,"language-html"],[1,"language-php"],[1,"language-php-template"],[1,"language-javascript"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/authorization",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),y(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"CSRF Prevention"),c(),y(8,"hr"),l(9,"p"),a(10," Cross-site request forgery, abbreviated as CSRF or XSRF and also known as a one-click attack or session riding, is a malicious attack that takes advantage of a user's previously authenticated session to execute unwanted actions by manipulating the interaction between a client browser and a trusted web application. "),c(),l(11,"p"),a(12," To better understand the CSRF attack, consider the following scenario: "),c(),l(13,"ul")(14,"li",4),a(15," A user signs into his account on a vulnerable website, which trusts any request received with a valid authentication cookie. "),c(),l(16,"li",4),a(17," Then, the user visits a malicious site that contains a fake HTML form to win a prize, but in the background, it posts to the vulnerable website like the following example: "),c()(),l(18,"pre")(19,"code",5),a(20,'

Congratulations! You\'re a Winner!

\n
\n \n \n
\n'),c()(),l(21,"ul")(22,"li",4),a(23," When the user clicks on the submit button. The browser sends a request that includes the authentication cookie for the requested domain. "),c(),l(24,"li",4),a(25," The vulnerable server trusts the request with the authentication context and allows any action that an authenticated user can perform. "),c()(),l(26,"p"),a(27," In addition to this scenario, the malicious site could run a script that automatically submits the form by sending the form submission as an AJAX request. "),c(),y(28,"br"),l(29,"h3"),a(30,"AntiForgery"),c(),l(31,"p"),a(32," To prevent cross-site request forgery attacks, the DevNet framework provides the "),l(33,"code"),a(34,"AntiForgery"),c(),a(35," service that generates a CSRF token, which should be included in the form data or in the request header to be verified by the server when the form is submitted. "),c(),l(36,"p"),a(37," To use the "),l(38,"code"),a(39,"AntiForgery"),c(),a(40," service across your application, you need to register it as a dependency in your application services with the help of the extension method "),l(41,"code"),a(42,"addAntiforgory()"),c(),a(43," inside the method "),l(44,"code"),a(45,"register()"),c(),a(46," of the "),l(47,"code"),a(48,"WebHostBuilder"),c(),a(49," and have the option to customize the default configurations. "),c(),l(50,"pre")(51,"code",6),a(52,"register(function ($services) {\n // Add antiForgery service.\n $services->addAntiForgery();\n });\n ...\n }\n}\n"),c()(),y(53,"br"),l(54,"h3"),a(55,"X-CSRF-TOKEN"),c(),l(56,"p"),a(57," In traditional HTML-based applications, the AntiForgery tokens are passed to the server using hidden form fields, and usually, the token used in this technique is called "),l(58,"samp"),a(59,"X-CSRF-TOKEN"),c(),a(60,". "),c(),l(61,"p"),a(62," After registering the AntiForgery service with the MVC web application, it will be injected into the view so that you can generate a token in the HTML form. "),c(),l(63,"pre")(64,"code",7),a(65,'
\n Username ?>" />\n \n \n
\n'),c()(),l(66,"p"),a(67," The controller in this example sends the view that is presented above with an Antiforgory token via the "),l(68,"code"),a(69,"edit()"),c(),a(70," method when the user requests to edit his account, and when the user submits the HTML form, the controller receives the request via the "),l(71,"code"),a(72,"update()"),c(),a(73," method, which is decorated with the "),l(74,"code"),a(75,"DevNet\\Security\\Tokens\\Csrf\\Validate"),c(),a(76," attribute to check if the request is trusted before updating the data. "),c(),l(77,"pre")(78,"code",6),a(79,"addRange($data);\n\n $user = $users->where(fn ($user) => $user->Id == $id)->first();\n if (!$user) {\n Throw \\Exception(\"page not found!\", 404);\n }\n return $this->view(['user' => $user]);\n }\n\n // Adds AntiForgery validation filter as an attribute.\n #[Validate]\n #[Route(path: '/account/update/{id}', method: 'POST')]\n public function update(int $id, User $form): IActionResult\n {\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Id == $id)->first();\n if (!$user) {\n Throw \\Exception(\"page not found!\", 404);\n }\n $user->Username = $from->Username;\n $user->Email = $from->Username;\n $json = json_encode($users->toArray(), JSON_PRETTY_PRINT);\n file_put_contents('path/to/data.json', $json);\n\n return $this->statusCode(200);\n }\n}\n"),c()(),y(80,"br"),l(81,"h3"),a(82,"X-XSRF-TOKEN"),c(),l(83,"p"),a(84," In modern JavaScript-based applications, the AntiForgery tokens are sent to the server via the AJAX request headers, and usually, the token used in this technique is called "),l(85,"samp"),a(86,"X-XSRF-TOKEN"),c(),a(87,". "),c(),l(88,"p"),a(89," In the following example, when the user requests the "),l(90,"samp"),a(91,'"/account/create"'),c(),a(92," endpoint to create a new account, the server returns an HTML form response with "),l(93,"samp"),a(94,"XSRF-TOKEN"),c(),a(95," as a cookie, which must be sent back to the server via the AJAX request header when the user submits the form to the "),l(96,"samp"),a(97,'"/account/store"'),c(),a(98," endpoint, which this one has an Antiforgory filter to check if the request is trusted or not before storing the data. "),c(),l(99,"pre")(100,"code",6),a(101,'useEndpoint(function($routes) {\n $routes->mapGet("/account/create", (function(HttpContext $context) {\n $token = $context->AntiForgery->getToken();\n $context.Response->Cookies->add("XSRF-TOKEN", token);\n $html = file_get_contents("path/to/editFrom.phtml");\n $context->Response->Body->write($html);\n }));\n\n $routes.MapPost("/account/store", (function(HttpContext $context) {\n $form = $context->Request->Form;\n $user = new User();\n $user->Username = $form->getValue(\'username\');\n $user->Password = password_hash($form->getValue(\'password\'), PASSWORD_DEFAULT);\n\n $json = file_get_contents(\'path/to/data.json\');\n $data = json_decode($json);\n\n $data[] = $user;\n $json = json_encode($data, JSON_PRETTY_PRINT);\n file_put_contents(\'path/to/data.json\', $json);\n $context->Response->setStatusCode(200);\n })\n // Adds AntiForgery validation filter to the endpoint "/account/store".\n ->addFilter(Validate::class);\n});'),c()(),l(102,"p"),a(103," Here is a Javascript example that uses the AJAX request to send back the "),l(104,"samp"),a(105,"XSRF-TOKEN"),c(),a(106," to the server after receiving it from the server via the response cookie. "),c(),l(107,"pre")(108,"code",8),a(109,'const xsrfToken = document.cookie\n .split("; ")\n .find(row => row.startsWith("XSRF-TOKEN="))\n .split("=")[1];\n\nvar request = new XMLHttpRequest();\nrequest.open("POST", "https://example.com/account/edit");\nrequest.setRequestHeader("X-XSRF-TOKEN", xsrfToken);\nrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");\nrequest.send("username=user&email=user@example.com");\nrequest.onload = function() {\n console.log(this.status);\n }\n'),c()()(),l(110,"nav",9)(111,"ul",10)(112,"li",11)(113,"a",12),y(114,"i",13),a(115," Previous "),c()(),l(116,"li",11)(117,"a",14),a(118," Next "),y(119,"i",15),c()()()()()()())},dependencies:[Ae,Ve]})}return e})()},{path:"docs/security",redirectTo:"docs/security/overview",pathMatch:"full"}];let m5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[on.forChild(g5),on]})}return e})(),v5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e});static#n=this.\u0275inj=bt({imports:[xo,m5,bi]})}return e})(),y5=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-header"]],decls:19,vars:0,consts:[[1,"navbar","navbar-expand-lg","navbar-light","bg-white","border-bottom","shadow-sm"],[1,"container"],["routerLink","/",1,"navbar-brand"],["type","button","data-bs-toggle","collapse","data-bs-target","#navbarSupportedContent","aria-controls","navbarSupportedContent","aria-expanded","false","aria-label","Toggle navigation",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","navbarSupportedContent",1,"collapse","navbar-collapse"],[1,"navbar-nav","me-auto","mb-2","mb-lg-0"],[1,"nav-item"],["aria-current","page","routerLink","/docs",1,"nav-link","active"],[1,"navbar-nav","ms-auto","mb-2","mb-lg-0"],[1,"nav-item","dropdown"],["href","#","id","navbarDropdown","role","button","data-bs-toggle","dropdown","aria-expanded","false",1,"nav-link","dropdown-toggle"],["aria-labelledby","navbarDropdown",1,"dropdown-menu","dropdown-menu-end"],["routerLink","/docs",1,"dropdown-item"]],template:function(r,o){1&r&&(l(0,"nav",0)(1,"div",1)(2,"a",2),a(3,"DevNet"),c(),l(4,"button",3),y(5,"span",4),c(),l(6,"div",5)(7,"ul",6)(8,"li",7)(9,"a",8),a(10,"Documentation"),c()()(),l(11,"ul",9)(12,"li",10)(13,"a",11),a(14," Versions "),c(),l(15,"ul",12)(16,"li")(17,"a",13),a(18,"v1.1.0"),c()()()()()()()())},dependencies:[Ae]})}return e})(),b5=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-footer"]],decls:3,vars:0,consts:[[1,"text-muted","bg-white","border-top","py-3"],[1,"container"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1),a(2," \xa9 2023 - DevNet by M. Moussaoui. "),c()())}})}return e})(),E5=(()=>{class e{constructor(){this.title="devnet"}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=Ie({type:e,selectors:[["app-root"]],decls:6,vars:0,consts:[["role","main"],[1,"mt-auto"]],template:function(r,o){1&r&&(l(0,"header"),y(1,"app-header"),c(),l(2,"main",0),y(3,"router-outlet"),c(),l(4,"footer",1),y(5,"app-footer"),c())},dependencies:[gm,y5,b5]})}return e})(),w5=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=Ct({type:e,bootstrap:[E5]});static#n=this.\u0275inj=bt({imports:[w3,n5,i5,c5,d5,f5,v5,KU,bi]})}return e})();b3().bootstrapModule(w5).catch(e=>console.error(e))},687:(q,F,g)=>{var w=g(653);w.registerLanguage("xml",g(133)),w.registerLanguage("bash",g(976)),w.registerLanguage("c",g(489)),w.registerLanguage("cpp",g(769)),w.registerLanguage("csharp",g(945)),w.registerLanguage("css",g(67)),w.registerLanguage("markdown",g(823)),w.registerLanguage("diff",g(217)),w.registerLanguage("ruby",g(130)),w.registerLanguage("go",g(172)),w.registerLanguage("graphql",g(689)),w.registerLanguage("ini",g(530)),w.registerLanguage("java",g(42)),w.registerLanguage("javascript",g(593)),w.registerLanguage("json",g(28)),w.registerLanguage("kotlin",g(567)),w.registerLanguage("less",g(867)),w.registerLanguage("lua",g(342)),w.registerLanguage("makefile",g(158)),w.registerLanguage("perl",g(995)),w.registerLanguage("objectivec",g(14)),w.registerLanguage("php",g(504)),w.registerLanguage("php-template",g(779)),w.registerLanguage("plaintext",g(643)),w.registerLanguage("python",g(344)),w.registerLanguage("python-repl",g(152)),w.registerLanguage("r",g(690)),w.registerLanguage("rust",g(16)),w.registerLanguage("scss",g(382)),w.registerLanguage("shell",g(54)),w.registerLanguage("sql",g(208)),w.registerLanguage("swift",g(491)),w.registerLanguage("yaml",g(917)),w.registerLanguage("typescript",g(585)),w.registerLanguage("vbnet",g(735)),w.registerLanguage("wasm",g(946)),w.HighlightJS=w,w.default=w,q.exports=w},653:q=>{var F={exports:{}};function g(E){return E instanceof Map?E.clear=E.delete=E.set=function(){throw new Error("map is read-only")}:E instanceof Set&&(E.add=E.clear=E.delete=function(){throw new Error("set is read-only")}),Object.freeze(E),Object.getOwnPropertyNames(E).forEach(function(C){var j=E[C];"object"==typeof j&&!Object.isFrozen(j)&&g(j)}),E}F.exports=g,F.exports.default=g;class w{constructor(C){void 0===C.data&&(C.data={}),this.data=C.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function M(E){return E.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function R(E,...C){const j=Object.create(null);for(const Ce in E)j[Ce]=E[Ce];return C.forEach(function(Ce){for(const gt in Ce)j[gt]=Ce[gt]}),j}const L=E=>!!E.scope||E.sublanguage&&E.language;class O{constructor(C,j){this.buffer="",this.classPrefix=j.classPrefix,C.walk(this)}addText(C){this.buffer+=M(C)}openNode(C){if(!L(C))return;let j="";j=C.sublanguage?`language-${C.language}`:((E,{prefix:C})=>{if(E.includes(".")){const j=E.split(".");return[`${C}${j.shift()}`,...j.map((Ce,gt)=>`${Ce}${"_".repeat(gt+1)}`)].join(" ")}return`${C}${E}`})(C.scope,{prefix:this.classPrefix}),this.span(j)}closeNode(C){L(C)&&(this.buffer+="")}value(){return this.buffer}span(C){this.buffer+=``}}const k=(E={})=>{const C={children:[]};return Object.assign(C,E),C};class P{constructor(){this.rootNode=k(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(C){this.top.children.push(C)}openNode(C){const j=k({scope:C});this.add(j),this.stack.push(j)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(C){return this.constructor._walk(C,this.rootNode)}static _walk(C,j){return"string"==typeof j?C.addText(j):j.children&&(C.openNode(j),j.children.forEach(Ce=>this._walk(C,Ce)),C.closeNode(j)),C}static _collapse(C){"string"!=typeof C&&C.children&&(C.children.every(j=>"string"==typeof j)?C.children=[C.children.join("")]:C.children.forEach(j=>{P._collapse(j)}))}}class H extends P{constructor(C){super(),this.options=C}addKeyword(C,j){""!==C&&(this.openNode(j),this.addText(C),this.closeNode())}addText(C){""!==C&&this.add(C)}addSublanguage(C,j){const Ce=C.root;Ce.sublanguage=!0,Ce.language=j,this.add(Ce)}toHTML(){return new O(this,this.options).value()}finalize(){return!0}}function U(E){return E?"string"==typeof E?E:E.source:null}function V(E){return Q("(?=",E,")")}function K(E){return Q("(?:",E,")*")}function ee(E){return Q("(?:",E,")?")}function Q(...E){return E.map(j=>U(j)).join("")}function ye(...E){return"("+(function J(E){const C=E[E.length-1];return"object"==typeof C&&C.constructor===Object?(E.splice(E.length-1,1),C):{}}(E).capture?"":"?:")+E.map(Ce=>U(Ce)).join("|")+")"}function _e(E){return new RegExp(E.toString()+"|").exec("").length-1}const Se=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Le(E,{joinWith:C}){let j=0;return E.map(Ce=>{j+=1;const gt=j;let mt=U(Ce),G="";for(;mt.length>0;){const X=Se.exec(mt);if(!X){G+=mt;break}G+=mt.substring(0,X.index),mt=mt.substring(X.index+X[0].length),"\\"===X[0][0]&&X[1]?G+="\\"+String(Number(X[1])+gt):(G+=X[0],"("===X[0]&&j++)}return G}).map(Ce=>`(${Ce})`).join(C)}const se="[a-zA-Z]\\w*",He="[a-zA-Z_]\\w*",yt="\\b\\d+(\\.\\d+)?",Ye="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",sn="\\b(0b[01]+)",ft={begin:"\\\\[\\s\\S]",relevance:0},hr={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[ft]},bn={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[ft]},Rn=function(E,C,j={}){const Ce=R({scope:"comment",begin:E,end:C,contains:[]},j);Ce.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const gt=ye("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return Ce.contains.push({begin:Q(/[ ]+/,"(",gt,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),Ce},Fr=Rn("//","$"),En=Rn("/\\*","\\*/"),Br=Rn("#","$");var Jt=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:se,UNDERSCORE_IDENT_RE:He,NUMBER_RE:yt,C_NUMBER_RE:Ye,BINARY_NUMBER_RE:sn,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(E={})=>{const C=/^#![ ]*\//;return E.binary&&(E.begin=Q(C,/.*\b/,E.binary,/\b.*/)),R({scope:"meta",begin:C,end:/$/,relevance:0,"on:begin":(j,Ce)=>{0!==j.index&&Ce.ignoreMatch()}},E)},BACKSLASH_ESCAPE:ft,APOS_STRING_MODE:hr,QUOTE_STRING_MODE:bn,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT:Rn,C_LINE_COMMENT_MODE:Fr,C_BLOCK_COMMENT_MODE:En,HASH_COMMENT_MODE:Br,NUMBER_MODE:{scope:"number",begin:yt,relevance:0},C_NUMBER_MODE:{scope:"number",begin:Ye,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:sn,relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[ft,{begin:/\[/,end:/\]/,relevance:0,contains:[ft]}]}]},TITLE_MODE:{scope:"title",begin:se,relevance:0},UNDERSCORE_TITLE_MODE:{scope:"title",begin:He,relevance:0},METHOD_GUARD:{begin:"\\.\\s*"+He,relevance:0},END_SAME_AS_BEGIN:function(E){return Object.assign(E,{"on:begin":(C,j)=>{j.data._beginMatch=C[1]},"on:end":(C,j)=>{j.data._beginMatch!==C[1]&&j.ignoreMatch()}})}});function Ur(E,C){"."===E.input[E.index-1]&&C.ignoreMatch()}function Hr(E,C){void 0!==E.className&&(E.scope=E.className,delete E.className)}function Ke(E,C){C&&E.beginKeywords&&(E.begin="\\b("+E.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",E.__beforeBegin=Ur,E.keywords=E.keywords||E.beginKeywords,delete E.beginKeywords,void 0===E.relevance&&(E.relevance=0))}function Lo(E,C){Array.isArray(E.illegal)&&(E.illegal=ye(...E.illegal))}function $o(E,C){if(E.match){if(E.begin||E.end)throw new Error("begin & end are not supported with match");E.begin=E.match,delete E.match}}function Vr(E,C){void 0===E.relevance&&(E.relevance=1)}const kt=(E,C)=>{if(!E.beforeMatch)return;if(E.starts)throw new Error("beforeMatch cannot be used with starts");const j=Object.assign({},E);Object.keys(E).forEach(Ce=>{delete E[Ce]}),E.keywords=j.keywords,E.begin=Q(j.beforeMatch,V(j.begin)),E.starts={relevance:0,contains:[Object.assign(j,{endsParent:!0})]},E.relevance=0,delete j.beforeMatch},Ei=["of","and","for","in","not","or","if","then","parent","list","value"],wi="keyword";function fr(E,C,j=wi){const Ce=Object.create(null);return"string"==typeof E?gt(j,E.split(" ")):Array.isArray(E)?gt(j,E):Object.keys(E).forEach(function(mt){Object.assign(Ce,fr(E[mt],C,mt))}),Ce;function gt(mt,G){C&&(G=G.map(X=>X.toLowerCase())),G.forEach(function(X){const re=X.split("|");Ce[re[0]]=[mt,Gt(re[0],re[1])]})}}function Gt(E,C){return C?Number(C):function lo(E){return Ei.includes(E.toLowerCase())}(E)?0:1}const Fo={},wn=E=>{console.error(E)},Bo=(E,...C)=>{console.log(`WARN: ${E}`,...C)},gr=(E,C)=>{Fo[`${E}/${C}`]||(console.log(`Deprecated as of ${E}. ${C}`),Fo[`${E}/${C}`]=!0)},jr=new Error;function uo(E,C,{key:j}){let Ce=0;const gt=E[j],mt={},G={};for(let X=1;X<=C.length;X++)G[X+Ce]=gt[X],mt[X+Ce]=!0,Ce+=_e(C[X-1]);E[j]=G,E[j]._emit=mt,E[j]._multi=!0}function Ze(E){(function Vs(E){E.scope&&"object"==typeof E.scope&&null!==E.scope&&(E.beginScope=E.scope,delete E.scope)})(E),"string"==typeof E.beginScope&&(E.beginScope={_wrap:E.beginScope}),"string"==typeof E.endScope&&(E.endScope={_wrap:E.endScope}),function Zn(E){if(Array.isArray(E.begin)){if(E.skip||E.excludeBegin||E.returnBegin)throw wn("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),jr;if("object"!=typeof E.beginScope||null===E.beginScope)throw wn("beginScope must be object"),jr;uo(E,E.begin,{key:"beginScope"}),E.begin=Le(E.begin,{joinWith:""})}}(E),function po(E){if(Array.isArray(E.end)){if(E.skip||E.excludeEnd||E.returnEnd)throw wn("skip, excludeEnd, returnEnd not compatible with endScope: {}"),jr;if("object"!=typeof E.endScope||null===E.endScope)throw wn("endScope must be object"),jr;uo(E,E.end,{key:"endScope"}),E.end=Le(E.end,{joinWith:""})}}(E)}function _i(E){function C(G,X){return new RegExp(U(G),"m"+(E.case_insensitive?"i":"")+(E.unicodeRegex?"u":"")+(X?"g":""))}class j{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(X,re){re.position=this.position++,this.matchIndexes[this.matchAt]=re,this.regexes.push([re,X]),this.matchAt+=_e(X)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const X=this.regexes.map(re=>re[1]);this.matcherRe=C(Le(X,{joinWith:"|"}),!0),this.lastIndex=0}exec(X){this.matcherRe.lastIndex=this.lastIndex;const re=this.matcherRe.exec(X);if(!re)return null;const wt=re.findIndex((dt,Ws)=>Ws>0&&void 0!==dt),Re=this.matchIndexes[wt];return re.splice(0,wt),Object.assign(re,Re)}}class Ce{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(X){if(this.multiRegexes[X])return this.multiRegexes[X];const re=new j;return this.rules.slice(X).forEach(([wt,Re])=>re.addRule(wt,Re)),re.compile(),this.multiRegexes[X]=re,re}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(X,re){this.rules.push([X,re]),"begin"===re.type&&this.count++}exec(X){const re=this.getMatcher(this.regexIndex);re.lastIndex=this.lastIndex;let wt=re.exec(X);if(this.resumingScanAtSamePosition()&&(!wt||wt.index!==this.lastIndex)){const Re=this.getMatcher(0);Re.lastIndex=this.lastIndex+1,wt=Re.exec(X)}return wt&&(this.regexIndex+=wt.position+1,this.regexIndex===this.count&&this.considerAll()),wt}}if(E.compilerExtensions||(E.compilerExtensions=[]),E.contains&&E.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return E.classNameAliases=R(E.classNameAliases||{}),function mt(G,X){const re=G;if(G.isCompiled)return re;[Hr,$o,Ze,kt].forEach(Re=>Re(G,X)),E.compilerExtensions.forEach(Re=>Re(G,X)),G.__beforeBegin=null,[Ke,Lo,Vr].forEach(Re=>Re(G,X)),G.isCompiled=!0;let wt=null;return"object"==typeof G.keywords&&G.keywords.$pattern&&(G.keywords=Object.assign({},G.keywords),wt=G.keywords.$pattern,delete G.keywords.$pattern),wt=wt||/\w+/,G.keywords&&(G.keywords=fr(G.keywords,E.case_insensitive)),re.keywordPatternRe=C(wt,!0),X&&(G.begin||(G.begin=/\B|\b/),re.beginRe=C(re.begin),!G.end&&!G.endsWithParent&&(G.end=/\B|\b/),G.end&&(re.endRe=C(re.end)),re.terminatorEnd=U(re.end)||"",G.endsWithParent&&X.terminatorEnd&&(re.terminatorEnd+=(G.end?"|":"")+X.terminatorEnd)),G.illegal&&(re.illegalRe=C(G.illegal)),G.contains||(G.contains=[]),G.contains=[].concat(...G.contains.map(function(Re){return function js(E){return E.variants&&!E.cachedVariants&&(E.cachedVariants=E.variants.map(function(C){return R(E,{variants:null},C)})),E.cachedVariants?E.cachedVariants:zr(E)?R(E,{starts:E.starts?R(E.starts):null}):Object.isFrozen(E)?R(E):E}("self"===Re?G:Re)})),G.contains.forEach(function(Re){mt(Re,re)}),G.starts&&mt(G.starts,X),re.matcher=function gt(G){const X=new Ce;return G.contains.forEach(re=>X.addRule(re.begin,{rule:re,type:"begin"})),G.terminatorEnd&&X.addRule(G.terminatorEnd,{type:"end"}),G.illegal&&X.addRule(G.illegal,{type:"illegal"}),X}(re),re}(E)}function zr(E){return!!E&&(E.endsWithParent||zr(E.starts))}class Ci extends Error{constructor(C,j){super(C),this.name="HTMLInjectionError",this.html=j}}const qs=M,Di=R,kc=Symbol("nomatch");var Uo=function(E){const C=Object.create(null),j=Object.create(null),Ce=[];let gt=!0;const mt="Could not find the language '{}', did you forget to load/include a language module?",G={disableAutodetect:!0,name:"Plain text",contains:[]};let X={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:H};function re(z){return X.noHighlightRe.test(z)}function Re(z,Y,Oe){let et="",_t="";"object"==typeof Y?(et=z,Oe=Y.ignoreIllegals,_t=Y.language):(gr("10.7.0","highlight(lang, code, ...args) has been deprecated."),gr("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_t=z,et=Y),void 0===Oe&&(Oe=!0);const zn={code:et,language:_t};Ys("before:highlight",zn);const vr=zn.result?zn.result:dt(zn.language,zn.code,Oe);return vr.code=zn.code,Ys("after:highlight",vr),vr}function dt(z,Y,Oe,et){const _t=Object.create(null);function zn(W,ie){return W.keywords[ie]}function vr(){if(!Ee.keywords)return void Nt.addText(nt);let W=0;Ee.keywordPatternRe.lastIndex=0;let ie=Ee.keywordPatternRe.exec(nt),De="";for(;ie;){De+=nt.substring(W,ie.index);const je=br.case_insensitive?ie[0].toLowerCase():ie[0],zt=zn(Ee,je);if(zt){const[Qn,Bd]=zt;Nt.addText(De),De="",_t[je]=(_t[je]||0)+1,_t[je]<=7&&(Xs+=Bd),Qn.startsWith("_")?De+=ie[0]:Nt.addKeyword(ie[0],br.classNameAliases[Qn]||Qn)}else De+=ie[0];W=Ee.keywordPatternRe.lastIndex,ie=Ee.keywordPatternRe.exec(nt)}De+=nt.substring(W),Nt.addText(De)}function Wt(){null!=Ee.subLanguage?function fo(){if(""===nt)return;let W=null;if("string"==typeof Ee.subLanguage){if(!C[Ee.subLanguage])return void Nt.addText(nt);W=dt(Ee.subLanguage,nt,!0,Hc[Ee.subLanguage]),Hc[Ee.subLanguage]=W._top}else W=$e(nt,Ee.subLanguage.length?Ee.subLanguage:null);Ee.relevance>0&&(Xs+=W.relevance),Nt.addSublanguage(W._emitter,W.language)}():vr(),nt=""}function yr(W,ie){let De=1;const je=ie.length-1;for(;De<=je;){if(!W._emit[De]){De++;continue}const zt=br.classNameAliases[W[De]]||W[De],Qn=ie[De];zt?Nt.addKeyword(Qn,zt):(nt=Qn,vr(),nt=""),De++}}function Bc(W,ie){return W.scope&&"string"==typeof W.scope&&Nt.openNode(br.classNameAliases[W.scope]||W.scope),W.beginScope&&(W.beginScope._wrap?(Nt.addKeyword(nt,br.classNameAliases[W.beginScope._wrap]||W.beginScope._wrap),nt=""):W.beginScope._multi&&(yr(W.beginScope,ie),nt="")),Ee=Object.create(W,{parent:{value:Ee}}),Ee}function Uc(W,ie,De){let je=function be(E,C){const j=E&&E.exec(C);return j&&0===j.index}(W.endRe,De);if(je){if(W["on:end"]){const zt=new w(W);W["on:end"](ie,zt),zt.isMatchIgnored&&(je=!1)}if(je){for(;W.endsParent&&W.parent;)W=W.parent;return W}}if(W.endsWithParent)return Uc(W.parent,ie,De)}function Am(W){return 0===Ee.matcher.regexIndex?(nt+=W[0],1):(ea=!0,0)}function Pd(W){const ie=W[0],De=Y.substring(W.index),je=Uc(Ee,W,De);if(!je)return kc;const zt=Ee;Ee.endScope&&Ee.endScope._wrap?(Wt(),Nt.addKeyword(ie,Ee.endScope._wrap)):Ee.endScope&&Ee.endScope._multi?(Wt(),yr(Ee.endScope,W)):zt.skip?nt+=ie:(zt.returnEnd||zt.excludeEnd||(nt+=ie),Wt(),zt.excludeEnd&&(nt=ie));do{Ee.scope&&Nt.closeNode(),!Ee.skip&&!Ee.subLanguage&&(Xs+=Ee.relevance),Ee=Ee.parent}while(Ee!==je.parent);return je.starts&&Bc(je.starts,W),zt.returnEnd?0:ie.length}let Zs={};function $d(W,ie){const De=ie&&ie[0];if(nt+=W,null==De)return Wt(),0;if("begin"===Zs.type&&"end"===ie.type&&Zs.index===ie.index&&""===De){if(nt+=Y.slice(ie.index,ie.index+1),!gt){const je=new Error(`0 width match regex (${z})`);throw je.languageName=z,je.badRule=Zs.rule,je}return 1}if(Zs=ie,"begin"===ie.type)return function Rm(W){const ie=W[0],De=W.rule,je=new w(De),zt=[De.__beforeBegin,De["on:begin"]];for(const Qn of zt)if(Qn&&(Qn(W,je),je.isMatchIgnored))return Am(ie);return De.skip?nt+=ie:(De.excludeBegin&&(nt+=ie),Wt(),!De.returnBegin&&!De.excludeBegin&&(nt=ie)),Bc(De,W),De.returnBegin?0:ie.length}(ie);if("illegal"===ie.type&&!Oe){const je=new Error('Illegal lexeme "'+De+'" for mode "'+(Ee.scope||"")+'"');throw je.mode=Ee,je}if("end"===ie.type){const je=Pd(ie);if(je!==kc)return je}if("illegal"===ie.type&&""===De)return 1;if(Js>1e5&&Js>3*ie.index)throw new Error("potential infinite loop, way more iterations than matches");return nt+=De,De.length}const br=mr(z);if(!br)throw wn(mt.replace("{}",z)),new Error('Unknown language: "'+z+'"');const Fd=_i(br);let Qs="",Ee=et||Fd;const Hc={},Nt=new X.__emitter(X);!function Ld(){const W=[];for(let ie=Ee;ie!==br;ie=ie.parent)ie.scope&&W.unshift(ie.scope);W.forEach(ie=>Nt.openNode(ie))}();let nt="",Xs=0,Gr=0,Js=0,ea=!1;try{for(Ee.matcher.considerAll();;){Js++,ea?ea=!1:Ee.matcher.considerAll(),Ee.matcher.lastIndex=Gr;const W=Ee.matcher.exec(Y);if(!W)break;const De=$d(Y.substring(Gr,W.index),W);Gr=W.index+De}return $d(Y.substring(Gr)),Nt.closeAllNodes(),Nt.finalize(),Qs=Nt.toHTML(),{language:z,value:Qs,relevance:Xs,illegal:!1,_emitter:Nt,_top:Ee}}catch(W){if(W.message&&W.message.includes("Illegal"))return{language:z,value:qs(Y),illegal:!0,relevance:0,_illegalBy:{message:W.message,index:Gr,context:Y.slice(Gr-100,Gr+100),mode:W.mode,resultSoFar:Qs},_emitter:Nt};if(gt)return{language:z,value:qs(Y),illegal:!1,relevance:0,errorRaised:W,_emitter:Nt,_top:Ee};throw W}}function $e(z,Y){Y=Y||X.languages||Object.keys(C);const Oe=function Ws(z){const Y={value:qs(z),illegal:!1,relevance:0,_top:G,_emitter:new X.__emitter(X)};return Y._emitter.addText(z),Y}(z),et=Y.filter(mr).filter(Fc).map(Wt=>dt(Wt,z,!1));et.unshift(Oe);const _t=et.sort((Wt,yr)=>{if(Wt.relevance!==yr.relevance)return yr.relevance-Wt.relevance;if(Wt.language&&yr.language){if(mr(Wt.language).supersetOf===yr.language)return 1;if(mr(yr.language).supersetOf===Wt.language)return-1}return 0}),[zn,vr]=_t,fo=zn;return fo.secondBest=vr,fo}function qr(z){let Y=null;const Oe=function wt(z){let Y=z.className+" ";Y+=z.parentNode?z.parentNode.className:"";const Oe=X.languageDetectRe.exec(Y);if(Oe){const et=mr(Oe[1]);return et||(Bo(mt.replace("{}",Oe[1])),Bo("Falling back to no-highlight mode for this block.",z)),et?Oe[1]:"no-highlight"}return Y.split(/\s+/).find(et=>re(et)||mr(et))}(z);if(re(Oe))return;if(Ys("before:highlightElement",{el:z,language:Oe}),z.children.length>0&&(X.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(z)),X.throwUnescapedHTML))throw new Ci("One of your code blocks includes unescaped HTML.",z.innerHTML);Y=z;const et=Y.textContent,_t=Oe?Re(et,{language:Oe,ignoreIllegals:!0}):$e(et);z.innerHTML=_t.value,function Rd(z,Y,Oe){const et=Y&&j[Y]||Oe;z.classList.add("hljs"),z.classList.add(`language-${et}`)}(z,Oe,_t.language),z.result={language:_t.language,re:_t.relevance,relevance:_t.relevance},_t.secondBest&&(z.secondBest={language:_t.secondBest.language,relevance:_t.secondBest.relevance}),Ys("after:highlightElement",{el:z,result:_t,text:et})}let Ii=!1;function Ti(){"loading"!==document.readyState?document.querySelectorAll(X.cssSelector).forEach(qr):Ii=!0}function mr(z){return z=(z||"").toLowerCase(),C[z]||C[j[z]]}function Ks(z,{languageName:Y}){"string"==typeof z&&(z=[z]),z.forEach(Oe=>{j[Oe.toLowerCase()]=Y})}function Fc(z){const Y=mr(z);return Y&&!Y.disableAutodetect}function Ys(z,Y){const Oe=z;Ce.forEach(function(et){et[Oe]&&et[Oe](Y)})}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",function xd(){Ii&&Ti()},!1),Object.assign(E,{highlight:Re,highlightAuto:$e,highlightAll:Ti,highlightElement:qr,highlightBlock:function Mm(z){return gr("10.7.0","highlightBlock will be removed entirely in v12.0"),gr("10.7.0","Please use highlightElement now."),qr(z)},configure:function Pc(z){X=Di(X,z)},initHighlighting:()=>{Ti(),gr("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function $c(){Ti(),gr("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function Sm(z,Y){let Oe=null;try{Oe=Y(E)}catch(et){if(wn("Language definition for '{}' could not be registered.".replace("{}",z)),!gt)throw et;wn(et),Oe=G}Oe.name||(Oe.name=z),C[z]=Oe,Oe.rawDefinition=Y.bind(null,E),Oe.aliases&&Ks(Oe.aliases,{languageName:z})},unregisterLanguage:function ae(z){delete C[z];for(const Y of Object.keys(j))j[Y]===z&&delete j[Y]},listLanguages:function Nm(){return Object.keys(C)},getLanguage:mr,registerAliases:Ks,autoDetection:Fc,inherit:Di,addPlugin:function kd(z){(function Od(z){z["before:highlightBlock"]&&!z["before:highlightElement"]&&(z["before:highlightElement"]=Y=>{z["before:highlightBlock"](Object.assign({block:Y.el},Y))}),z["after:highlightBlock"]&&!z["after:highlightElement"]&&(z["after:highlightElement"]=Y=>{z["after:highlightBlock"](Object.assign({block:Y.el},Y))})})(z),Ce.push(z)}}),E.debugMode=function(){gt=!1},E.safeMode=function(){gt=!0},E.versionString="11.6.0",E.regex={concat:Q,lookahead:V,either:ye,optional:ee,anyNumberOfTimes:K};for(const z in Jt)"object"==typeof Jt[z]&&F.exports(Jt[z]);return Object.assign(E,Jt),E}({});q.exports=Uo,Uo.HighlightJS=Uo,Uo.default=Uo},976:q=>{q.exports=function F(g){const M={},R={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[M]}]};Object.assign(M,{className:"variable",variants:[{begin:g.regex.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},R]});const x={className:"subst",begin:/\$\(/,end:/\)/,contains:[g.BACKSLASH_ESCAPE]},L={begin:/<<-?\s*(?=\w+)/,starts:{contains:[g.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},S={className:"string",begin:/"/,end:/"/,contains:[g.BACKSLASH_ESCAPE,M,x]};x.contains.push(S);const P={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},g.NUMBER_MODE,M]},U=g.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),V={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[g.inherit(g.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],literal:["true","false"],built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]},contains:[U,g.SHEBANG(),V,P,g.HASH_COMMENT_MODE,L,{match:/(\/[a-z._-]+)+/},S,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},M]}}},489:q=>{q.exports=function F(g){const w=g.regex,M=g.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),R="decltype\\(auto\\)",x="[a-zA-Z_]\\w*::",S="("+R+"|"+w.optional(x)+"[a-zA-Z_]\\w*"+w.optional("<[^<>]+>")+")",O={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},P={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[g.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},g.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},H={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},U={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},g.inherit(P,{className:"string"}),{className:"string",begin:/<.*?>/},M,g.C_BLOCK_COMMENT_MODE]},V={className:"title",begin:w.optional(x)+g.IDENT_RE,relevance:0},K=w.optional(x)+g.IDENT_RE+"\\s*\\(",J={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},ye=[U,O,M,g.C_BLOCK_COMMENT_MODE,H,P],_e={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:J,contains:ye.concat([{begin:/\(/,end:/\)/,keywords:J,contains:ye.concat(["self"]),relevance:0}]),relevance:0},be={begin:"("+S+"[\\*&\\s]+)+"+K,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:J,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:R,keywords:J,relevance:0},{begin:K,returnBegin:!0,contains:[g.inherit(V,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:J,relevance:0,contains:[M,g.C_BLOCK_COMMENT_MODE,P,H,O,{begin:/\(/,end:/\)/,keywords:J,relevance:0,contains:["self",M,g.C_BLOCK_COMMENT_MODE,P,H,O]}]},O,M,g.C_BLOCK_COMMENT_MODE,U]};return{name:"C",aliases:["h"],keywords:J,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},g.TITLE_MODE]}]),exports:{preprocessor:U,strings:P,keywords:J}}}},769:q=>{q.exports=function F(g){const w=g.regex,M=g.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),R="decltype\\(auto\\)",x="[a-zA-Z_]\\w*::",S="(?!struct)("+R+"|"+w.optional(x)+"[a-zA-Z_]\\w*"+w.optional("<[^<>]+>")+")",O={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},P={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[g.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},g.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},H={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},U={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},g.inherit(P,{className:"string"}),{className:"string",begin:/<.*?>/},M,g.C_BLOCK_COMMENT_MODE]},V={className:"title",begin:w.optional(x)+g.IDENT_RE,relevance:0},K=w.optional(x)+g.IDENT_RE+"\\s*\\(",Se={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},Le={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:w.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,g.IDENT_RE,w.lookahead(/(<[^<>]+>|)\s*\(/))},We=[Le,U,O,M,g.C_BLOCK_COMMENT_MODE,H,P],se={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:Se,contains:We.concat([{begin:/\(/,end:/\)/,keywords:Se,contains:We.concat(["self"]),relevance:0}]),relevance:0};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:Se,illegal:".]/,contains:[{begin:R,keywords:Se,relevance:0},{begin:K,returnBegin:!0,contains:[V],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[P,H]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:Se,relevance:0,contains:[M,g.C_BLOCK_COMMENT_MODE,P,H,O,{begin:/\(/,end:/\)/,keywords:Se,relevance:0,contains:["self",M,g.C_BLOCK_COMMENT_MODE,P,H,O]}]},O,M,g.C_BLOCK_COMMENT_MODE,U]},Le,We,[U,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",end:">",keywords:Se,contains:["self",O]},{begin:g.IDENT_RE+"::",keywords:Se},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}},945:q=>{q.exports=function F(g){const S={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},O=g.inherit(g.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),k={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},P={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},H=g.inherit(P,{illegal:/\n/}),U={className:"subst",begin:/\{/,end:/\}/,keywords:S},V=g.inherit(U,{illegal:/\n/}),K={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},g.BACKSLASH_ESCAPE,V]},ee={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},U]},Q=g.inherit(ee,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},V]});U.contains=[ee,K,P,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,k,g.C_BLOCK_COMMENT_MODE],V.contains=[Q,K,H,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,k,g.inherit(g.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const J={variants:[ee,K,P,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE]},ye={begin:"<",end:">",contains:[{beginKeywords:"in out"},O]},_e=g.IDENT_RE+"(<"+g.IDENT_RE+"(\\s*,\\s*"+g.IDENT_RE+")*>)?(\\[\\])?",be={begin:"@"+g.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:S,illegal:/::/,contains:[g.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},J,k,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},O,ye,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[O,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[O,ye,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_e+"\\s+)+"+g.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:S,contains:[{beginKeywords:["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"].join(" "),relevance:0},{begin:g.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[g.TITLE_MODE,ye],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:S,relevance:0,contains:[J,k,g.C_BLOCK_COMMENT_MODE]},g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},be]}}},67:q=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],M=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],x=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();q.exports=function L(S){const O=S.regex,k=(S=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:S.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[S.APOS_STRING_MODE,S.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:S.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(S),K=[S.APOS_STRING_MODE,S.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[k.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},k.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},k.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+M.join("|")+")"},{begin:":(:)?("+R.join("|")+")"}]},k.CSS_VARIABLE,{className:"attribute",begin:"\\b("+x.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[k.BLOCK_COMMENT,k.HEXCOLOR,k.IMPORTANT,k.CSS_NUMBER_MODE,...K,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...K,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},k.FUNCTION_DISPATCH]},{begin:O.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...K,k.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+g.join("|")+")\\b"}]}}},217:q=>{q.exports=function F(g){const w=g.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:w.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:w.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}},172:q=>{q.exports=function F(g){const L={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:L,illegal:"{q.exports=function F(g){const w=g.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[g.HASH_COMMENT_MODE,g.QUOTE_STRING_MODE,g.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:w.concat(/[_A-Za-z][_0-9A-Za-z]*/,w.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}},530:q=>{q.exports=function F(g){const w=g.regex,M={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:g.NUMBER_RE}]},R=g.COMMENT();R.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const x={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},L={className:"literal",begin:/\bon|off|true|false|yes|no\b/},S={className:"string",contains:[g.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},O={begin:/\[/,end:/\]/,contains:[R,L,x,S,M,"self"],relevance:0},U=w.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[R,{className:"section",begin:/\[+/,end:/\]+/},{begin:w.concat(U,"(\\s*\\.\\s*",U,")*",w.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[R,O,L,x,S,M]}}]}}},42:q=>{var F="[0-9](_*[0-9])*",g=`\\.(${F})`,w="[0-9a-fA-F](_*[0-9a-fA-F])*",M={className:"number",variants:[{begin:`(\\b(${F})((${g})|\\.)?|(${g}))[eE][+-]?(${F})[fFdD]?\\b`},{begin:`\\b(${F})((${g})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${g})[fFdD]?\\b`},{begin:`\\b(${F})[fFdD]\\b`},{begin:`\\b0[xX]((${w})\\.?|(${w})?\\.(${w}))[pP][+-]?(${F})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${w})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function R(L,S,O){return-1===O?"":L.replace(S,k=>R(L,S,O-1))}q.exports=function x(L){const S=L.regex,O="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",k=O+R("(?:<"+O+"~~~(?:\\s*,\\s*"+O+"~~~)*>)?",/~~~/g,2),K={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},ee={className:"meta",begin:"@"+O,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},Q={className:"params",begin:/\(/,end:/\)/,keywords:K,relevance:0,contains:[L.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:K,illegal:/<\/|#/,contains:[L.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},L.C_LINE_COMMENT_MODE,L.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[L.BACKSLASH_ESCAPE]},L.APOS_STRING_MODE,L.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,O],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[S.concat(/(?!else)/,O),/\s+/,O,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,O],className:{1:"keyword",3:"title.class"},contains:[Q,L.C_LINE_COMMENT_MODE,L.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+k+"\\s+)",L.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:K,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:K,relevance:0,contains:[ee,L.APOS_STRING_MODE,L.QUOTE_STRING_MODE,M,L.C_BLOCK_COMMENT_MODE]},L.C_LINE_COMMENT_MODE,L.C_BLOCK_COMMENT_MODE]},M,ee]}}},593:q=>{const F="[A-Za-z$_][0-9A-Za-z$_]*",g=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],w=["true","false","null","undefined","NaN","Infinity"],M=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],x=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],L=["arguments","this","super","console","window","document","localStorage","module","global"],S=[].concat(x,M,R);q.exports=function O(k){const P=k.regex,U=F,ee={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Vt,lt)=>{const jt=Vt[0].length+Vt.index,Xt=Vt.input[jt];if("<"===Xt||","===Xt)return void lt.ignoreMatch();let jn;">"===Xt&&(((Vt,{after:lt})=>{const jt="",On={match:[/const|var|let/,/\s+/,U,/\s*/,/=\s*/,/(async\s*)?/,P.lookahead(xn)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[Et]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:Q,exports:{PARAMS_CONTAINS:qt,CLASS_REFERENCE:hr},illegal:/#(?![$_A-z])/,contains:[k.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},k.APOS_STRING_MODE,k.QUOTE_STRING_MODE,Le,We,se,yt,be,hr,{className:"attr",begin:U+P.lookahead(":"),relevance:0},On,{begin:"("+k.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[yt,k.REGEXP_MODE,{className:"function",begin:xn,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:k.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:Q,contains:qt}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:ee.begin,"on:begin":ee.isTrulyOpeningTag,end:ee.end}],subLanguage:"xml",contains:[{begin:ee.begin,end:ee.end,skip:!0,contains:["self"]}]}]},an,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+k.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[Et,k.inherit(k.TITLE_MODE,{begin:U,className:"title.function"})]},{match:/\.\.\./,relevance:0},Br,{match:"\\$"+U,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[Et]},En,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},ft,co,{match:/\$[(.]/}]}}},28:q=>{q.exports=function F(g){const R=["true","false","null"],x={scope:"literal",beginKeywords:R.join(" ")};return{name:"JSON",keywords:{literal:R},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},g.QUOTE_STRING_MODE,x,g.C_NUMBER_MODE,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}},567:q=>{var F="[0-9](_*[0-9])*",g=`\\.(${F})`,w="[0-9a-fA-F](_*[0-9a-fA-F])*",M={className:"number",variants:[{begin:`(\\b(${F})((${g})|\\.)?|(${g}))[eE][+-]?(${F})[fFdD]?\\b`},{begin:`\\b(${F})((${g})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${g})[fFdD]?\\b`},{begin:`\\b(${F})[fFdD]\\b`},{begin:`\\b0[xX]((${w})\\.?|(${w})?\\.(${w}))[pP][+-]?(${F})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${w})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};q.exports=function R(x){const L={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},O={className:"symbol",begin:x.UNDERSCORE_IDENT_RE+"@"},k={className:"subst",begin:/\$\{/,end:/\}/,contains:[x.C_NUMBER_MODE]},P={className:"variable",begin:"\\$"+x.UNDERSCORE_IDENT_RE},H={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[P,k]},{begin:"'",end:"'",illegal:/\n/,contains:[x.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[x.BACKSLASH_ESCAPE,P,k]}]};k.contains.push(H);const U={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+x.UNDERSCORE_IDENT_RE+")?"},V={className:"meta",begin:"@"+x.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[x.inherit(H,{className:"string"}),"self"]}]},K=M,ee=x.COMMENT("/\\*","\\*/",{contains:[x.C_BLOCK_COMMENT_MODE]}),Q={variants:[{className:"type",begin:x.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},J=Q;return J.variants[1].contains=[Q],Q.variants[1].contains=[J],{name:"Kotlin",aliases:["kt","kts"],keywords:L,contains:[x.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),x.C_LINE_COMMENT_MODE,ee,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},O,U,V,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:L,relevance:5,contains:[{begin:x.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[x.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:L,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[Q,x.C_LINE_COMMENT_MODE,ee],relevance:0},x.C_LINE_COMMENT_MODE,ee,U,V,H,x.C_NUMBER_MODE]},ee]},{begin:[/class|interface|trait/,/\s+/,x.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},x.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},U,V]},H,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},K]}}},867:q=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],M=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],x=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),L=M.concat(R);q.exports=function S(O){const k=(O=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:O.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[O.APOS_STRING_MODE,O.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:O.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(O),P=L,U="[\\w-]+",V="("+U+"|@\\{"+U+"\\})",K=[],ee=[],Q=function(Ye){return{className:"string",begin:"~?"+Ye+".*?"+Ye}},J=function(Ye,sn,qt){return{className:Ye,begin:sn,relevance:qt}},ye={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},_e={begin:"\\(",end:"\\)",contains:ee,keywords:ye,relevance:0};ee.push(O.C_LINE_COMMENT_MODE,O.C_BLOCK_COMMENT_MODE,Q("'"),Q('"'),k.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},k.HEXCOLOR,_e,J("variable","@@?"+U,10),J("variable","@\\{"+U+"\\}"),J("built_in","~?`[^`]*?`"),{className:"attribute",begin:U+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},k.IMPORTANT,{beginKeywords:"and not"},k.FUNCTION_DISPATCH);const be=ee.concat({begin:/\{/,end:/\}/,contains:K}),Se={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(ee)},Le={begin:V+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},k.CSS_VARIABLE,{className:"attribute",begin:"\\b("+x.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:ee}}]},We={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:ye,returnEnd:!0,contains:ee,relevance:0}},se={className:"variable",variants:[{begin:"@"+U+"\\s*:",relevance:15},{begin:"@"+U}],starts:{end:"[;}]",returnEnd:!0,contains:be}},He={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:V,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[O.C_LINE_COMMENT_MODE,O.C_BLOCK_COMMENT_MODE,Se,J("keyword","all\\b"),J("variable","@\\{"+U+"\\}"),{begin:"\\b("+g.join("|")+")\\b",className:"selector-tag"},k.CSS_NUMBER_MODE,J("selector-tag",V,0),J("selector-id","#"+V),J("selector-class","\\."+V,0),J("selector-tag","&",0),k.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+M.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+R.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:be},{begin:"!important"},k.FUNCTION_DISPATCH]},yt={begin:U+`:(:)?(${P.join("|")})`,returnBegin:!0,contains:[He]};return K.push(O.C_LINE_COMMENT_MODE,O.C_BLOCK_COMMENT_MODE,We,se,yt,Le,He,Se,k.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:K}}},342:q=>{q.exports=function F(g){const w="\\[=*\\[",M="\\]=*\\]",R={begin:w,end:M,contains:["self"]},x=[g.COMMENT("--(?!"+w+")","$"),g.COMMENT("--"+w,M,{contains:[R],relevance:10})];return{name:"Lua",keywords:{$pattern:g.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:x.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[g.inherit(g.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:x}].concat(x)},g.C_NUMBER_MODE,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,{className:"string",begin:w,end:M,contains:[R],relevance:5}])}}},158:q=>{q.exports=function F(g){const w={className:"variable",variants:[{begin:"\\$\\("+g.UNDERSCORE_IDENT_RE+"\\)",contains:[g.BACKSLASH_ESCAPE]},{begin:/\$[@%{q.exports=function F(g){const M={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},k={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:g.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},P={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},H={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]},U=g.inherit(P,{contains:[]}),V=g.inherit(H,{contains:[]});P.contains.push(V),H.contains.push(U);let K=[M,k];return[P,H,U,V].forEach(J=>{J.contains=J.contains.concat(K)}),K=K.concat(P,H),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:K},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:K}]}]},M,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},P,H,{className:"quote",begin:"^>\\s+",contains:K,end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},k,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}},14:q=>{q.exports=function F(g){const M=/[a-zA-Z@][a-zA-Z0-9_]*/,k={$pattern:M,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:M,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"/,end:/$/,illegal:"\\n"},g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+k.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:k,contains:[g.UNDERSCORE_TITLE_MODE]},{begin:"\\."+g.UNDERSCORE_IDENT_RE,relevance:0}]}}},995:q=>{q.exports=function F(g){const w=g.regex,R=/[dualxmsipngr]{0,12}/,x={$pattern:/[\w.]+/,keyword:["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"].join(" ")},L={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:x},S={begin:/->\{/,end:/\}/},O={variants:[{begin:/\$\d/},{begin:w.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},k=[g.BACKSLASH_ESCAPE,L,O],P=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],H=(K,ee,Q="\\1")=>{const J="\\1"===Q?Q:w.concat(Q,ee);return w.concat(w.concat("(?:",K,")"),ee,/(?:\\.|[^\\\/])*?/,J,/(?:\\.|[^\\\/])*?/,Q,R)},U=(K,ee,Q)=>w.concat(w.concat("(?:",K,")"),ee,/(?:\\.|[^\\\/])*?/,Q,R),V=[O,g.HASH_COMMENT_MODE,g.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),S,{className:"string",contains:k,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[g.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[g.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+g.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[g.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:H("s|tr|y",w.either(...P,{capture:!0}))},{begin:H("s|tr|y","\\(","\\)")},{begin:H("s|tr|y","\\[","\\]")},{begin:H("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:U("(?:m|qr)?",/\//,/\//)},{begin:U("m|qr",w.either(...P,{capture:!0}),/\1/)},{begin:U("m|qr",/\(/,/\)/)},{begin:U("m|qr",/\[/,/\]/)},{begin:U("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[g.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return L.contains=V,S.contains=V,{name:"Perl",aliases:["pl","pm"],keywords:x,contains:V}}},779:q=>{q.exports=function F(g){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},g.inherit(g.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),g.inherit(g.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}},504:q=>{q.exports=function F(g){const w=g.regex,M=/(?![A-Za-z0-9])(?![$])/,R=w.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,M),x=w.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,M),L={scope:"variable",match:"\\$+"+R},O={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},k=g.inherit(g.APOS_STRING_MODE,{illegal:null}),U="[ \t\n]",V={scope:"string",variants:[g.inherit(g.QUOTE_STRING_MODE,{illegal:null,contains:g.QUOTE_STRING_MODE.contains.concat(O)}),k,g.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:g.QUOTE_STRING_MODE.contains.concat(O)})]},K={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},ee=["false","null","true"],Q=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],J=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],_e={keyword:Q,literal:(qt=>{const Et=[];return qt.forEach(ft=>{Et.push(ft),ft.toLowerCase()===ft?Et.push(ft.toUpperCase()):Et.push(ft.toLowerCase())}),Et})(ee),built_in:J},be=qt=>qt.map(Et=>Et.replace(/\|\d+$/,"")),Se={variants:[{match:[/new/,w.concat(U,"+"),w.concat("(?!",be(J).join("\\b|"),"\\b)"),x],scope:{1:"keyword",4:"title.class"}}]},Le=w.concat(R,"\\b(?!\\()"),We={variants:[{match:[w.concat(/::/,w.lookahead(/(?!class\b)/)),Le],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[x,w.concat(/::/,w.lookahead(/(?!class\b)/)),Le],scope:{1:"title.class",3:"variable.constant"}},{match:[x,w.concat("::",w.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[x,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},se={scope:"attr",match:w.concat(R,w.lookahead(":"),w.lookahead(/(?!::)/))},He={relevance:0,begin:/\(/,end:/\)/,keywords:_e,contains:[se,L,We,g.C_BLOCK_COMMENT_MODE,V,K,Se]},yt={relevance:0,match:[/\b/,w.concat("(?!fn\\b|function\\b|",be(Q).join("\\b|"),"|",be(J).join("\\b|"),"\\b)"),R,w.concat(U,"*"),w.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[He]};He.contains.push(yt);const Ye=[se,We,g.C_BLOCK_COMMENT_MODE,V,K,Se];return{case_insensitive:!1,keywords:_e,contains:[{begin:w.concat(/#\[\s*/,x),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:ee,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:ee,keyword:["new","array"]},contains:["self",...Ye]},...Ye,{scope:"meta",match:x}]},g.HASH_COMMENT_MODE,g.COMMENT("//","$"),g.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:g.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},L,yt,We,{match:[/const/,/\s/,R],scope:{1:"keyword",3:"variable.constant"}},Se,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},g.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:_e,contains:["self",L,We,g.C_BLOCK_COMMENT_MODE,V,K]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},g.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[g.inherit(g.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},g.UNDERSCORE_TITLE_MODE]},V,K]}}},643:q=>{q.exports=function F(g){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}},152:q=>{q.exports=function F(g){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}},344:q=>{q.exports=function F(g){const w=g.regex,M=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),R=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],O={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:R,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},k={className:"meta",begin:/^(>>>|\.\.\.) /},P={className:"subst",begin:/\{/,end:/\}/,keywords:O,illegal:/#/},H={begin:/\{\{/,relevance:0},U={className:"string",contains:[g.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[g.BACKSLASH_ESCAPE,k],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[g.BACKSLASH_ESCAPE,k],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[g.BACKSLASH_ESCAPE,k,H,P]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[g.BACKSLASH_ESCAPE,k,H,P]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[g.BACKSLASH_ESCAPE,H,P]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[g.BACKSLASH_ESCAPE,H,P]},g.APOS_STRING_MODE,g.QUOTE_STRING_MODE]},V="[0-9](_?[0-9])*",K=`(\\b(${V}))?\\.(${V})|\\b(${V})\\.`,ee=`\\b|${R.join("|")}`,Q={className:"number",relevance:0,variants:[{begin:`(\\b(${V})|(${K}))[eE][+-]?(${V})[jJ]?(?=${ee})`},{begin:`(${K})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${ee})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${ee})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${ee})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${ee})`},{begin:`\\b(${V})[jJ](?=${ee})`}]},J={className:"comment",begin:w.lookahead(/# type:/),end:/$/,keywords:O,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},ye={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:O,contains:["self",k,Q,U,g.HASH_COMMENT_MODE]}]};return P.contains=[U,Q,k],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:O,illegal:/(<\/|->|\?)|=>/,contains:[k,Q,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},U,J,g.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,M],scope:{1:"keyword",3:"title.function"},contains:[ye]},{variants:[{match:[/\bclass/,/\s+/,M,/\s*/,/\(\s*/,M,/\s*\)/]},{match:[/\bclass/,/\s+/,M]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[Q,ye,U]}]}}},690:q=>{q.exports=function F(g){const w=g.regex,M=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,R=w.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),x=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,L=w.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:M,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[g.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:w.lookahead(w.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:M},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),g.HASH_COMMENT_MODE,{scope:"string",contains:[g.BACKSLASH_ESCAPE],variants:[g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[x,R]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,R]},{scope:{1:"punctuation",2:"number"},match:[L,R]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,R]}]},{scope:{3:"operator"},match:[M,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:x},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:L},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}},130:q=>{q.exports=function F(g){const w=g.regex,M="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",R=w.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),x=w.concat(R,/(::\w+)*/),L={"variable.constant":["__FILE__","__LINE__"],"variable.language":["self","super"],keyword:["alias","and","attr_accessor","attr_reader","attr_writer","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","include","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield"],built_in:["proc","lambda"],literal:["true","false","nil"]},S={className:"doctag",begin:"@[A-Za-z]+"},O={begin:"#<",end:">"},k=[g.COMMENT("#","$",{contains:[S]}),g.COMMENT("^=begin","^=end",{contains:[S],relevance:10}),g.COMMENT("^__END__",g.MATCH_NOTHING_RE)],P={className:"subst",begin:/#\{/,end:/\}/,keywords:L},H={className:"string",contains:[g.BACKSLASH_ESCAPE,P],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:w.concat(/<<[-~]?'?/,w.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[g.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[g.BACKSLASH_ESCAPE,P]})]}]},V="[0-9](_?[0-9])*",ee={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:L}]},be=[H,{variants:[{match:[/class\s+/,x,/\s+<\s+/,x]},{match:[/class\s+/,x]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:L},{relevance:0,match:[x,/\.new[ (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{match:[/def/,/\s+/,M],scope:{1:"keyword",3:"title.function"},contains:[ee]},{begin:g.IDENT_RE+"::"},{className:"symbol",begin:g.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[H,{begin:M}],relevance:0},{className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${V}))?([eE][+-]?(${V})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:L},{begin:"("+g.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[g.BACKSLASH_ESCAPE,P],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(O,k),relevance:0}].concat(O,k);P.contains=be,ee.contains=be;const se=[{begin:/^\s*=>/,starts:{end:"$",contains:be}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:L,contains:be}}];return k.unshift(O),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:L,illegal:/\/\*/,contains:[g.SHEBANG({binary:"ruby"})].concat(se).concat(k).concat(be)}}},16:q=>{q.exports=function F(g){const w=g.regex,M={className:"title.function.invoke",relevance:0,begin:w.concat(/\b/,/(?!let\b)/,g.IDENT_RE,w.lookahead(/\s*\(/))},R="([ui](8|16|32|64|128|size)|f(32|64))?",S=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],O=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:g.IDENT_RE+"!?",type:O,keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"],literal:["true","false","Some","None","Ok","Err"],built_in:S},illegal:""},M]}}},382:q=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],M=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],x=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();q.exports=function L(S){const O=(S=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:S.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[S.APOS_STRING_MODE,S.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:S.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(S),k=R,P=M,H="@[a-z-]+",K={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[S.C_LINE_COMMENT_MODE,S.C_BLOCK_COMMENT_MODE,O.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},O.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+g.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+P.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+k.join("|")+")"},K,{begin:/\(/,end:/\)/,contains:[O.CSS_NUMBER_MODE]},O.CSS_VARIABLE,{className:"attribute",begin:"\\b("+x.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[O.BLOCK_COMMENT,K,O.HEXCOLOR,O.CSS_NUMBER_MODE,S.QUOTE_STRING_MODE,S.APOS_STRING_MODE,O.IMPORTANT,O.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:H,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},contains:[{begin:H,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},K,S.QUOTE_STRING_MODE,S.APOS_STRING_MODE,O.HEXCOLOR,O.CSS_NUMBER_MODE]},O.FUNCTION_DISPATCH]}}},54:q=>{q.exports=function F(g){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}},208:q=>{q.exports=function F(g){const w=g.regex,M=g.COMMENT("--","$"),L=["true","false","unknown"],O=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],H=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],V=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],K=H,ee=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter(be=>!H.includes(be)),ye={begin:w.concat(/\b/,w.either(...K),/\s*\(/),relevance:0,keywords:{built_in:K}};return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:function _e(be,{exceptions:Se,when:Le}={}){const We=Le;return Se=Se||[],be.map(se=>se.match(/\|\d+$/)||Se.includes(se)?se:We(se)?`${se}|0`:se)}(ee,{when:be=>be.length<3}),literal:L,type:O,built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]},contains:[{begin:w.either(...V),relevance:0,keywords:{$pattern:/[\w\.]+/,keyword:ee.concat(V),literal:L,type:O}},{className:"type",begin:w.either("double precision","large object","with timezone","without timezone")},ye,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{begin:/""/}]},g.C_NUMBER_MODE,g.C_BLOCK_COMMENT_MODE,M,{className:"operator",begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}},491:q=>{function F(se){return se?"string"==typeof se?se:se.source:null}function g(se){return w("(?=",se,")")}function w(...se){return se.map(yt=>F(yt)).join("")}function R(...se){return"("+(function M(se){const He=se[se.length-1];return"object"==typeof He&&He.constructor===Object?(se.splice(se.length-1,1),He):{}}(se).capture?"":"?:")+se.map(Ye=>F(Ye)).join("|")+")"}const x=se=>w(/\b/,se,/\w$/.test(se)?/\b/:/\B/),L=["Protocol","Type"].map(x),S=["init","self"].map(x),O=["Any","Self"],k=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],P=["false","nil","true"],H=["assignment","associativity","higherThan","left","lowerThan","none","right"],U=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],V=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],K=R(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),ee=R(K,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Q=w(K,ee,"*"),J=R(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),ye=R(J,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),_e=w(J,ye,"*"),be=w(/[A-Z]/,ye,"*"),Se=["autoclosure",w(/convention\(/,R("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",w(/objc\(/,_e,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],Le=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];q.exports=function We(se){const He={match:/\s+/,relevance:0},yt=se.COMMENT("/\\*","\\*/",{contains:["self"]}),Ye=[se.C_LINE_COMMENT_MODE,yt],sn={match:[/\./,R(...L,...S)],className:{2:"keyword"}},qt={match:w(/\./,R(...k)),relevance:0},Et=k.filter(Ze=>"string"==typeof Ze).concat(["_|0"]),hr={variants:[{className:"keyword",match:R(...k.filter(Ze=>"string"!=typeof Ze).concat(O).map(x),...S)}]},bn={$pattern:R(/\b\w+/,/#\w+/),keyword:Et.concat(U),literal:P},an=[sn,qt,hr],En=[{match:w(/\./,R(...V)),relevance:0},{className:"built_in",match:w(/\b/,R(...V),/(?=\()/)}],Br={match:/->/,relevance:0},xn=[Br,{className:"operator",relevance:0,variants:[{match:Q},{match:`\\.(\\.|${ee})+`}]}],On="([0-9]_*)+",Vt="([0-9a-fA-F]_*)+",lt={className:"number",relevance:0,variants:[{match:`\\b(${On})(\\.(${On}))?([eE][+-]?(${On}))?\\b`},{match:`\\b0x(${Vt})(\\.(${Vt}))?([pP][+-]?(${On}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},jt=(Ze="")=>({className:"subst",variants:[{match:w(/\\/,Ze,/[0\\tnr"']/)},{match:w(/\\/,Ze,/u\{[0-9a-fA-F]{1,8}\}/)}]}),Xt=(Ze="")=>({className:"subst",match:w(/\\/,Ze,/[\t ]*(?:[\r\n]|\r\n)/)}),jn=(Ze="")=>({className:"subst",label:"interpol",begin:w(/\\/,Ze,/\(/),end:/\)/}),Jt=(Ze="")=>({begin:w(Ze,/"""/),end:w(/"""/,Ze),contains:[jt(Ze),Xt(Ze),jn(Ze)]}),Ur=(Ze="")=>({begin:w(Ze,/"/),end:w(/"/,Ze),contains:[jt(Ze),jn(Ze)]}),Hr={className:"string",variants:[Jt(),Jt("#"),Jt("##"),Jt("###"),Ur(),Ur("#"),Ur("##"),Ur("###")]},Ke={match:w(/`/,_e,/`/)},Vr=[Ke,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${ye}+`}],fr=[{match:/(@|#(un)?)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:Le,contains:[...xn,lt,Hr]}]}},{className:"keyword",match:w(/@/,R(...Se))},{className:"meta",match:w(/@/,_e)}],Gt={match:g(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:w(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,ye,"+")},{className:"type",match:be,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:w(/\s+&\s+/,g(be)),relevance:0}]},lo={begin://,keywords:bn,contains:[...Ye,...an,...fr,Br,Gt]};Gt.contains.push(lo);const wn={begin:/\(/,end:/\)/,relevance:0,keywords:bn,contains:["self",{match:w(_e,/\s*:/),keywords:"_|0",relevance:0},...Ye,...an,...En,...xn,lt,Hr,...Vr,...fr,Gt]},Bo={begin://,contains:[...Ye,Gt]},jr={begin:/\(/,end:/\)/,keywords:bn,contains:[{begin:R(g(w(_e,/\s*:/)),g(w(_e,/\s+/,_e,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:_e}]},...Ye,...an,...xn,lt,Hr,...fr,Gt,wn],endsParent:!0,illegal:/["']/},uo={match:[/func/,/\s+/,R(Ke.match,_e,Q)],className:{1:"keyword",3:"title.function"},contains:[Bo,jr,He],illegal:[/\[/,/%/]},Zn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[Bo,jr,He],illegal:/\[|%/},po={match:[/operator/,/\s+/,Q],className:{1:"keyword",3:"title"}},Vs={begin:[/precedencegroup/,/\s+/,be],className:{1:"keyword",3:"title"},contains:[Gt],keywords:[...H,...P],end:/}/};for(const Ze of Hr.variants){const _i=Ze.contains.find(js=>"interpol"===js.label);_i.keywords=bn;const zr=[...an,...En,...xn,lt,Hr,...Vr];_i.contains=[...zr,{begin:/\(/,end:/\)/,contains:["self",...zr]}]}return{name:"Swift",keywords:bn,contains:[...Ye,uo,Zn,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:bn,contains:[se.inherit(se.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...an]},po,Vs,{beginKeywords:"import",end:/$/,contains:[...Ye],relevance:0},...an,...En,...xn,lt,Hr,...Vr,...fr,Gt,wn]}}},585:q=>{const F="[A-Za-z$_][0-9A-Za-z$_]*",g=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],w=["true","false","null","undefined","NaN","Infinity"],M=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],x=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],L=["arguments","this","super","console","window","document","localStorage","module","global"],S=[].concat(x,M,R);q.exports=function k(P){const H=function O(P){const H=P.regex,V=F,Q={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(lt,jt)=>{const Xt=lt[0].length+lt.index,jn=lt.input[Xt];if("<"===jn||","===jn)return void jt.ignoreMatch();let Jt;">"===jn&&(((lt,{after:jt})=>{const Xt="",Vt={match:[/const|var|let/,/\s+/,V,/\s*/,/=\s*/,/(async\s*)?/,H.lookahead(On)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[ft]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:J,exports:{PARAMS_CONTAINS:Et,CLASS_REFERENCE:bn},illegal:/#(?![$_A-z])/,contains:[P.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},P.APOS_STRING_MODE,P.QUOTE_STRING_MODE,We,se,He,Ye,Se,bn,{className:"attr",begin:V+H.lookahead(":"),relevance:0},Vt,{begin:"("+P.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[Ye,P.REGEXP_MODE,{className:"function",begin:On,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:P.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:J,contains:Et}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:Q.begin,"on:begin":Q.isTrulyOpeningTag,end:Q.end}],subLanguage:"xml",contains:[{begin:Q.begin,end:Q.end,skip:!0,contains:["self"]}]}]},Rn,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+P.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[ft,P.inherit(P.TITLE_MODE,{begin:V,className:"title.function"})]},{match:/\.\.\./,relevance:0},co,{match:"\\$"+V,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[ft]},Br,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},hr,xn,{match:/\$[(.]/}]}}(P),U=F,V=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],K={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[H.exports.CLASS_REFERENCE]},ee={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:V},contains:[H.exports.CLASS_REFERENCE]},ye={$pattern:F,keyword:g.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]),literal:w,built_in:S.concat(V),"variable.language":L},_e={className:"meta",begin:"@"+U},be=(Le,We,se)=>{const He=Le.contains.findIndex(yt=>yt.label===We);if(-1===He)throw new Error("can not find mode to replace");Le.contains.splice(He,1,se)};return Object.assign(H.keywords,ye),H.exports.PARAMS_CONTAINS.push(_e),H.contains=H.contains.concat([_e,K,ee]),be(H,"shebang",P.SHEBANG()),be(H,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/}),H.contains.find(Le=>"func.def"===Le.label).relevance=0,Object.assign(H,{name:"TypeScript",aliases:["ts","tsx"]}),H}},735:q=>{q.exports=function F(g){const w=g.regex,x=/\d{1,2}\/\d{1,2}\/\d{4}/,L=/\d{4}-\d{1,2}-\d{1,2}/,S=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,O=/\d{1,2}(:\d{1,2}){1,2}/,k={className:"literal",variants:[{begin:w.concat(/# */,w.either(L,x),/ *#/)},{begin:w.concat(/# */,O,/ *#/)},{begin:w.concat(/# */,S,/ *#/)},{begin:w.concat(/# */,w.either(L,x),/ +/,w.either(S,O),/ *#/)}]},U=g.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),V=g.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},k,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},U,V,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[V]}]}}},946:q=>{q.exports=function F(g){const w=g.COMMENT(/\(;/,/;\)/);return w.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[g.COMMENT(/;;/,/$/),w,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},g.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}}},133:q=>{q.exports=function F(g){const w=g.regex,M=w.concat(/[\p{L}_]/u,w.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),x={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},L={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},S=g.inherit(L,{begin:/\(/,end:/\)/}),O=g.inherit(g.APOS_STRING_MODE,{className:"string"}),k=g.inherit(g.QUOTE_STRING_MODE,{className:"string"}),P={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[L,k,O,S,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[L,S,k,O]}]}]},g.COMMENT(//,{relevance:10}),{begin://,relevance:10},x,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[k]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[P],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[P],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:w.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:M,relevance:0,starts:P}]},{className:"tag",begin:w.concat(/<\//,w.lookahead(w.concat(M,/>/))),contains:[{className:"name",begin:M,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},917:q=>{q.exports=function F(g){const w="true false yes no null",M="[\\w#;/?:@&=+$,.~*'()[\\]]+",L={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[g.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},S=g.inherit(L,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),V={end:",",endsWithParent:!0,excludeEnd:!0,keywords:w,relevance:0},Q=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+M},{className:"type",begin:"!<"+M+">"},{className:"type",begin:"!"+M},{className:"type",begin:"!!"+M},{className:"meta",begin:"&"+g.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+g.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},g.HASH_COMMENT_MODE,{beginKeywords:w,keywords:{literal:w}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:g.C_NUMBER_RE+"\\b",relevance:0},{begin:/\{/,end:/\}/,contains:[V],illegal:"\\n",relevance:0},{begin:"\\[",end:"\\]",contains:[V],illegal:"\\n",relevance:0},L],J=[...Q];return J.pop(),J.push(S),V.contains=J,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:Q}}}},q=>{q(q.s=803)}]); \ No newline at end of file diff --git a/docs/main.c20fee4ab65b1dfc.js b/docs/main.c20fee4ab65b1dfc.js deleted file mode 100644 index 90a0f5d..0000000 --- a/docs/main.c20fee4ab65b1dfc.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkdevnet=self.webpackChunkdevnet||[]).push([[792],{818:(G,$,g)=>{"use strict";let N=null,B=1;const A=Symbol("SIGNAL");function _(e){const t=N;return N=e,t}function Z(e){if((!lt(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==B)){if(!e.producerMustRecompute(e)&&!$e(e))return e.dirty=!1,void(e.lastCleanEpoch=B);e.producerRecomputeValue(e),e.dirty=!1,e.lastCleanEpoch=B}}function $e(e){Fe(e);for(let t=0;t0}function Fe(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}let Dn=null;function Ke(e){return"function"==typeof e}function Io(e){const n=e(r=>{Error.call(r),r.stack=(new Error).stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}const So=Io(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((r,o)=>`${o+1}) ${r.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=n});function Ar(e,t){if(e){const n=e.indexOf(t);0<=n&&e.splice(n,1)}}class Lt{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;const{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(const i of n)i.remove(this);else n.remove(this);const{initialTeardown:r}=this;if(Ke(r))try{r()}catch(i){t=i instanceof So?i.errors:[i]}const{_finalizers:o}=this;if(o){this._finalizers=null;for(const i of o)try{sr(i)}catch(s){t=t??[],s instanceof So?t=[...t,...s.errors]:t.push(s)}}if(t)throw new So(t)}}add(t){var n;if(t&&t!==this)if(this.closed)sr(t);else{if(t instanceof Lt){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}}_hasParent(t){const{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){const{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){const{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&Ar(n,t)}remove(t){const{_finalizers:n}=this;n&&Ar(n,t),t instanceof Lt&&t._removeParent(this)}}Lt.EMPTY=(()=>{const e=new Lt;return e.closed=!0,e})();const Jo=Lt.EMPTY;function ei(e){return e instanceof Lt||e&&"closed"in e&&Ke(e.remove)&&Ke(e.add)&&Ke(e.unsubscribe)}function sr(e){Ke(e)?e():e.unsubscribe()}const Bt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Xr={setTimeout(e,t,...n){const{delegate:r}=Xr;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){const{delegate:t}=Xr;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function To(e){Xr.setTimeout(()=>{const{onUnhandledError:t}=Bt;if(!t)throw e;t(e)})}function pn(){}const No=Jr("C",void 0,void 0);function Jr(e,t,n){return{kind:e,value:t,error:n}}let Vn=null;function eo(e){if(Bt.useDeprecatedSynchronousErrorHandling){const t=!Vn;if(t&&(Vn={errorThrown:!1,error:null}),e(),t){const{errorThrown:n,error:r}=Vn;if(Vn=null,n)throw r}}else e()}class Ze extends Lt{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,ei(t)&&t.add(this)):this.destination=dc}static create(t,n,r){return new Cs(t,n,r)}next(t){this.isStopped?ri(function xr(e){return Jr("N",e,void 0)}(t),this):this._next(t)}error(t){this.isStopped?ri(function ar(e){return Jr("E",void 0,e)}(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?ri(No,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const ti=Function.prototype.bind;function Rr(e,t){return ti.call(e,t)}class Es{constructor(t){this.partialObserver=t}next(t){const{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){ni(r)}}error(t){const{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){ni(r)}else ni(t)}complete(){const{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){ni(n)}}}class Cs extends Ze{constructor(t,n,r){let o;if(super(),Ke(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&Bt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Rr(t.next,i),error:t.error&&Rr(t.error,i),complete:t.complete&&Rr(t.complete,i)}):o=t}this.destination=new Es(o)}}function ni(e){Bt.useDeprecatedSynchronousErrorHandling?function ws(e){Bt.useDeprecatedSynchronousErrorHandling&&Vn&&(Vn.errorThrown=!0,Vn.error=e)}(e):To(e)}function ri(e,t){const{onStoppedNotification:n}=Bt;n&&Xr.setTimeout(()=>n(e,t))}const dc={closed:!0,next:pn,error:function _s(e){throw e},complete:pn},Ds="function"==typeof Symbol&&Symbol.observable||"@@observable";function to(e){return e}function b(e){return 0===e.length?to:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}let D=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const i=function pt(e){return e&&e instanceof Ze||function _e(e){return e&&Ke(e.next)&&Ke(e.error)&&Ke(e.complete)}(e)&&ei(e)}(n)?n:new Cs(n,r,o);return eo(()=>{const{operator:s,source:u}=this;i.add(s?s.call(i,u):u?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return new(r=z(r))((o,i)=>{const s=new Cs({next:u=>{try{n(u)}catch(d){i(d),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return null===(r=this.source)||void 0===r?void 0:r.subscribe(n)}[Ds](){return this}pipe(...n){return b(n)(this)}toPromise(n){return new(n=z(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function z(e){var t;return null!==(t=e??Bt.Promise)&&void 0!==t?t:Promise}const ft=Io(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let K=(()=>{class e extends D{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){const r=new Q(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new ft}next(n){eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const r of this.currentObservers)r.next(n)}})}error(n){eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;const{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){eo(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return(null===(n=this.observers)||void 0===n?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){const{hasError:r,isStopped:o,observers:i}=this;return r||o?Jo:(this.currentObservers=null,i.push(n),new Lt(()=>{this.currentObservers=null,Ar(i,n)}))}_checkFinalizedStatuses(n){const{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){const n=new D;return n.source=this,n}}return e.create=(t,n)=>new Q(t,n),e})();class Q extends K{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.next)||void 0===r||r.call(n,t)}error(t){var n,r;null===(r=null===(n=this.destination)||void 0===n?void 0:n.error)||void 0===r||r.call(n,t)}complete(){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===n||n.call(t)}_subscribe(t){var n,r;return null!==(r=null===(n=this.source)||void 0===n?void 0:n.subscribe(t))&&void 0!==r?r:Jo}}class ne extends K{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){const{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}}function bt(e){return Ke(e?.lift)}function Re(e){return t=>{if(bt(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function dt(e,t,n,r,o){return new Is(e,t,n,r,o)}class Is extends Ze{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(u){try{n(u)}catch(d){t.error(d)}}:super._next,this._error=o?function(u){try{o(u)}catch(d){t.error(d)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(u){t.error(u)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:n}=this;super.unsubscribe(),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}}}function Ve(e,t){return Re((n,r)=>{let o=0;n.subscribe(dt(r,i=>{r.next(e.call(t,i,o++))}))})}const oi="https://g.co/ng/security#xss";class L extends Error{constructor(t,n){super(function no(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function jn(e){return{toString:e}.toString()}const nn="__parameters__";function oo(e,t,n){return jn(()=>{const r=function Ms(e){return function(...n){if(e){const r=e(...n);for(const o in r)this[o]=r[o]}}}(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;const s=new o(...i);return u.annotation=s,u;function u(d,h,p){const f=d.hasOwnProperty(nn)?d[nn]:Object.defineProperty(d,nn,{value:[]})[nn];for(;f.length<=p;)f.push(null);return(f[p]=f[p]||[]).push(s),d}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}const je=globalThis;function ee(e){for(let t in e)if(e[t]===ee)return t;throw Error("Could not find renamed property on target object.")}function Te(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Te).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function rn(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const si=ee({__forward_ref__:ee});function Ut(e){return e.__forward_ref__=Ut,e.toString=function(){return Te(this())},e}function oe(e){return Ao(e)?e():e}function Ao(e){return"function"==typeof e&&e.hasOwnProperty(si)&&e.__forward_ref__===Ut}function P(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Me(e){return{providers:e.providers||[],imports:e.imports||[]}}function fn(e){return mc(e,yc)||mc(e,bg)}function mc(e,t){return e.hasOwnProperty(t)?e[t]:null}function vc(e){return e&&(e.hasOwnProperty(Vu)||e.hasOwnProperty(f1))?e[Vu]:null}const yc=ee({\u0275prov:ee}),Vu=ee({\u0275inj:ee}),bg=ee({ngInjectableDef:ee}),f1=ee({ngInjectorDef:ee});class te{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=P({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Wu(e){return e&&!!e.\u0275providers}const Os=ee({\u0275cmp:ee}),Ku=ee({\u0275dir:ee}),Yu=ee({\u0275pipe:ee}),Eg=ee({\u0275mod:ee}),Lr=ee({\u0275fac:ee}),ks=ee({__NG_ELEMENT_ID__:ee}),Cg=ee({__NG_ENV_ID__:ee});function ge(e){return"string"==typeof e?e:null==e?"":String(e)}function Zu(e,t){throw new L(-201,!1)}var Oe=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(Oe||{});let Qu;function _g(){return Qu}function gn(e){const t=Qu;return Qu=e,t}function Dg(e,t,n){const r=fn(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&Oe.Optional?null:void 0!==t?t:void Zu()}const Ps={},Xu="__NG_DI_FLAG__",bc="ngTempTokenPath",w1=/\n/gm,Ig="__source";let ai;function so(e){const t=ai;return ai=e,t}function _1(e,t=Oe.Default){if(void 0===ai)throw new L(-203,!1);return null===ai?Dg(e,void 0,t):ai.get(e,t&Oe.Optional?null:void 0,t)}function ue(e,t=Oe.Default){return(_g()||_1)(oe(e),t)}function F(e,t=Oe.Default){return ue(e,wc(t))}function wc(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Ju(e){const t=[];for(let n=0;nArray.isArray(n)?ci(n,t):t(n))}function Tg(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function _c(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}const lr={},Be=[],Ro=new te(""),Ag=new te("",-1),nd=new te("");class Ic{get(t,n=Ps){if(n===Ps){const r=new Error(`NullInjectorError: No provider for ${Te(t)}!`);throw r.name="NullInjectorError",r}return n}}var Sc=function(e){return e[e.OnPush=0]="OnPush",e[e.Default=1]="Default",e}(Sc||{}),zn=function(e){return e[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",e}(zn||{}),qn=function(e){return e[e.None=0]="None",e[e.SignalBased=1]="SignalBased",e[e.HasDecoratorInputTransform=2]="HasDecoratorInputTransform",e}(qn||{});function x1(e,t,n){let r=e.length;for(;;){const o=e.indexOf(t,n);if(-1===o)return o;if(0===o||e.charCodeAt(o-1)<=32){const i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}function rd(e,t,n){let r=0;for(;rt){s=i-1;break}}}for(;i-1){let i;for(;++oi?"":o[p+1].toLowerCase(),2&r&&h!==f){if(Gn(r))return!1;s=!0}}}}else{if(!s&&!Gn(r)&&!Gn(d))return!1;if(s&&Gn(d))continue;s=!1,r=d|1&r}}return Gn(r)||s}function Gn(e){return!(1&e)}function P1(e,t,n,r){if(null===t)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+u+'"':"")+"]"}else 8&r?o+="."+s:4&r&&(o+=" "+s);else""!==o&&!Gn(s)&&(t+=Lg(i,o),o=""),r=s,i=i||!Gn(r);n++}return""!==o&&(t+=Lg(i,o)),t}function De(e){return jn(()=>{const t=Fg(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===Sc.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||zn.Emulated,styles:e.styles||Be,_:null,schemas:e.schemas||null,tView:null,id:""};Bg(n);const r=e.dependencies;return n.directiveDefs=Tc(r,!1),n.pipeDefs=Tc(r,!0),n.id=function G1(e){let t=0;const n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const o of n)t=Math.imul(31,t)+o.charCodeAt(0)|0;return t+=2147483648,"c"+t}(n),n})}function j1(e){return Ae(e)||At(e)}function z1(e){return null!==e}function wt(e){return jn(()=>({type:e.type,bootstrap:e.bootstrap||Be,declarations:e.declarations||Be,imports:e.imports||Be,exports:e.exports||Be,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function $g(e,t){if(null==e)return lr;const n={};for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let i,s,u=qn.None;Array.isArray(o)?(u=o[0],i=o[1],s=o[2]??i):(i=o,s=o),t?(n[i]=u!==qn.None?[r,u]:r,t[i]=s):n[i]=r}return n}function on(e){return jn(()=>{const t=Fg(e);return Bg(t),t})}function Ae(e){return e[Os]||null}function At(e){return e[Ku]||null}function Ht(e){return e[Yu]||null}function Wt(e,t){const n=e[Eg]||null;if(!n&&!0===t)throw new Error(`Type ${Te(e)} does not have '\u0275mod' property.`);return n}function Fg(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||lr,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||Be,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:$g(e.inputs,t),outputs:$g(e.outputs),debugInfo:null}}function Bg(e){e.features?.forEach(t=>t(e))}function Tc(e,t){if(!e)return null;const n=t?Ht:j1;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(z1)}function W1(...e){return{\u0275providers:id(0,e),\u0275fromNgModule:!0}}function id(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return ci(t,s=>{const u=s;Mc(u,i,[],r)&&(o||=[],o.push(u))}),void 0!==o&&Ug(o,i),n}function Ug(e,t){for(let n=0;n{t(i,r)})}}function Mc(e,t,n,r){if(!(e=oe(e)))return!1;let o=null,i=vc(e);const s=!i&&Ae(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const d=e.ngModule;if(i=vc(d),!i)return!1;o=d}const u=r.has(o);if(s){if(u)return!1;if(r.add(o),s.dependencies){const d="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const h of d)Mc(h,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!u){let h;r.add(o);try{ci(i.imports,p=>{Mc(p,t,n,r)&&(h||=[],h.push(p))})}finally{}void 0!==h&&Ug(h,t)}if(!u){const h=xo(o)||(()=>new o);t({provide:o,useFactory:h,deps:Be},o),t({provide:nd,useValue:o,multi:!0},o),t({provide:Ro,useValue:()=>ue(o),multi:!0},o)}const d=i.providers;if(null!=d&&!u){const h=e;sd(d,p=>{t(p,h)})}}}return o!==e&&void 0!==e.providers}function sd(e,t){for(let n of e)Wu(n)&&(n=n.\u0275providers),Array.isArray(n)?sd(n,t):t(n)}const K1=ee({provide:String,useValue:ee});function ad(e){return null!==e&&"object"==typeof e&&K1 in e}function Oo(e){return"function"==typeof e}const cd=new te(""),Ac={},Z1={};let ld;function xc(){return void 0===ld&&(ld=new Ic),ld}class Tn{}class ui extends Tn{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,dd(t,s=>this.processProvider(s)),this.records.set(Ag,di(void 0,this)),o.has("environment")&&this.records.set(Tn,di(void 0,this));const i=this.records.get(cd);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(nd,Be,Oe.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=_(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),_(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=so(this),r=gn(void 0);try{return t()}finally{so(n),gn(r)}}get(t,n=Ps,r=Oe.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(Cg))return t[Cg](this);r=wc(r);const i=so(this),s=gn(void 0);try{if(!(r&Oe.SkipSelf)){let d=this.records.get(t);if(void 0===d){const h=function t0(e){return"function"==typeof e||"object"==typeof e&&e instanceof te}(t)&&fn(t);d=h&&this.injectableDefInScope(h)?di(ud(t),Ac):null,this.records.set(t,d)}if(null!=d)return this.hydrate(t,d)}return(r&Oe.Self?xc():this.parent).get(t,n=r&Oe.Optional&&n===Ps?null:n)}catch(u){if("NullInjectorError"===u.name){if((u[bc]=u[bc]||[]).unshift(Te(t)),i)throw u;return function I1(e,t,n,r){const o=e[bc];throw t[Ig]&&o.unshift(t[Ig]),e.message=function S1(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=Te(t);if(Array.isArray(t))o=t.map(Te).join(" -> ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let u=t[s];i.push(s+":"+("string"==typeof u?JSON.stringify(u):Te(u)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(w1,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[bc]=null,e}(u,t,"R3InjectorError",this.source)}throw u}finally{gn(s),so(i)}}resolveInjectorInitializers(){const t=_(null),n=so(this),r=gn(void 0);try{const i=this.get(Ro,Be,Oe.Self);for(const s of i)s()}finally{so(n),gn(r),_(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(Te(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new L(205,!1)}processProvider(t){let n=Oo(t=oe(t))?t:oe(t&&t.provide);const r=function X1(e){return ad(e)?di(void 0,e.useValue):di(function jg(e,t,n){let r;if(Oo(e)){const o=oe(e);return xo(o)||ud(o)}if(ad(e))r=()=>oe(e.useValue);else if(function Vg(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...Ju(e.deps||[]));else if(function Hg(e){return!(!e||!e.useExisting)}(e))r=()=>ue(oe(e.useExisting));else{const o=oe(e&&(e.useClass||e.provide));if(!function J1(e){return!!e.deps}(e))return xo(o)||ud(o);r=()=>new o(...Ju(e.deps))}return r}(e),Ac)}(t);if(!Oo(t)&&!0===t.multi){let o=this.records.get(n);o||(o=di(void 0,Ac,!0),o.factory=()=>Ju(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=_(null);try{return n.value===Ac&&(n.value=Z1,n.value=n.factory()),"object"==typeof n.value&&n.value&&function e0(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{_(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=oe(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function ud(e){const t=fn(e),n=null!==t?t.factory:xo(e);if(null!==n)return n;if(e instanceof te)throw new L(204,!1);if(e instanceof Function)return function Q1(e){if(e.length>0)throw new L(204,!1);const n=function p1(e){return e&&(e[yc]||e[bg])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new L(204,!1)}function di(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function dd(e,t){for(const n of e)Array.isArray(n)?dd(n,t):n&&Wu(n)?dd(n.\u0275providers,t):t(n)}function $r(e,t){e instanceof ui&&e.assertNotDestroyed();const r=so(e),o=gn(void 0);try{return t()}finally{so(r),gn(o)}}function zg(){return void 0!==_g()||null!=function C1(){return ai}()}const ht=0,H=1,se=2,Et=3,Wn=4,Kt=5,Nn=6,pi=7,ot=8,Vt=9,Kn=10,de=11,Bs=12,Gg=13,fi=14,gt=15,Us=16,gi=17,Fr=18,Hs=19,Wg=20,co=21,kc=22,ko=23,me=25,pd=1,ur=7,mi=9,Ct=10;var fd=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(fd||{});function Yt(e){return Array.isArray(e)&&"object"==typeof e[pd]}function Zt(e){return Array.isArray(e)&&!0===e[pd]}function gd(e){return!!(4&e.flags)}function Po(e){return e.componentOffset>-1}function Lc(e){return!(1&~e.flags)}function Yn(e){return!!e.template}function md(e){return!!(512&e[se])}class g0{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function Qg(e,t,n,r){null!==t?t.applyValueToInputSignal(t,r):e[n]=r}function Lo(){return Xg}function Xg(e){return e.type.prototype.ngOnChanges&&(e.setInput=v0),m0}function m0(){const e=em(this),t=e?.current;if(t){const n=e.previous;if(n===lr)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function v0(e,t,n,r,o){const i=this.declaredInputs[r],s=em(e)||function y0(e,t){return e[Jg]=t}(e,{previous:lr,current:null}),u=s.current||(s.current={}),d=s.previous,h=d[i];u[i]=new g0(h&&h.currentValue,n,d===lr),Qg(e,t,o,n)}Lo.ngInherit=!0;const Jg="__ngSimpleChanges__";function em(e){return e[Jg]||null}const dr=function(e,t,n){};let rm=!1;function tt(e){for(;Array.isArray(e);)e=e[ht];return e}function sn(e,t){return tt(t[e.index])}function zs(e,t){return e.data[t]}function Mn(e,t){const n=t[e];return Yt(n)?n:n[ht]}function Ed(e){return!(128&~e[se])}function hr(e,t){return null==t?null:e[t]}function om(e){e[gi]=0}function D0(e){1024&e[se]||(e[se]|=1024,Ed(e)&&qs(e))}function Cd(e){return!!(9216&e[se]||e[ko]?.dirty)}function _d(e){e[Kn].changeDetectionScheduler?.notify(1),Cd(e)?qs(e):64&e[se]&&(function w0(){return rm}()?(e[se]|=1024,qs(e)):e[Kn].changeDetectionScheduler?.notify())}function qs(e){e[Kn].changeDetectionScheduler?.notify();let t=$o(e);for(;null!==t&&!(8192&t[se])&&(t[se]|=8192,Ed(t));)t=$o(t)}function $c(e,t){if(!(256&~e[se]))throw new L(911,!1);null===e[co]&&(e[co]=[]),e[co].push(t)}function $o(e){const t=e[Et];return Zt(t)?t[Et]:t}const he={lFrame:fm(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function am(){return he.bindingsEnabled}function I(){return he.lFrame.lView}function ke(){return he.lFrame.tView}function Qe(){let e=cm();for(;null!==e&&64===e.type;)e=e.parent;return e}function cm(){return he.lFrame.currentTNode}function pr(e,t){const n=he.lFrame;n.currentTNode=e,n.isParent=t}function Id(){return he.lFrame.isParent}function $0(e,t){const n=he.lFrame;n.bindingIndex=n.bindingRootIndex=e,Td(t)}function Td(e){he.lFrame.currentDirectiveIndex=e}function Md(){return he.lFrame.currentQueryIndex}function Fc(e){he.lFrame.currentQueryIndex=e}function B0(e){const t=e[H];return 2===t.type?t.declTNode:1===t.type?e[Kt]:null}function hm(e,t,n){if(n&Oe.SkipSelf){let o=t,i=e;for(;!(o=o.parent,null!==o||n&Oe.Host||(o=B0(i),null===o||(i=i[fi],10&o.type))););if(null===o)return!1;t=o,e=i}const r=he.lFrame=pm();return r.currentTNode=t,r.lView=e,!0}function Ad(e){const t=pm(),n=e[H];he.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function pm(){const e=he.lFrame,t=null===e?null:e.child;return null===t?fm(e):t}function fm(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function gm(){const e=he.lFrame;return he.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const mm=gm;function xd(){const e=gm();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Fo(e){he.lFrame.selectedIndex=e}let ym=!0;function Ws(){return ym}function fr(e){ym=e}function Bc(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[d]<0&&(e[gi]+=65536),(u>14>16&&(3&e[se])===t&&(e[se]+=16384,wm(u,i)):wm(u,i)}const bi=-1;class Ks{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function kd(e){return e!==bi}function Ys(e){return 32767&e}function Zs(e,t){let n=function Q0(e){return e>>16}(e),r=t;for(;n>0;)r=r[fi],n--;return r}let Pd=!0;function Vc(e){const t=Pd;return Pd=e,t}const Em=255,Cm=5;let X0=0;const gr={};function jc(e,t){const n=_m(e,t);if(-1!==n)return n;const r=t[H];r.firstCreatePass&&(e.injectorIndex=t.length,Ld(r.data,e),Ld(t,null),Ld(r.blueprint,null));const o=zc(e,t),i=e.injectorIndex;if(kd(o)){const s=Ys(o),u=Zs(o,t),d=u[H].data;for(let h=0;h<8;h++)t[i+h]=u[s+h]|d[s+h]}return t[i+8]=o,i}function Ld(e,t){e.push(0,0,0,0,0,0,0,0,t)}function _m(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function zc(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;null!==o;){if(r=Am(o),null===r)return bi;if(n++,o=o[fi],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return bi}function $d(e,t,n){!function J0(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(ks)&&(r=n[ks]),null==r&&(r=n[ks]=X0++);const o=r&Em;t.data[e+(o>>Cm)]|=1<=0?t&Em:rI:t}(n);if("function"==typeof i){if(!hm(t,e,r))return r&Oe.Host?Dm(o,0,r):Im(t,n,r,o);try{let s;if(s=i(r),null!=s||r&Oe.Optional)return s;Zu()}finally{mm()}}else if("number"==typeof i){let s=null,u=_m(e,t),d=bi,h=r&Oe.Host?t[gt][Kt]:null;for((-1===u||r&Oe.SkipSelf)&&(d=-1===u?zc(e,t):t[u+8],d!==bi&&Mm(r,!1)?(s=t[H],u=Ys(d),t=Zs(d,t)):u=-1);-1!==u;){const p=t[H];if(Nm(i,u,p.data)){const f=tI(u,t,n,s,r,h);if(f!==gr)return f}d=t[u+8],d!==bi&&Mm(r,t[H].data[u+8]===h)&&Nm(i,u,t)?(s=p,u=Ys(d),t=Zs(d,t)):u=-1}}return o}function tI(e,t,n,r,o,i){const s=t[H],u=s.data[e+8],p=qc(u,s,n,null==r?Po(u)&&Pd:r!=s&&!!(3&u.type),o&Oe.Host&&i===u);return null!==p?Bo(t,s,p,u):gr}function qc(e,t,n,r,o){const i=e.providerIndexes,s=t.data,u=1048575&i,d=e.directiveStart,p=i>>20,m=o?u+p:e.directiveEnd;for(let y=r?u:u+p;y=d&&E.type===n)return y}if(o){const y=s[d];if(y&&Yn(y)&&y.type===n)return d}return null}function Bo(e,t,n,r){let o=e[n];const i=t.data;if(function W0(e){return e instanceof Ks}(o)){const s=o;s.resolving&&function v1(e,t){throw t&&t.join(" > "),new L(-200,e)}(function qe(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():ge(e)}(i[n]));const u=Vc(s.canSeeViewProviders);s.resolving=!0;const h=s.injectImpl?gn(s.injectImpl):null;hm(e,r,Oe.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&function q0(e,t,n){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){const s=Xg(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}(n,i[n],t)}finally{null!==h&&gn(h),Vc(u),s.resolving=!1,mm()}}return o}function Nm(e,t,n){return!!(n[t+(e>>Cm)]&1<{const t=e.prototype.constructor,n=t[Lr]||Bd(t),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[Lr]||Bd(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Bd(e){return Ao(e)?()=>{const t=Bd(oe(e));return t&&t()}:xo(e)}function Am(e){const t=e[H],n=t.type;return 2===n?t.declTNode:1===n?e[Kt]:null}function Pm(e,t=null,n=null,r){const o=Lm(e,t,n,r);return o.resolveInjectorInitializers(),o}function Lm(e,t=null,n=null,r,o=new Set){const i=[n||Be,W1(e)];return r=r||("object"==typeof e?void 0:Te(e)),new ui(i,t||xc(),r||null,o)}let yn=(()=>{class e{static#e=this.THROW_IF_NOT_FOUND=Ps;static#t=this.NULL=new Ic;static create(n,r){if(Array.isArray(n))return Pm({name:""},r,n,"");{const o=n.name??"";return Pm({name:o},n.parent,n.providers,o)}}static#n=this.\u0275prov=P({token:e,providedIn:"any",factory:()=>ue(Ag)});static#r=this.__NG_ELEMENT_ID__=-1}return e})();function Hd(e){return e.ngOriginalError}class mr{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Hd(t);for(;n&&Hd(n);)n=Hd(n);return n||null}}const Fm=new te("",{providedIn:"root",factory:()=>F(mr).handleError.bind(void 0)});let Ci=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=pI;static#t=this.__NG_ENV_ID__=n=>n}return e})();class hI extends Ci{constructor(t){super(),this._lView=t}onDestroy(t){return $c(this._lView,t),()=>function Dd(e,t){if(null===e[co])return;const n=e[co].indexOf(t);-1!==n&&e[co].splice(n,1)}(this._lView,t)}}function pI(){return new hI(I())}function fI(){return _i(Qe(),I())}function _i(e,t){return new lo(sn(e,t))}let lo=(()=>{class e{constructor(n){this.nativeElement=n}static#e=this.__NG_ELEMENT_ID__=fI}return e})();function Um(e){return e instanceof lo?e.nativeElement:e}function Vd(e){return t=>{setTimeout(e,void 0,t)}}const cn=class gI extends K{constructor(t=!1){super(),this.destroyRef=void 0,this.__isAsync=t,zg()&&(this.destroyRef=F(Ci,{optional:!0})??void 0)}emit(t){const n=_(null);try{super.next(t)}finally{_(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&"object"==typeof t){const d=t;o=d.next?.bind(d),i=d.error?.bind(d),s=d.complete?.bind(d)}this.__isAsync&&(i=Vd(i),o&&(o=Vd(o)),s&&(s=Vd(s)));const u=super.subscribe({next:o,error:i,complete:s});return t instanceof Lt&&t.add(u),u}};function mI(){return this._results[Symbol.iterator]()}class jd{static#e=Symbol.iterator;get changes(){return this._changes??=new cn}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const n=jd.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=mI)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;const r=function mn(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function A1(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rFI}),FI="ng",sv=new te(""),Uo=new te("",{providedIn:"platform",factory:()=>"unknown"}),av=new te("",{providedIn:"root",factory:()=>function uo(){if(void 0!==Wd)return Wd;if(typeof document<"u")return document;throw new L(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});let cv=()=>null;function th(e,t,n=!1){return cv(e,t,n)}const pv=new te("",{providedIn:"root",factory:()=>!1});let ol;function vv(e){return function sh(){if(void 0===ol&&(ol=null,je.trustedTypes))try{ol=je.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return ol}()?.createScriptURL(e)||e}class yv{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${oi})`}}function ho(e){return e instanceof yv?e.changingThisBreaksApplicationSecurity:e}function oa(e,t){const n=function rS(e){return e instanceof yv&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${oi})`)}return n===t}const aS=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;var Ti=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(Ti||{});function Tv(e){const t=sa();return t?t.sanitize(Ti.URL,e)||"":oa(e,"URL")?ho(e):function ah(e){return(e=String(e)).match(aS)?e:"unsafe:"+e}(ge(e))}function Nv(e){const t=sa();if(t)return vv(t.sanitize(Ti.RESOURCE_URL,e)||"");if(oa(e,"ResourceURL"))return vv(ho(e));throw new L(904,!1)}function sa(){const e=I();return e&&e[Kn].sanitizer}function An(e){return e instanceof Function?e():e}var fo=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(fo||{});let fh;function gh(e,t){return fh(e,t)}function Mi(e,t,n,r,o){if(null!=r){let i,s=!1;Zt(r)?i=r:Yt(r)&&(s=!0,r=r[ht]);const u=tt(r);0===e&&null!==n?null==o?Hv(t,n,u):Ho(t,n,u,o||null,!0):1===e&&null!==n?Ho(t,n,u,o||null,!0):2===e?function la(e,t,n){const r=ul(e,t);r&&function zS(e,t,n,r){e.removeChild(t,n,r)}(e,r,t,n)}(t,u,s):3===e&&t.destroyNode(u),null!=i&&function WS(e,t,n,r,o){const i=n[ur];i!==tt(n)&&Mi(t,e,r,i,o);for(let u=Ct;u0&&(e[n-1][Wn]=r[Wn]);const i=_c(e,Ct+t);!function $S(e,t){Fv(e,t),t[ht]=null,t[Kt]=null}(r[H],r);const s=i[Fr];null!==s&&s.detachView(i[H]),r[Et]=null,r[Wn]=null,r[se]&=-129}return r}function ll(e,t){if(!(256&t[se])){const n=t[de];n.destroyNode&&hl(e,t,n,3,null,null),function BS(e){let t=e[Bs];if(!t)return yh(e[H],e);for(;t;){let n=null;if(Yt(t))n=t[Bs];else{const r=t[Ct];r&&(n=r)}if(!n){for(;t&&!t[Wn]&&t!==e;)Yt(t)&&yh(t[H],t),t=t[Et];null===t&&(t=e),Yt(t)&&yh(t[H],t),n=t&&t[Wn]}t=n}}(t)}}function yh(e,t){if(256&t[se])return;const n=_(null);try{t[se]&=-129,t[se]|=256,t[ko]&&function Je(e){if(Fe(e),lt(e))for(let t=0;t=0?r[s]():r[-s].unsubscribe(),i+=2}else n[i].call(r[n[i+1]]);null!==r&&(t[pi]=null);const o=t[co];if(null!==o){t[co]=null;for(let i=0;i-1){const{encapsulation:i}=e.data[r.directiveStart+o];if(i===zn.None||i===zn.Emulated)return null}return sn(r,n)}}(e,t.parent,n)}function Ho(e,t,n,r,o){e.insertBefore(t,n,r,o)}function Hv(e,t,n){e.appendChild(t,n)}function Vv(e,t,n,r,o){null!==r?Ho(e,t,n,r,o):Hv(e,t,n)}function ul(e,t){return e.parentNode(t)}let wh,qv=function zv(e,t,n){return 40&e.type?sn(e,n):null};function dl(e,t,n,r){const o=bh(e,r,t),i=t[de],u=function jv(e,t,n){return qv(e,t,n)}(r.parent||t[Kt],r,t);if(null!=o)if(Array.isArray(n))for(let d=0;dme&&function Xv(e,t,n,r){if(!r)if(3&~t[se]){const i=e.preOrderHooks;null!==i&&Hc(t,i,0,n)}else{const i=e.preOrderCheckHooks;null!==i&&Uc(t,i,n)}Fo(n)}(e,t,me,!1),dr(s?2:0,o),n(r,o)}finally{Fo(i),dr(s?3:1,o)}}function Dh(e,t,n){if(gd(t)){const r=_(null);try{const i=t.directiveEnd;for(let s=t.directiveStart;snull;function oy(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;const s=t[i];if(void 0===s)continue;r??={};let u,d=qn.None;Array.isArray(s)?(u=s[0],d=s[1]):u=s;let h=i;if(null!==o){if(!o.hasOwnProperty(i))continue;h=o[i]}0===e?iy(r,n,h,u,d):iy(r,n,h,u)}return r}function iy(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],void 0!==o&&i.push(o)}function sy(e,t,n,r,o,i){for(let h=0;h0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(s)!=u&&s.push(u),s.push(n,r,i)}}(e,t,r,ua(e,n,o.hostVars,ye),o)}function vr(e,t,n,r,o,i){const s=sn(e,t);!function Ah(e,t,n,r,o,i,s){if(null==i)e.removeAttribute(t,o,n);else{const u=null==s?ge(i):s(i,r||"",o);e.setAttribute(t,o,u,n)}}(t[de],s,i,e.value,n,r,o)}function bT(e,t,n,r,o,i){const s=i[t];if(null!==s)for(let u=0;u0&&(n[o-1][Wn]=t),r!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{},consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{qs(e.lView)},consumerOnSignalRead(){this.lView[ko]=this}},my=100;function ml(e,t=!0,n=0){const r=e[Kn],o=r.rendererFactory;o.begin?.();try{!function NT(e,t){Ph(e,t);let n=0;for(;Cd(e);){if(n===my)throw new L(103,!1);n++,Ph(e,1)}}(e,n)}catch(s){throw t&&gl(e,s),s}finally{o.end?.(),r.inlineEffectRunner?.flush()}}function MT(e,t,n,r){const o=t[se];if(!(256&~o))return;t[Kn].inlineEffectRunner?.flush(),Ad(t);let s=null,u=null;(function AT(e){return 2!==e.type})(e)&&(u=function DT(e){return e[ko]??function IT(e){const t=gy.pop()??Object.create(TT);return t.lView=e,t}(e)}(t),s=function we(e){return e&&(e.nextProducerIndex=0),_(e)}(u));try{om(t),function um(e){return he.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==n&&ty(e,t,n,2,r);const d=!(3&~o);if(d){const f=e.preOrderCheckHooks;null!==f&&Uc(t,f,null)}else{const f=e.preOrderHooks;null!==f&&Hc(t,f,0,null),Rd(t,0)}if(function xT(e){for(let t=Zm(e);null!==t;t=Qm(t)){if(!(t[se]&fd.HasTransplantedViews))continue;const n=t[mi];for(let r=0;re.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}(u,s),function ST(e){e.lView[ko]!==e&&(e.lView=null,gy.push(e))}(u)),xd()}}function vy(e,t){for(let n=Zm(e);null!==n;n=Qm(n))for(let r=Ct;r-1&&(aa(t,r),_c(n,r))}this._attachedToViewContainer=!1}ll(this._lView[H],this._lView)}onDestroy(t){$c(this._lView,t)}markForCheck(){fa(this._cdRefInjectingView||this._lView)}detach(){this._lView[se]&=-129}reattach(){_d(this._lView),this._lView[se]|=128}detectChanges(){this._lView[se]|=1024,ml(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new L(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,Fv(this._lView[H],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new L(902,!1);this._appRef=t,_d(this._lView)}}let jr=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=PT}return e})();const OT=jr,kT=class extends OT{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){const o=function da(e,t,n,r){const o=_(null);try{const i=t.tView,d=pl(e,i,n,4096&e[se]?4096:16,null,t,null,null,r?.injector??null,r?.embeddedViewInjector??null,r?.dehydratedView??null);d[Us]=e[t.index];const p=e[Fr];return null!==p&&(d[Fr]=p.createEmbeddedView(i)),Oh(i,d,n),d}finally{_(o)}}(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new ga(o)}};function PT(){return vl(Qe(),I())}function vl(e,t){return 4&e.type?new kT(t,e,_i(e,t)):null}class Hh{}class iN{}class Sy{}class aN{resolveComponentFactory(t){throw function sN(e){const t=Error(`No component factory found for ${Te(e)}.`);return t.ngComponent=e,t}(t)}}let Cl=(()=>{class e{static#e=this.NULL=new aN}return e})();class Ny{}let _l=(()=>{class e{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function cN(){const e=I(),n=Mn(Qe().index,e);return(Yt(n)?n:e)[de]}()}return e})(),lN=(()=>{class e{static#e=this.\u0275prov=P({token:e,providedIn:"root",factory:()=>null})}return e})();const Vh={},My=new Set;function yr(e){My.has(e)||(My.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function Ay(...e){}class Xe{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new cn(!1),this.onMicrotaskEmpty=new cn(!1),this.onStable=new cn(!1),this.onError=new cn(!1),typeof Zone>"u")throw new L(908,!1);Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=function uN(){const e="function"==typeof je.requestAnimationFrame;let t=je[e?"requestAnimationFrame":"setTimeout"],n=je[e?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&t&&n){const r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r);const o=n[Zone.__symbol__("OriginalDelegate")];o&&(n=o)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function pN(e){const t=()=>{!function hN(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(je,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,zh(e),e.isCheckStableRunning=!0,jh(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),zh(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,o,i,s,u)=>{if(function fN(e){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0].data?.__ignore_ng_zone__}(u))return n.invokeTask(o,i,s,u);try{return xy(e),n.invokeTask(o,i,s,u)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||e.shouldCoalesceRunChangeDetection)&&t(),Ry(e)}},onInvoke:(n,r,o,i,s,u,d)=>{try{return xy(e),n.invoke(o,i,s,u,d)}finally{e.shouldCoalesceRunChangeDetection&&t(),Ry(e)}},onHasTask:(n,r,o,i)=>{n.hasTask(o,i),r===o&&("microTask"==i.change?(e._hasPendingMicrotasks=i.microTask,zh(e),jh(e)):"macroTask"==i.change&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(n,r,o,i)=>(n.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}(o)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Xe.isInAngularZone())throw new L(909,!1)}static assertNotInAngularZone(){if(Xe.isInAngularZone())throw new L(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,dN,Ay,Ay);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const dN={};function jh(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function zh(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function xy(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function Ry(e){e._nesting--,jh(e)}class Oy{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new cn,this.onMicrotaskEmpty=new cn,this.onStable=new cn,this.onError=new cn}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}}var Vo=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(Vo||{});const ky={destroy(){}};function Py(e,t){!t&&function Rc(e){if(!zg())throw new L(-203,!1)}();const n=t?.injector??F(yn);if(!function po(e){return"browser"===(e??F(yn)).get(Uo)}(n))return ky;yr("NgAfterNextRender");const r=n.get(wa),o=r.handler??=new $y,i=t?.phase??Vo.MixedReadWrite,s=()=>{o.unregister(d),u()},u=n.get(Ci).onDestroy(s),d=$r(n,()=>new Ly(i,()=>{s(),e()}));return o.register(d),{destroy:s}}class Ly{constructor(t,n){this.phase=t,this.callbackFn=n,this.zone=F(Xe),this.errorHandler=F(mr,{optional:!0}),F(Hh,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(t){this.errorHandler?.handleError(t)}}}class $y{constructor(){this.executingCallbacks=!1,this.buckets={[Vo.EarlyRead]:new Set,[Vo.Write]:new Set,[Vo.MixedReadWrite]:new Set,[Vo.Read]:new Set},this.deferredCallbacks=new Set}register(t){(this.executingCallbacks?this.deferredCallbacks:this.buckets[t.phase]).add(t)}unregister(t){this.buckets[t.phase].delete(t),this.deferredCallbacks.delete(t)}execute(){this.executingCallbacks=!0;for(const t of Object.values(this.buckets))for(const n of t)n.invoke();this.executingCallbacks=!1;for(const t of this.deferredCallbacks)this.buckets[t.phase].add(t);this.deferredCallbacks.clear()}destroy(){for(const t of Object.values(this.buckets))t.clear();this.deferredCallbacks.clear()}}let wa=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=P({token:e,providedIn:"root",factory:()=>new e})}return e})();function Il(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(null!==t)for(let s=0;s0&&Zv(e,n,i.join(" "))}}(y,mt,C,r),void 0!==n&&function SN(e,t,n){const r=e.projection=[];for(let o=0;o{class e{static#e=this.__NG_ELEMENT_ID__=NN}return e})();function NN(){return zy(Qe(),I())}const MN=Qn,Vy=class extends MN{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return _i(this._hostTNode,this._hostLView)}get injector(){return new Rt(this._hostTNode,this._hostLView)}get parentInjector(){const t=zc(this._hostTNode,this._hostLView);if(kd(t)){const n=Zs(t,this._hostLView),r=Ys(t);return new Rt(n[H].data[r+8],n)}return new Rt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=jy(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-Ct}createEmbeddedView(t,n,r){let o,i;"number"==typeof r?o=r:null!=r&&(o=r.index,i=r.injector);const u=t.createEmbeddedViewImpl(n||{},i,null);return this.insertImpl(u,o,xi(this._hostTNode,null)),u}createComponent(t,n,r,o,i){const s=t&&!function Fs(e){return"function"==typeof e}(t);let u;if(s)u=n;else{const E=n||{};u=E.index,r=E.injector,o=E.projectableNodes,i=E.environmentInjector||E.ngModuleRef}const d=s?t:new _a(Ae(t)),h=r||this.parentInjector;if(!i&&null==d.ngModule){const C=(s?h:this.parentInjector).get(Tn,null);C&&(i=C)}Ae(d.componentType??{});const y=d.create(h,o,null,i);return this.insertImpl(y.hostView,u,xi(this._hostTNode,null)),y}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){const o=t._lView;if(function _0(e){return Zt(e[Et])}(o)){const u=this.indexOf(t);if(-1!==u)this.detach(u);else{const d=o[Et],h=new Vy(d,d[Kt],d[Et]);h.detach(h.indexOf(t))}}const i=this._adjustIndex(n),s=this._lContainer;return ha(s,o,i,r),t.attachToViewContainerRef(),Tg(Kh(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){const n=jy(this._lContainer);return null!==n?n.indexOf(t):-1}remove(t){const n=this._adjustIndex(t,-1),r=aa(this._lContainer,n);r&&(_c(Kh(this._lContainer),n),ll(r[H],r))}detach(t){const n=this._adjustIndex(t,-1),r=aa(this._lContainer,n);return r&&null!=_c(Kh(this._lContainer),n)?new ga(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function jy(e){return e[8]}function Kh(e){return e[8]||(e[8]=[])}function zy(e,t){let n;const r=t[e.index];return Zt(r)?n=r:(n=function cy(e,t,n,r){return[e,!0,0,t,null,r,null,n,null,null]}(r,t,null,e),t[e.index]=n,fl(t,n)),qy(n,t,e,r),new Vy(n,e,t)}let qy=function Wy(e,t,n,r){if(e[ur])return;let o;o=8&n.type?tt(r):function AN(e,t){const n=e[de],r=n.createComment(""),o=sn(t,e);return Ho(n,ul(n,o),r,function qS(e,t){return e.nextSibling(t)}(n,o),!1),r}(t,n),e[ur]=o};class Zh{constructor(t){this.queryList=t,this.matches=null}clone(){return new Zh(this.queryList)}setDirty(){this.queryList.setDirty()}}class Qh{constructor(t=[]){this.queries=t}createEmbeddedView(t){const n=t.queries;if(null!==n){const r=null!==t.contentQueries?t.contentQueries[0]:n.length,o=[];for(let i=0;it.trim())}(t):t}}class Xh{constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r0)r.push(s[u/2]);else{const h=i[u+1],p=t[-d];for(let f=Ct;fn()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class ip extends wb{constructor(t){super(),this.moduleType=t}create(t){return new op(this.moduleType,t,[])}}class Eb extends jo{constructor(t){super(),this.componentFactoryResolver=new Uy(this),this.instance=null;const n=new ui([...t.providers,{provide:jo,useValue:this},{provide:Cl,useValue:this.componentFactoryResolver}],t.parent||xc(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function Ml(e,t,n=null){return new Eb({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}let ki=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new ne(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function mp(e,t,n,r){const o=I();return function _t(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}(o,function Zn(){return he.lFrame.bindingIndex++}(),t)&&(ke(),vr(function it(){const e=he.lFrame;return zs(e.tView,e.selectedIndex)}(),o,e,t,n,r)),mp}function wp(e,t,n,r,o){const s=o?"class":"style";Rh(e,n,t.inputs[s],s,r)}function l(e,t,n,r){const o=I(),i=ke(),s=me+e,u=o[de],d=i.firstCreatePass?function $A(e,t,n,r,o,i){const s=t.consts,d=Ai(t,e,2,r,hr(s,o));return function Nh(e,t,n,r){if(am()){const o=null===r?null:{"":-1},i=function pT(e,t){const n=e.directiveRegistry;let r=null,o=null;if(n)for(let i=0;i(fr(!0),cl(r,o,function vm(){return he.lFrame.currentNamespace}()));const Xi="en-US";let Sw=Xi;function Ap(e,t,n,r){const o=I(),i=ke(),s=Qe();return function xp(e,t,n,r,o,i,s){const u=Lc(r),h=e.firstCreatePass&&dy(e),p=t[ot],f=uy(t);let m=!0;if(3&r.type||s){const C=sn(r,t),S=s?s(C):C,M=f.length,T=s?Ee=>s(tt(Ee[r.index])):r.index;let re=null;if(!s&&u&&(re=function Vx(e,t,n,r){const o=e.cleanup;if(null!=o)for(let i=0;id?u[d]:null}"string"==typeof s&&(i+=2)}return null}(e,t,o,r.index)),null!==re)(re.__ngLastListenerFn__||re).__ngNextListenerFn__=i,re.__ngLastListenerFn__=i,m=!1;else{i=eE(r,t,p,i,!1);const Ee=n.listen(S,o,i);f.push(i,Ee),h&&h.push(o,T,M,M+1)}}else i=eE(r,t,p,i,!1);const y=r.outputs;let E;if(m&&null!==y&&(E=y[o])){const C=E.length;if(C)for(let S=0;S-1?Mn(e.index,t):t);let d=Jw(t,n,r,s),h=i.__ngNextListenerFn__;for(;h;)d=Jw(t,n,h,s)&&d,h=h.__ngNextListenerFn__;return o&&!1===d&&s.preventDefault(),d}}function hE(){return function tp(e,t){return e[Fr].queries[t].queryList}(I(),Md())}function a(e,t=""){const n=I(),r=ke(),o=e+me,i=r.firstCreatePass?Ai(r,o,1,t,null):r.data[o],s=CE(r,n,i,t,e);n[o]=s,Ws()&&dl(r,n,s,i),pr(i,!1)}let CE=(e,t,n,r,o)=>(fr(!0),function mh(e,t){return e.createText(t)}(t[de],r)),mR=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){const r=id(0,n.type),o=r.length>0?Ml([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=P({token:e,providedIn:"environment",factory:()=>new e(ue(Tn))})}return e})();function PE(e){yr("NgStandalone"),e.getStandaloneInjector=t=>t.get(mR).getOrCreateStandaloneInjector(e)}let rC=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const cC=new te(""),Kl=new te("");let qp,jp=(()=>{class e{constructor(n,r,o){this._ngZone=n,this.registry=r,this._pendingCount=0,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,qp||(function MO(e){qp=e}(o),o.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Xe.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb()}});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==i),n()},r)),this._callbacks.push({doneCb:n,timeoutId:i,updateCb:o})}whenStable(n,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,o),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,o){return[]}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Xe),ue(zp),ue(Kl))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})(),zp=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return qp?.findTestabilityInTree(this,n,r)??null}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function Yl(e){return!!e&&"function"==typeof e.then}function lC(e){return!!e&&"function"==typeof e.subscribe}const Gp=new te("");let Wp=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=F(Gp,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const n=[];for(const o of this.appInits){const i=o();if(Yl(i))n.push(i);else if(lC(i)){const s=new Promise((u,d)=>{i.subscribe({complete:u,error:d})});n.push(s)}}const r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),0===n.length&&r(),this.initialized=!0}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const Kp=new te("");function hC(e,t){return Array.isArray(t)?t.reduce(hC,e):{...e,...t}}let bo=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=F(Fm),this.afterRenderEffectManager=F(wa),this.externalTestViews=new Set,this.beforeRender=new K,this.afterTick=new K,this.componentTypes=[],this.components=[],this.isStable=F(ki).hasPendingTasks.pipe(Ve(n=>!n)),this._injector=F(Tn)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,r){const o=n instanceof Sy;if(!this._injector.get(Wp).done)throw!o&&function ao(e){const t=Ae(e)||At(e)||Ht(e);return null!==t&&t.standalone}(n),new L(405,!1);let s;s=o?n:this._injector.get(Cl).resolveComponentFactory(n),this.componentTypes.push(s.componentType);const u=function AO(e){return e.isBoundToModule}(s)?void 0:this._injector.get(jo),h=s.create(yn.NULL,[],r||s.selector,u),p=h.location.nativeElement,f=h.injector.get(cC,null);return f?.registerApplication(p),h.onDestroy(()=>{this.detachView(h.hostView),Zl(this.components,h),f?.unregisterApplication(p)}),this._loadComponent(h),h}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new L(101,!1);const r=_(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,_(r)}}detectChangesInAttachedViews(n){let r=0;const o=this.afterRenderEffectManager;for(;;){if(r===my)throw new L(103,!1);if(n){const i=0===r;this.beforeRender.next(i);for(let{_lView:s,notifyErrorHandler:u}of this._views)RO(s,i,u)}if(r++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>Yp(i))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>Yp(i))))break}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;Zl(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(Kp,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Zl(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new L(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Zl(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function RO(e,t,n){!t&&!Yp(e)||function OO(e,t,n){let r;n?(r=0,e[se]|=1024):r=64&e[se]?0:1,ml(e,t,r)}(e,n,t)}function Yp(e){return Cd(e)}class kO{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let pC=(()=>{class e{compileModuleSync(n){return new ip(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const r=this.compileModuleSync(n),i=An(Wt(n).declarations).reduce((s,u)=>{const d=Ae(u);return d&&s.push(new _a(d)),s},[]);return new kO(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),$O=(()=>{class e{constructor(){this.zone=F(Xe),this.applicationRef=F(bo)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function FO(){const e=F(Xe),t=F(mr);return n=>e.runOutsideAngular(()=>t.handleError(n))}let UO=(()=>{class e{constructor(){this.subscription=new Lt,this.initialized=!1,this.zone=F(Xe),this.pendingTasks=F(ki)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Xe.assertNotInAngularZone(),queueMicrotask(()=>{null!==n&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Xe.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const zr=new te("",{providedIn:"root",factory:()=>F(zr,Oe.Optional|Oe.SkipSelf)||function HO(){return typeof $localize<"u"&&$localize.locale||Xi}()}),Zp=new te("");let vC=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,r){const o=function gN(e="zone.js",t){return"noop"===e?new Oy:"zone.js"===e?new Xe(t):e}(r?.ngZone,function mC(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}({eventCoalescing:r?.ngZoneEventCoalescing,runCoalescing:r?.ngZoneRunCoalescing}));return o.run(()=>{const i=function aM(e,t,n){return new op(e,t,n)}(n.moduleType,this.injector,function gC(e){return[{provide:Xe,useFactory:e},{provide:Ro,multi:!0,useFactory:()=>{const t=F($O,{optional:!0});return()=>t.initialize()}},{provide:Ro,multi:!0,useFactory:()=>{const t=F(UO);return()=>{t.initialize()}}},{provide:Fm,useFactory:FO}]}(()=>o)),s=i.injector.get(mr,null);return o.runOutsideAngular(()=>{const u=o.onError.subscribe({next:d=>{s.handleError(d)}});i.onDestroy(()=>{Zl(this._modules,i),u.unsubscribe()})}),function dC(e,t,n){try{const r=n();return Yl(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(s,o,()=>{const u=i.injector.get(Wp);return u.runInitializers(),u.donePromise.then(()=>(function Tw(e){"string"==typeof e&&(Sw=e.toLowerCase().replace(/_/g,"-"))}(i.injector.get(zr,Xi)||Xi),this._moduleDoBootstrap(i),i))})})}bootstrapModule(n,r=[]){const o=hC({},r);return function LO(e,t,n){const r=new ip(n);return Promise.resolve(r)}(0,0,n).then(i=>this.bootstrapModuleFactory(i,o))}_moduleDoBootstrap(n){const r=n.injector.get(bo);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(o=>r.bootstrap(o));else{if(!n.instance.ngDoBootstrap)throw new L(-403,!1);n.instance.ngDoBootstrap(r)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new L(404,!1);this._modules.slice().forEach(r=>r.destroy()),this._destroyListeners.forEach(r=>r());const n=this._injector.get(Zp,null);n&&(n.forEach(r=>r()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static#e=this.\u0275fac=function(r){return new(r||e)(ue(yn))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})(),wo=null;const yC=new te("");function bC(e,t,n=[]){const r=`Platform: ${t}`,o=new te(r);return(i=[])=>{let s=Qp();if(!s||s.injector.get(yC,!1)){const u=[...n,...i,{provide:o,useValue:!0}];e?e(u):function zO(e){if(wo&&!wo.get(yC,!1))throw new L(400,!1);(function uC(){!function Hn(e){Dn=e}(()=>{throw new L(600,!1)})})(),wo=e;const t=e.get(vC);(function EC(e){e.get(sv,null)?.forEach(n=>n())})(e)}(function wC(e=[],t){return yn.create({name:t,providers:[{provide:cd,useValue:"platform"},{provide:Zp,useValue:new Set([()=>wo=null])},...e]})}(u,r))}return function qO(e){const t=Qp();if(!t)throw new L(401,!1);return t}()}}function Qp(){return wo?.get(vC)??null}let Xl=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=WO}return e})();function WO(e){return function KO(e,t,n){if(Po(e)&&!n){const r=Mn(e.index,t);return new ga(r,r)}return 47&e.type?new ga(t[gt],t):null}(Qe(),I(),!(16&~e))}const sk=bC(null,"core",[]);let ak=(()=>{class e{constructor(n){}static#e=this.\u0275fac=function(r){return new(r||e)(ue(bo))};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({})}return e})();function af(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}let e_=null;function ns(){return e_}class zk{}const Fn=new te("");let cf=(()=>{class e{historyGo(n){throw new Error("")}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(Gk),providedIn:"platform"})}return e})();const qk=new te("");let Gk=(()=>{class e extends cf{constructor(){super(),this._doc=F(Fn),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return ns().getBaseHref(this._doc)}onPopState(n){const r=ns().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){const r=ns().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>new e,providedIn:"platform"})}return e})();function lf(e,t){if(0==e.length)return t;if(0==t.length)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t}function t_(e){const t=e.match(/#|\?|$/),n=t&&t.index||e.length;return e.slice(0,n-("/"===e[n-1]?1:0))+e.slice(n)}function qr(e){return e&&"?"!==e[0]?"?"+e:e}let Yo=(()=>{class e{historyGo(n){throw new Error("")}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(r_),providedIn:"root"})}return e})();const n_=new te("");let r_=(()=>{class e extends Yo{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??F(Fn).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return lf(this._baseHref,n)}path(n=!1){const r=this._platformLocation.pathname+qr(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){const s=this.prepareExternalUrl(o+qr(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){const s=this.prepareExternalUrl(o+qr(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(cf),ue(n_,8))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Wk=(()=>{class e extends Yo{constructor(n,r){super(),this._platformLocation=n,this._baseHref="",this._removeListenerFns=[],null!=r&&(this._baseHref=r)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}path(n=!1){const r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(n){const r=lf(this._baseHref,n);return r.length>0?"#"+r:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+qr(i));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+qr(i));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(cf),ue(n_,8))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})(),za=(()=>{class e{constructor(n){this._subject=new cn,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;const r=this._locationStrategy.getBaseHref();this._basePath=function Zk(e){if(new RegExp("^(https?:)?//").test(e)){const[,n]=e.split(/\/\/[^\/]+/);return n}return e}(t_(o_(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+qr(r))}normalize(n){return e.stripTrailingSlash(function Yk(e,t){if(!e||!t.startsWith(e))return t;const n=t.substring(e.length);return""===n||["/",";","?","#"].includes(n[0])?n:t}(this._basePath,o_(n)))}prepareExternalUrl(n){return n&&"/"!==n[0]&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+qr(r)),o)}replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+qr(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{const r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r,complete:o})}static#e=this.normalizeQueryParams=qr;static#t=this.joinWithSlash=lf;static#n=this.stripTrailingSlash=t_;static#r=this.\u0275fac=function(r){return new(r||e)(ue(Yo))};static#o=this.\u0275prov=P({token:e,factory:()=>function Kk(){return new za(ue(Yo))}(),providedIn:"root"})}return e})();function o_(e){return e.replace(/\/index.html$/,"")}let Eo=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({})}return e})();const b_="browser";function w_(e){return"server"===e}let m2=(()=>{class e{static#e=this.\u0275prov=P({token:e,providedIn:"root",factory:()=>function g2(e){return e===b_}(F(Uo))?new v2(F(Fn),window):new b2})}return e})();class v2{constructor(t,n){this.document=t,this.window=n,this.offset=()=>[0,0]}setOffset(t){this.offset=Array.isArray(t)?()=>t:t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t){this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){const n=function y2(e,t){const n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if("function"==typeof e.createTreeWalker&&e.body&&"function"==typeof e.body.attachShadow){const r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT);let o=r.currentNode;for(;o;){const i=o.shadowRoot;if(i){const s=i.getElementById(t)||i.querySelector(`[name="${t}"]`);if(s)return s}o=r.nextNode()}}return null}(this.document,t);n&&(this.scrollToElement(n),n.focus())}setHistoryScrollRestoration(t){this.window.history.scrollRestoration=t}scrollToElement(t){const n=t.getBoundingClientRect(),r=n.left+this.window.pageXOffset,o=n.top+this.window.pageYOffset,i=this.offset();this.window.scrollTo(r-i[0],o-i[1])}}class b2{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}}class K2 extends zk{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class If extends K2{static makeCurrent(){!function jk(e){e_??=e}(new If)}onAndCancel(t,n,r){return t.addEventListener(n,r),()=>{t.removeEventListener(n,r)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.parentNode&&t.parentNode.removeChild(t)}createElement(t,n){return(n=n||this.getDefaultDocument()).createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return"window"===n?window:"document"===n?t:"body"===n?t.body:null}getBaseHref(t){const n=function Y2(){return Ka=Ka||document.querySelector("base"),Ka?Ka.getAttribute("href"):null}();return null==n?null:function Z2(e){return new URL(e,document.baseURI).pathname}(n)}resetBaseElement(){Ka=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return function kP(e,t){t=encodeURIComponent(t);for(const n of e.split(";")){const r=n.indexOf("="),[o,i]=-1==r?[n,""]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}(document.cookie,t)}}let Ka=null,X2=(()=>{class e{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();const Sf=new te("");let M_=(()=>{class e{constructor(n,r){this._zone=r,this._eventNameToPlugin=new Map,n.forEach(o=>{o.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,r,o){return this._findPluginFor(r).addEventListener(n,r,o)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new L(5101,!1);return this._eventNameToPlugin.set(n,r),r}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Sf),ue(Xe))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();class A_{constructor(t){this._doc=t}}const Tf="ng-app-id";let x_=(()=>{class e{constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.platformId=i,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=w_(i),this.resetHostNodes()}addStyles(n){for(const r of n)1===this.changeUsageCount(r,1)&&this.onStyleAdded(r)}removeStyles(n){for(const r of n)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){const n=this.styleNodesInDOM;n&&(n.forEach(r=>r.remove()),n.clear());for(const r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(const r of this.getAllStyles())this.addStyleToHost(n,r)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(const r of this.hostNodes)this.addStyleToHost(r,n)}onStyleRemoved(n){const r=this.styleRef;r.get(n)?.elements?.forEach(o=>o.remove()),r.delete(n)}collectServerRenderedStyles(){const n=this.doc.head?.querySelectorAll(`style[${Tf}="${this.appId}"]`);if(n?.length){const r=new Map;return n.forEach(o=>{null!=o.textContent&&r.set(o.textContent,o)}),r}return null}changeUsageCount(n,r){const o=this.styleRef;if(o.has(n)){const i=o.get(n);return i.usage+=r,i.usage}return o.set(n,{usage:r,elements:[]}),r}getStyleElement(n,r){const o=this.styleNodesInDOM,i=o?.get(r);if(i?.parentNode===n)return o.delete(r),i.removeAttribute(Tf),i;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=r,this.platformIsServer&&s.setAttribute(Tf,this.appId),n.appendChild(s),s}}addStyleToHost(n,r){const o=this.getStyleElement(n,r),i=this.styleRef,s=i.get(r)?.elements;s?s.push(o):i.set(r,{elements:[o],usage:1})}resetHostNodes(){const n=this.hostNodes;n.clear(),n.add(this.doc.head)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Fn),ue(Zc),ue(av,8),ue(Uo))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();const Nf={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Mf=/%COMP%/g,nL=new te("",{providedIn:"root",factory:()=>!0});function O_(e,t){return t.map(n=>n.replace(Mf,e))}let k_=(()=>{class e{constructor(n,r,o,i,s,u,d,h=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.platformId=u,this.ngZone=d,this.nonce=h,this.rendererByCompId=new Map,this.platformIsServer=w_(u),this.defaultRenderer=new Af(n,s,d,this.platformIsServer)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===zn.ShadowDom&&(r={...r,encapsulation:zn.Emulated});const o=this.getOrCreateRenderer(n,r);return o instanceof L_?o.applyToHost(n):o instanceof xf&&o.applyStyles(),o}getOrCreateRenderer(n,r){const o=this.rendererByCompId;let i=o.get(r.id);if(!i){const s=this.doc,u=this.ngZone,d=this.eventManager,h=this.sharedStylesHost,p=this.removeStylesOnCompDestroy,f=this.platformIsServer;switch(r.encapsulation){case zn.Emulated:i=new L_(d,h,r,this.appId,p,s,u,f);break;case zn.ShadowDom:return new sL(d,h,n,r,s,u,this.nonce,f);default:i=new xf(d,h,r,p,s,u,f)}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(r){return new(r||e)(ue(M_),ue(x_),ue(Zc),ue(nL),ue(Fn),ue(Uo),ue(Xe),ue(av))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();class Af{constructor(t,n,r,o){this.eventManager=t,this.doc=n,this.ngZone=r,this.platformIsServer=o,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(t,n){return n?this.doc.createElementNS(Nf[n]||n,t):this.doc.createElement(t)}createComment(t){return this.doc.createComment(t)}createText(t){return this.doc.createTextNode(t)}appendChild(t,n){(P_(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){t&&(P_(t)?t.content:t).insertBefore(n,r)}removeChild(t,n){t&&t.removeChild(n)}selectRootElement(t,n){let r="string"==typeof t?this.doc.querySelector(t):t;if(!r)throw new L(-5104,!1);return n||(r.textContent=""),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+":"+n;const i=Nf[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){const o=Nf[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){o&(fo.DashCase|fo.Important)?t.style.setProperty(n,r,o&fo.Important?"important":""):t.style[n]=r}removeStyle(t,n,r){r&fo.DashCase?t.style.removeProperty(n):t.style[n]=""}setProperty(t,n,r){null!=t&&(t[n]=r)}setValue(t,n){t.nodeValue=n}listen(t,n,r){if("string"==typeof t&&!(t=ns().getGlobalEventTarget(this.doc,t)))throw new Error(`Unsupported event target ${t} for event ${n}`);return this.eventManager.addEventListener(t,n,this.decoratePreventDefault(r))}decoratePreventDefault(t){return n=>{if("__ngUnwrap__"===n)return t;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>t(n)):t(n))&&n.preventDefault()}}}function P_(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class sL extends Af{constructor(t,n,r,o,i,s,u,d){super(t,i,s,d),this.sharedStylesHost=n,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const h=O_(o.id,o.styles);for(const p of h){const f=document.createElement("style");u&&f.setAttribute("nonce",u),f.textContent=p,this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(this.nodeOrShadowRoot(t),n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class xf extends Af{constructor(t,n,r,o,i,s,u,d){super(t,i,s,u),this.sharedStylesHost=n,this.removeStylesOnCompDestroy=o,this.styles=d?O_(d,r.styles):r.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class L_ extends xf{constructor(t,n,r,o,i,s,u,d){const h=o+"-"+r.id;super(t,n,r,i,s,u,d,h),this.contentAttr=function rL(e){return"_ngcontent-%COMP%".replace(Mf,e)}(h),this.hostAttr=function oL(e){return"_nghost-%COMP%".replace(Mf,e)}(h)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,"")}createElement(t,n){const r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,""),r}}let aL=(()=>{class e extends A_{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o){return n.addEventListener(r,o,!1),()=>this.removeEventListener(n,r,o)}removeEventListener(n,r,o){return n.removeEventListener(r,o)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Fn))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();const $_=["alt","control","meta","shift"],cL={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},lL={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let uL=(()=>{class e extends A_{constructor(n){super(n)}supports(n){return null!=e.parseEventName(n)}addEventListener(n,r,o){const i=e.parseEventName(r),s=e.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ns().onAndCancel(n,i.domEventName,s))}static parseEventName(n){const r=n.toLowerCase().split("."),o=r.shift();if(0===r.length||"keydown"!==o&&"keyup"!==o)return null;const i=e._normalizeKey(r.pop());let s="",u=r.indexOf("code");if(u>-1&&(r.splice(u,1),s="code."),$_.forEach(h=>{const p=r.indexOf(h);p>-1&&(r.splice(p,1),s+=h+".")}),s+=i,0!=r.length||0===i.length)return null;const d={};return d.domEventName=o,d.fullKey=s,d}static matchEventFullKeyCode(n,r){let o=cL[n.key]||n.key,i="";return r.indexOf("code.")>-1&&(o=n.code,i="code."),!(null==o||!o)&&(o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),$_.forEach(s=>{s!==o&&(0,lL[s])(n)&&(i+=s+".")}),i+=o,i===r)}static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){return"esc"===n?"escape":n}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Fn))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();const fL=bC(sk,"browser",[{provide:Uo,useValue:b_},{provide:sv,useValue:function dL(){If.makeCurrent()},multi:!0},{provide:Fn,useFactory:function pL(){return function $I(e){Wd=e}(document),document},deps:[]}]),gL=new te(""),U_=[{provide:Kl,useClass:class Q2{addToWindow(t){je.getAngularTestability=(r,o=!0)=>{const i=t.findTestabilityInTree(r,o);if(null==i)throw new L(5103,!1);return i},je.getAllAngularTestabilities=()=>t.getAllTestabilities(),je.getAllAngularRootElements=()=>t.getAllRootElements(),je.frameworkStabilizers||(je.frameworkStabilizers=[]),je.frameworkStabilizers.push(r=>{const o=je.getAllAngularTestabilities();let i=o.length;const s=function(){i--,0==i&&r()};o.forEach(u=>{u.whenStable(s)})})}findTestabilityInTree(t,n,r){return null==n?null:t.getTestability(n)??(r?ns().isShadowRoot(n)?this.findTestabilityInTree(t,n.host,!0):this.findTestabilityInTree(t,n.parentElement,!0):null)}},deps:[]},{provide:cC,useClass:jp,deps:[Xe,zp,Kl]},{provide:jp,useClass:jp,deps:[Xe,zp,Kl]}],H_=[{provide:cd,useValue:"root"},{provide:mr,useFactory:function hL(){return new mr},deps:[]},{provide:Sf,useClass:aL,multi:!0,deps:[Fn,Xe,Uo]},{provide:Sf,useClass:uL,multi:!0,deps:[Fn]},k_,x_,M_,{provide:Ny,useExisting:k_},{provide:class w2{},useClass:X2,deps:[]},[]];let mL=(()=>{class e{constructor(n){}static withServerTransition(n){return{ngModule:e,providers:[{provide:Zc,useValue:n.appId}]}}static#e=this.\u0275fac=function(r){return new(r||e)(ue(gL,12))};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({providers:[...H_,...U_],imports:[Eo,ak]})}return e})(),vL=(()=>{class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}static#e=this.\u0275fac=function(r){return new(r||e)(ue(Fn))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Co(e){return this instanceof Co?(this.v=e,this):new Co(e)}function K_(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=function Pf(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(u,d){!function o(i,s,u,d){Promise.resolve(d).then(function(h){i({value:h,done:u})},s)}(u,d,(s=e[i](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const Y_=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function Z_(e){return Ke(e?.then)}function Q_(e){return Ke(e[Ds])}function X_(e){return Symbol.asyncIterator&&Ke(e?.[Symbol.asyncIterator])}function J_(e){return new TypeError(`You provided ${null!==e&&"object"==typeof e?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const eD=function jL(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function tD(e){return Ke(e?.[eD])}function nD(e){return function W_(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,r=n.apply(e,t||[]),i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(m){r[m]&&(o[m]=function(y){return new Promise(function(E,C){i.push([m,y,E,C])>1||u(m,y)})})}function u(m,y){try{!function d(m){m.value instanceof Co?Promise.resolve(m.value.v).then(h,p):f(i[0][2],m)}(r[m](y))}catch(E){f(i[0][3],E)}}function h(m){u("next",m)}function p(m){u("throw",m)}function f(m,y){m(y),i.shift(),i.length&&u(i[0][0],i[0][1])}}(this,arguments,function*(){const n=e.getReader();try{for(;;){const{value:r,done:o}=yield Co(n.read());if(o)return yield Co(void 0);yield yield Co(r)}}finally{n.releaseLock()}})}function rD(e){return Ke(e?.getReader)}function Kr(e){if(e instanceof D)return e;if(null!=e){if(Q_(e))return function zL(e){return new D(t=>{const n=e[Ds]();if(Ke(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(e);if(Y_(e))return function qL(e){return new D(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,To)})}(e);if(X_(e))return oD(e);if(tD(e))return function WL(e){return new D(t=>{for(const n of e)if(t.next(n),t.closed)return;t.complete()})}(e);if(rD(e))return function KL(e){return oD(nD(e))}(e)}throw J_(e)}function oD(e){return new D(t=>{(function YL(e,t){var n,r,o,i;return function q_(e,t,n,r){return new(n||(n=Promise))(function(i,s){function u(p){try{h(r.next(p))}catch(f){s(f)}}function d(p){try{h(r.throw(p))}catch(f){s(f)}}function h(p){p.done?i(p.value):function o(i){return i instanceof n?i:new n(function(s){s(i)})}(p.value).then(u,d)}h((r=r.apply(e,t||[])).next())})}(this,void 0,void 0,function*(){try{for(n=K_(e);!(r=yield n.next()).done;)if(t.next(r.value),t.closed)return}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})})(e,t).catch(n=>t.error(n))})}function Yr(e,t,n,r=0,o=!1){const i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function iD(e,t=0){return Re((n,r)=>{n.subscribe(dt(r,o=>Yr(r,e,()=>r.next(o),t),()=>Yr(r,e,()=>r.complete(),t),o=>Yr(r,e,()=>r.error(o),t)))})}function sD(e,t=0){return Re((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function aD(e,t){if(!e)throw new Error("Iterable cannot be null");return new D(n=>{Yr(n,t,()=>{const r=e[Symbol.asyncIterator]();Yr(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function jt(e,t){return t?function t$(e,t){if(null!=e){if(Q_(e))return function ZL(e,t){return Kr(e).pipe(sD(t),iD(t))}(e,t);if(Y_(e))return function XL(e,t){return new D(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}(e,t);if(Z_(e))return function QL(e,t){return Kr(e).pipe(sD(t),iD(t))}(e,t);if(X_(e))return aD(e,t);if(tD(e))return function JL(e,t){return new D(n=>{let r;return Yr(n,t,()=>{r=e[eD](),Yr(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){return void n.error(s)}i?n.complete():n.next(o)},0,!0)}),()=>Ke(r?.return)&&r.return()})}(e,t);if(rD(e))return function e$(e,t){return aD(nD(e),t)}(e,t)}throw J_(e)}(e,t):Kr(e)}function Lf(e){return e[e.length-1]}function Eu(e){return function n$(e){return e&&Ke(e.schedule)}(Lf(e))?e.pop():void 0}function fe(...e){return jt(e,Eu(e))}const{isArray:o$}=Array,{getPrototypeOf:i$,prototype:s$,keys:a$}=Object;const{isArray:u$}=Array;function $f(...e){const t=Eu(e),n=function r$(e){return Ke(Lf(e))?e.pop():void 0}(e),{args:r,keys:o}=function c$(e){if(1===e.length){const t=e[0];if(o$(t))return{args:t,keys:null};if(function l$(e){return e&&"object"==typeof e&&i$(e)===s$}(t)){const n=a$(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}(e);if(0===r.length)return jt([],t);const i=new D(function f$(e,t,n=to){return r=>{cD(t,()=>{const{length:o}=e,i=new Array(o);let s=o,u=o;for(let d=0;d{const h=jt(e[d],t);let p=!1;h.subscribe(dt(r,f=>{i[d]=f,p||(p=!0,u--),u||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}(r,t,o?s=>function p$(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}(o,s):to));return n?i.pipe(function h$(e){return Ve(t=>function d$(e,t){return u$(t)?e(...t):e(t)}(e,t))}(n)):i}function cD(e,t,n){e?Yr(n,e,t):t()}const Cu=Io(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function Jt(e,t,n=1/0){return Ke(t)?Jt((r,o)=>Ve((i,s)=>t(r,i,o,s))(Kr(e(r,o))),n):("number"==typeof t&&(n=t),Re((r,o)=>function g$(e,t,n,r,o,i,s,u){const d=[];let h=0,p=0,f=!1;const m=()=>{f&&!d.length&&!h&&t.complete()},y=C=>h{i&&t.next(C),h++;let S=!1;Kr(n(C,p++)).subscribe(dt(t,M=>{o?.(M),i?y(M):t.next(M)},()=>{S=!0},void 0,()=>{if(S)try{for(h--;d.length&&hE(M)):E(M)}m()}catch(M){t.error(M)}}))};return e.subscribe(dt(t,y,()=>{f=!0,m()})),()=>{u?.()}}(r,o,e,n)))}function Za(e=1/0){return Jt(to,e)}function Ff(...e){return function m$(){return Za(1)}()(jt(e,Eu(e)))}function lD(e){return new D(t=>{Kr(e()).subscribe(t)})}function _u(e,t){const n=Ke(e)?e:()=>e,r=o=>o.error(n());return new D(t?o=>t.schedule(r,0,o):r)}const Cr=new D(e=>e.complete());function Bf(){return Re((e,t)=>{let n=null;e._refCount++;const r=dt(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount)return void(n=null);const o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}class uD extends D{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,bt(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){const t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new Lt;const n=this.getSubject();t.add(this.source.subscribe(dt(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=Lt.EMPTY)}return t}refCount(){return Bf()(this)}}function _r(e,t){return Re((n,r)=>{let o=null,i=0,s=!1;const u=()=>s&&!o&&r.complete();n.subscribe(dt(r,d=>{o?.unsubscribe();let h=0;const p=i++;Kr(e(d,p)).subscribe(o=dt(r,f=>r.next(t?t(d,f,p,h++):f),()=>{o=null,u()}))},()=>{s=!0,u()}))})}function os(e){return e<=0?()=>Cr:Re((t,n)=>{let r=0;t.subscribe(dt(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function _o(e,t){return Re((n,r)=>{let o=0;n.subscribe(dt(r,i=>e.call(t,i,o++)&&r.next(i)))})}function Du(e){return Re((t,n)=>{let r=!1;t.subscribe(dt(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function dD(e=b$){return Re((t,n)=>{let r=!1;t.subscribe(dt(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function b$(){return new Cu}function Zo(e,t){const n=arguments.length>=2;return r=>r.pipe(e?_o((o,i)=>e(o,i,r)):to,os(1),n?Du(t):dD(()=>new Cu))}function Qa(e,t){return Ke(t)?Jt(e,t,1):Jt(e,1)}function hn(e,t,n){const r=Ke(e)||t||n?{next:e,error:t,complete:n}:e;return r?Re((o,i)=>{var s;null===(s=r.subscribe)||void 0===s||s.call(r);let u=!0;o.subscribe(dt(i,d=>{var h;null===(h=r.next)||void 0===h||h.call(r,d),i.next(d)},()=>{var d;u=!1,null===(d=r.complete)||void 0===d||d.call(r),i.complete()},d=>{var h;u=!1,null===(h=r.error)||void 0===h||h.call(r,d),i.error(d)},()=>{var d,h;u&&(null===(d=r.unsubscribe)||void 0===d||d.call(r)),null===(h=r.finalize)||void 0===h||h.call(r)}))}):to}function is(e){return Re((t,n)=>{let i,r=null,o=!1;r=t.subscribe(dt(n,void 0,void 0,s=>{i=Kr(e(s,is(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function Uf(e){return e<=0?()=>Cr:Re((t,n)=>{let r=[];t.subscribe(dt(n,o=>{r.push(o),e{for(const o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function Hf(e){return Re((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}const Ie="primary",Xa=Symbol("RouteTitle");class I${constructor(t){this.params=t||{}}has(t){return Object.prototype.hasOwnProperty.call(this.params,t)}get(t){if(this.has(t)){const n=this.params[t];return Array.isArray(n)?n[0]:n}return null}getAll(t){if(this.has(t)){const n=this.params[t];return Array.isArray(n)?n:[n]}return[]}get keys(){return Object.keys(this.params)}}function ss(e){return new I$(e)}function S$(e,t,n){const r=n.path.split("/");if(r.length>e.length||"full"===n.pathMatch&&(t.hasChildren()||r.lengthr[i]===o)}return e===t}function pD(e){return e.length>0?e[e.length-1]:null}function Do(e){return function EL(e){return!!e&&(e instanceof D||Ke(e.lift)&&Ke(e.subscribe))}(e)?e:Yl(e)?jt(Promise.resolve(e)):fe(e)}const N$={exact:function mD(e,t,n){if(!Qo(e.segments,t.segments)||!Iu(e.segments,t.segments,n)||e.numberOfChildren!==t.numberOfChildren)return!1;for(const r in t.children)if(!e.children[r]||!mD(e.children[r],t.children[r],n))return!1;return!0},subset:vD},fD={exact:function M$(e,t){return Dr(e,t)},subset:function A$(e,t){return Object.keys(t).length<=Object.keys(e).length&&Object.keys(t).every(n=>hD(e[n],t[n]))},ignored:()=>!0};function gD(e,t,n){return N$[n.paths](e.root,t.root,n.matrixParams)&&fD[n.queryParams](e.queryParams,t.queryParams)&&!("exact"===n.fragment&&e.fragment!==t.fragment)}function vD(e,t,n){return yD(e,t,t.segments,n)}function yD(e,t,n,r){if(e.segments.length>n.length){const o=e.segments.slice(0,n.length);return!(!Qo(o,n)||t.hasChildren()||!Iu(o,n,r))}if(e.segments.length===n.length){if(!Qo(e.segments,n)||!Iu(e.segments,n,r))return!1;for(const o in t.children)if(!e.children[o]||!vD(e.children[o],t.children[o],r))return!1;return!0}{const o=n.slice(0,e.segments.length),i=n.slice(e.segments.length);return!!(Qo(e.segments,o)&&Iu(e.segments,o,r)&&e.children[Ie])&&yD(e.children[Ie],t,i,r)}}function Iu(e,t,n){return t.every((r,o)=>fD[n](e[o].parameters,r.parameters))}class as{constructor(t=new nt([],{}),n={},r=null){this.root=t,this.queryParams=n,this.fragment=r}get queryParamMap(){return this._queryParamMap??=ss(this.queryParams),this._queryParamMap}toString(){return O$.serialize(this)}}class nt{constructor(t,n){this.segments=t,this.children=n,this.parent=null,Object.values(n).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Su(this)}}class Ja{constructor(t,n){this.path=t,this.parameters=n}get parameterMap(){return this._parameterMap??=ss(this.parameters),this._parameterMap}toString(){return ED(this)}}function Qo(e,t){return e.length===t.length&&e.every((n,r)=>n.path===t[r].path)}let cs=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>new jf,providedIn:"root"})}return e})();class jf{parse(t){const n=new z$(t);return new as(n.parseRootSegment(),n.parseQueryParams(),n.parseFragment())}serialize(t){const n=`/${ec(t.root,!0)}`,r=function L$(e){const t=Object.entries(e).map(([n,r])=>Array.isArray(r)?r.map(o=>`${Tu(n)}=${Tu(o)}`).join("&"):`${Tu(n)}=${Tu(r)}`).filter(n=>n);return t.length?`?${t.join("&")}`:""}(t.queryParams);return`${n}${r}${"string"==typeof t.fragment?`#${function k$(e){return encodeURI(e)}(t.fragment)}`:""}`}}const O$=new jf;function Su(e){return e.segments.map(t=>ED(t)).join("/")}function ec(e,t){if(!e.hasChildren())return Su(e);if(t){const n=e.children[Ie]?ec(e.children[Ie],!1):"",r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==Ie&&r.push(`${o}:${ec(i,!1)}`)}),r.length>0?`${n}(${r.join("//")})`:n}{const n=function R$(e,t){let n=[];return Object.entries(e.children).forEach(([r,o])=>{r===Ie&&(n=n.concat(t(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==Ie&&(n=n.concat(t(o,r)))}),n}(e,(r,o)=>o===Ie?[ec(e.children[Ie],!1)]:[`${o}:${ec(r,!1)}`]);return 1===Object.keys(e.children).length&&null!=e.children[Ie]?`${Su(e)}/${n[0]}`:`${Su(e)}/(${n.join("//")})`}}function bD(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Tu(e){return bD(e).replace(/%3B/gi,";")}function zf(e){return bD(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Nu(e){return decodeURIComponent(e)}function wD(e){return Nu(e.replace(/\+/g,"%20"))}function ED(e){return`${zf(e.path)}${function P$(e){return Object.entries(e).map(([t,n])=>`;${zf(t)}=${zf(n)}`).join("")}(e.parameters)}`}const $$=/^[^\/()?;#]+/;function qf(e){const t=e.match($$);return t?t[0]:""}const F$=/^[^\/()?;=#]+/,U$=/^[^=?&#]+/,V$=/^[^&#]+/;class z${constructor(t){this.url=t,this.remaining=t}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new nt([],{}):new nt([],this.parseChildren())}parseQueryParams(){const t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let n={};this.peekStartsWith("/(")&&(this.capture("/"),n=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(t.length>0||Object.keys(n).length>0)&&(r[Ie]=new nt(t,n)),r}parseSegment(){const t=qf(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new L(4009,!1);return this.capture(t),new Ja(Nu(t),this.parseMatrixParams())}parseMatrixParams(){const t={};for(;this.consumeOptional(";");)this.parseParam(t);return t}parseParam(t){const n=function B$(e){const t=e.match(F$);return t?t[0]:""}(this.remaining);if(!n)return;this.capture(n);let r="";if(this.consumeOptional("=")){const o=qf(this.remaining);o&&(r=o,this.capture(r))}t[Nu(n)]=Nu(r)}parseQueryParam(t){const n=function H$(e){const t=e.match(U$);return t?t[0]:""}(this.remaining);if(!n)return;this.capture(n);let r="";if(this.consumeOptional("=")){const s=function j$(e){const t=e.match(V$);return t?t[0]:""}(this.remaining);s&&(r=s,this.capture(r))}const o=wD(n),i=wD(r);if(t.hasOwnProperty(o)){let s=t[o];Array.isArray(s)||(s=[s],t[o]=s),s.push(i)}else t[o]=i}parseParens(t){const n={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const r=qf(this.remaining),o=this.remaining[r.length];if("/"!==o&&")"!==o&&";"!==o)throw new L(4010,!1);let i;r.indexOf(":")>-1?(i=r.slice(0,r.indexOf(":")),this.capture(i),this.capture(":")):t&&(i=Ie);const s=this.parseChildren();n[i]=1===Object.keys(s).length?s[Ie]:new nt([],s),this.consumeOptional("//")}return n}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}capture(t){if(!this.consumeOptional(t))throw new L(4011,!1)}}function CD(e){return e.segments.length>0?new nt([],{[Ie]:e}):e}function _D(e){const t={};for(const[r,o]of Object.entries(e.children)){const i=_D(o);if(r===Ie&&0===i.segments.length&&i.hasChildren())for(const[s,u]of Object.entries(i.children))t[s]=u;else(i.segments.length>0||i.hasChildren())&&(t[r]=i)}return function q$(e){if(1===e.numberOfChildren&&e.children[Ie]){const t=e.children[Ie];return new nt(e.segments.concat(t.segments),t.children)}return e}(new nt(e.segments,t))}function ls(e){return e instanceof as}function DD(e){let t;const o=CD(function n(i){const s={};for(const d of i.children){const h=n(d);s[d.outlet]=h}const u=new nt(i.url,s);return i===e&&(t=u),u}(e.root));return t??o}function ID(e,t,n,r){let o=e;for(;o.parent;)o=o.parent;if(0===t.length)return Gf(o,o,o,n,r);const i=function W$(e){if("string"==typeof e[0]&&1===e.length&&"/"===e[0])return new TD(!0,0,e);let t=0,n=!1;const r=e.reduce((o,i,s)=>{if("object"==typeof i&&null!=i){if(i.outlets){const u={};return Object.entries(i.outlets).forEach(([d,h])=>{u[d]="string"==typeof h?h.split("/"):h}),[...o,{outlets:u}]}if(i.segmentPath)return[...o,i.segmentPath]}return"string"!=typeof i?[...o,i]:0===s?(i.split("/").forEach((u,d)=>{0==d&&"."===u||(0==d&&""===u?n=!0:".."===u?t++:""!=u&&o.push(u))}),o):[...o,i]},[]);return new TD(n,t,r)}(t);if(i.toRoot())return Gf(o,o,new nt([],{}),n,r);const s=function K$(e,t,n){if(e.isAbsolute)return new Au(t,!0,0);if(!n)return new Au(t,!1,NaN);if(null===n.parent)return new Au(n,!0,0);const r=Mu(e.commands[0])?0:1;return function Y$(e,t,n){let r=e,o=t,i=n;for(;i>o;){if(i-=o,r=r.parent,!r)throw new L(4005,!1);o=r.segments.length}return new Au(r,!1,o-i)}(n,n.segments.length-1+r,e.numberOfDoubleDots)}(i,o,e),u=s.processChildren?nc(s.segmentGroup,s.index,i.commands):ND(s.segmentGroup,s.index,i.commands);return Gf(o,s.segmentGroup,u,n,r)}function Mu(e){return"object"==typeof e&&null!=e&&!e.outlets&&!e.segmentPath}function tc(e){return"object"==typeof e&&null!=e&&e.outlets}function Gf(e,t,n,r,o){let s,i={};r&&Object.entries(r).forEach(([d,h])=>{i[d]=Array.isArray(h)?h.map(p=>`${p}`):`${h}`}),s=e===t?n:SD(e,t,n);const u=CD(_D(s));return new as(u,i,o)}function SD(e,t,n){const r={};return Object.entries(e.children).forEach(([o,i])=>{r[o]=i===t?n:SD(i,t,n)}),new nt(e.segments,r)}class TD{constructor(t,n,r){if(this.isAbsolute=t,this.numberOfDoubleDots=n,this.commands=r,t&&r.length>0&&Mu(r[0]))throw new L(4003,!1);const o=r.find(tc);if(o&&o!==pD(r))throw new L(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Au{constructor(t,n,r){this.segmentGroup=t,this.processChildren=n,this.index=r}}function ND(e,t,n){if(e??=new nt([],{}),0===e.segments.length&&e.hasChildren())return nc(e,t,n);const r=function Q$(e,t,n){let r=0,o=t;const i={match:!1,pathIndex:0,commandIndex:0};for(;o=n.length)return i;const s=e.segments[o],u=n[r];if(tc(u))break;const d=`${u}`,h=r0&&void 0===d)break;if(d&&h&&"object"==typeof h&&void 0===h.outlets){if(!AD(d,h,s))return i;r+=2}else{if(!AD(d,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}(e,t,n),o=n.slice(r.commandIndex);if(r.match&&r.pathIndexi!==Ie)&&e.children[Ie]&&1===e.numberOfChildren&&0===e.children[Ie].segments.length){const i=nc(e.children[Ie],t,n);return new nt(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(o[i]=ND(e.children[i],t,s))}),Object.entries(e.children).forEach(([i,s])=>{void 0===r[i]&&(o[i]=s)}),new nt(e.segments,o)}}function Wf(e,t,n){const r=e.segments.slice(0,t);let o=0;for(;o{"string"==typeof r&&(r=[r]),null!==r&&(t[n]=Wf(new nt([],{}),0,r))}),t}function MD(e){const t={};return Object.entries(e).forEach(([n,r])=>t[n]=`${r}`),t}function AD(e,t,n){return e==n.path&&Dr(t,n.parameters)}const rc="imperative";var Pe=function(e){return e[e.NavigationStart=0]="NavigationStart",e[e.NavigationEnd=1]="NavigationEnd",e[e.NavigationCancel=2]="NavigationCancel",e[e.NavigationError=3]="NavigationError",e[e.RoutesRecognized=4]="RoutesRecognized",e[e.ResolveStart=5]="ResolveStart",e[e.ResolveEnd=6]="ResolveEnd",e[e.GuardsCheckStart=7]="GuardsCheckStart",e[e.GuardsCheckEnd=8]="GuardsCheckEnd",e[e.RouteConfigLoadStart=9]="RouteConfigLoadStart",e[e.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",e[e.ChildActivationStart=11]="ChildActivationStart",e[e.ChildActivationEnd=12]="ChildActivationEnd",e[e.ActivationStart=13]="ActivationStart",e[e.ActivationEnd=14]="ActivationEnd",e[e.Scroll=15]="Scroll",e[e.NavigationSkipped=16]="NavigationSkipped",e}(Pe||{});class Ir{constructor(t,n){this.id=t,this.url=n}}class xu extends Ir{constructor(t,n,r="imperative",o=null){super(t,n),this.type=Pe.NavigationStart,this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Zr extends Ir{constructor(t,n,r){super(t,n),this.urlAfterRedirects=r,this.type=Pe.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var On=function(e){return e[e.Redirect=0]="Redirect",e[e.SupersededByNewNavigation=1]="SupersededByNewNavigation",e[e.NoDataFromResolver=2]="NoDataFromResolver",e[e.GuardRejected=3]="GuardRejected",e}(On||{}),Ru=function(e){return e[e.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",e[e.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",e}(Ru||{});class us extends Ir{constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o,this.type=Pe.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class ds extends Ir{constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o,this.type=Pe.NavigationSkipped}}class Ou extends Ir{constructor(t,n,r,o){super(t,n),this.error=r,this.target=o,this.type=Pe.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class xD extends Ir{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=Pe.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class J$ extends Ir{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=Pe.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class eF extends Ir{constructor(t,n,r,o,i){super(t,n),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i,this.type=Pe.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class tF extends Ir{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=Pe.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class nF extends Ir{constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o,this.type=Pe.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class rF{constructor(t){this.route=t,this.type=Pe.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class oF{constructor(t){this.route=t,this.type=Pe.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class iF{constructor(t){this.snapshot=t,this.type=Pe.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class sF{constructor(t){this.snapshot=t,this.type=Pe.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class aF{constructor(t){this.snapshot=t,this.type=Pe.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class cF{constructor(t){this.snapshot=t,this.type=Pe.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class RD{constructor(t,n,r){this.routerEvent=t,this.position=n,this.anchor=r,this.type=Pe.Scroll}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class Kf{}class Yf{constructor(t){this.url=t}}class lF{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new oc,this.attachRef=null}}let oc=(()=>{class e{constructor(){this.contexts=new Map}onChildOutletCreated(n,r){const o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){const r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){const n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new lF,this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();class OD{constructor(t){this._root=t}get root(){return this._root.value}parent(t){const n=this.pathFromRoot(t);return n.length>1?n[n.length-2]:null}children(t){const n=Zf(t,this._root);return n?n.children.map(r=>r.value):[]}firstChild(t){const n=Zf(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){const n=Qf(t,this._root);return n.length<2?[]:n[n.length-2].children.map(o=>o.value).filter(o=>o!==t)}pathFromRoot(t){return Qf(t,this._root).map(n=>n.value)}}function Zf(e,t){if(e===t.value)return t;for(const n of t.children){const r=Zf(e,n);if(r)return r}return null}function Qf(e,t){if(e===t.value)return[t];for(const n of t.children){const r=Qf(e,n);if(r.length)return r.unshift(t),r}return[]}class nr{constructor(t,n){this.value=t,this.children=n}toString(){return`TreeNode(${this.value})`}}function hs(e){const t={};return e&&e.children.forEach(n=>t[n.value.outlet]=n),t}class kD extends OD{constructor(t,n){super(t),this.snapshot=n,eg(this,t)}toString(){return this.snapshot.toString()}}function PD(e){const t=function uF(e){const i=new Jf([],{},{},"",{},Ie,e,null,{});return new LD("",new nr(i,[]))}(e),n=new ne([new Ja("",{})]),r=new ne({}),o=new ne({}),i=new ne({}),s=new ne(""),u=new ps(n,r,i,s,o,Ie,e,t.root);return u.snapshot=t.root,new kD(new nr(u,[]),t)}class ps{constructor(t,n,r,o,i,s,u,d){this.urlSubject=t,this.paramsSubject=n,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=u,this._futureSnapshot=d,this.title=this.dataSubject?.pipe(Ve(h=>h[Xa]))??fe(void 0),this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(Ve(t=>ss(t))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(Ve(t=>ss(t))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Xf(e,t,n="emptyOnly"){let r;const{routeConfig:o}=e;return r=null===t||"always"!==n&&""!==o?.path&&(t.component||t.routeConfig?.loadComponent)?{params:{...e.params},data:{...e.data},resolve:{...e.data,...e._resolvedData??{}}}:{params:{...t.params,...e.params},data:{...t.data,...e.data},resolve:{...e.data,...t.data,...o?.data,...e._resolvedData}},o&&FD(o)&&(r.resolve[Xa]=o.title),r}class Jf{get title(){return this.data?.[Xa]}constructor(t,n,r,o,i,s,u,d,h){this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=u,this.routeConfig=d,this._resolve=h}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=ss(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=ss(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class LD extends OD{constructor(t,n){super(n),this.url=t,eg(this,n)}toString(){return $D(this._root)}}function eg(e,t){t.value._routerState=e,t.children.forEach(n=>eg(e,n))}function $D(e){const t=e.children.length>0?` { ${e.children.map($D).join(", ")} } `:"";return`${e.value}${t}`}function tg(e){if(e.snapshot){const t=e.snapshot,n=e._futureSnapshot;e.snapshot=n,Dr(t.queryParams,n.queryParams)||e.queryParamsSubject.next(n.queryParams),t.fragment!==n.fragment&&e.fragmentSubject.next(n.fragment),Dr(t.params,n.params)||e.paramsSubject.next(n.params),function T$(e,t){if(e.length!==t.length)return!1;for(let n=0;nDr(n.parameters,t[r].parameters))}(e.url,t.url);return n&&!(!e.parent!=!t.parent)&&(!e.parent||ng(e.parent,t.parent))}function FD(e){return"string"==typeof e.title||null===e.title}let rg=(()=>{class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=Ie,this.activateEvents=new cn,this.deactivateEvents=new cn,this.attachEvents=new cn,this.detachEvents=new cn,this.parentContexts=F(oc),this.location=F(Qn),this.changeDetector=F(Xl),this.environmentInjector=F(Tn),this.inputBinder=F(ku,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){const{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new L(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new L(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new L(4012,!1);this.location.detach();const n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){const n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new L(4013,!1);this._activatedRoute=n;const o=this.location,s=n.snapshot.component,u=this.parentContexts.getOrCreateContext(this.name).children,d=new dF(n,u,o.injector);this.activated=o.createComponent(s,{index:o.length,injector:d,environmentInjector:r??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275dir=on({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Lo]})}return e})();class dF{constructor(t,n,r){this.route=t,this.childContexts=n,this.parent=r,this.__ngOutletInjector=!0}get(t,n){return t===ps?this.route:t===oc?this.childContexts:this.parent.get(t,n)}}const ku=new te("");let BD=(()=>{class e{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(n){this.unsubscribeFromRouteData(n),this.subscribeToRouteData(n)}unsubscribeFromRouteData(n){this.outletDataSubscriptions.get(n)?.unsubscribe(),this.outletDataSubscriptions.delete(n)}subscribeToRouteData(n){const{activatedRoute:r}=n,o=$f([r.queryParams,r.params,r.data]).pipe(_r(([i,s,u],d)=>(u={...i,...s,...u},0===d?fe(u):Promise.resolve(u)))).subscribe(i=>{if(!n.isActivated||!n.activatedComponentRef||n.activatedRoute!==r||null===r.component)return void this.unsubscribeFromRouteData(n);const s=function Vk(e){const t=Ae(e);if(!t)return null;const n=new _a(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}(r.component);if(s)for(const{templateName:u}of s.inputs)n.activatedComponentRef.setInput(u,i[u]);else this.unsubscribeFromRouteData(n)});this.outletDataSubscriptions.set(n,o)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();function ic(e,t,n){if(n&&e.shouldReuseRoute(t.value,n.value.snapshot)){const r=n.value;r._futureSnapshot=t.value;const o=function pF(e,t,n){return t.children.map(r=>{for(const o of n.children)if(e.shouldReuseRoute(r.value,o.value.snapshot))return ic(e,r,o);return ic(e,r)})}(e,t,n);return new nr(r,o)}{if(e.shouldAttach(t.value)){const i=e.retrieve(t.value);if(null!==i){const s=i.route;return s.value._futureSnapshot=t.value,s.children=t.children.map(u=>ic(e,u)),s}}const r=function fF(e){return new ps(new ne(e.url),new ne(e.params),new ne(e.queryParams),new ne(e.fragment),new ne(e.data),e.outlet,e.component,e)}(t.value),o=t.children.map(i=>ic(e,i));return new nr(r,o)}}const UD="ngNavigationCancelingError";function HD(e,t){const{redirectTo:n,navigationBehaviorOptions:r}=ls(t)?{redirectTo:t,navigationBehaviorOptions:void 0}:t,o=VD(!1,On.Redirect);return o.url=n,o.navigationBehaviorOptions=r,o}function VD(e,t){const n=new Error(`NavigationCancelingError: ${e||""}`);return n[UD]=!0,n.cancellationCode=t,n}function jD(e){return!!e&&e[UD]}let zD=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["ng-component"]],standalone:!0,features:[PE],decls:1,vars:0,template:function(r,o){1&r&&v(0,"router-outlet")},dependencies:[rg],encapsulation:2})}return e})();function og(e){const t=e.children&&e.children.map(og),n=t?{...e,children:t}:{...e};return!n.component&&!n.loadComponent&&(t||n.loadChildren)&&n.outlet&&n.outlet!==Ie&&(n.component=zD),n}function Sr(e){return e.outlet||Ie}function sc(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let t=e.parent;t;t=t.parent){const n=t.routeConfig;if(n?._loadedInjector)return n._loadedInjector;if(n?._injector)return n._injector}return null}class CF{constructor(t,n,r,o,i){this.routeReuseStrategy=t,this.futureState=n,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(t){const n=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(n,r,t),tg(this.futureState.root),this.activateChildRoutes(n,r,t)}deactivateChildRoutes(t,n,r){const o=hs(n);t.children.forEach(i=>{const s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(t,n,r){const o=t.value,i=n?n.value:null;if(o===i)if(o.component){const s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(t,n,s.children)}else this.deactivateChildRoutes(t,n,r);else i&&this.deactivateRouteAndItsChildren(n,r)}deactivateRouteAndItsChildren(t,n){t.value.component&&this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,n):this.deactivateRouteAndOutlet(t,n)}detachAndStoreRouteSubtree(t,n){const r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=hs(t);for(const s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){const s=r.outlet.detach(),u=r.children.onOutletDeactivated();this.routeReuseStrategy.store(t.value.snapshot,{componentRef:s,route:t,contexts:u})}}deactivateRouteAndOutlet(t,n){const r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=hs(t);for(const s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(t,n,r){const o=hs(n);t.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new cF(i.value.snapshot))}),t.children.length&&this.forwardEvent(new sF(t.value.snapshot))}activateRoutes(t,n,r){const o=t.value,i=n?n.value:null;if(tg(o),o===i)if(o.component){const s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(t,n,s.children)}else this.activateChildRoutes(t,n,r);else if(o.component){const s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){const u=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(u.contexts),s.attachRef=u.componentRef,s.route=u.route.value,s.outlet&&s.outlet.attach(u.componentRef,u.route.value),tg(u.route.value),this.activateChildRoutes(t,null,s.children)}else{const u=sc(o.snapshot);s.attachRef=null,s.route=o,s.injector=u,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(t,null,s.children)}}else this.activateChildRoutes(t,null,r)}}class qD{constructor(t){this.path=t,this.route=this.path[this.path.length-1]}}class Pu{constructor(t,n){this.component=t,this.route=n}}function _F(e,t,n){const r=e._root;return ac(r,t?t._root:null,n,[r.value])}function fs(e,t){const n=Symbol(),r=t.get(e,n);return r===n?"function"!=typeof e||function Hu(e){return null!==fn(e)}(e)?t.get(e):e:r}function ac(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){const i=hs(t);return e.children.forEach(s=>{(function IF(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){const i=e.value,s=t?t.value:null,u=n?n.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){const d=function SF(e,t,n){if("function"==typeof n)return n(e,t);switch(n){case"pathParamsChange":return!Qo(e.url,t.url);case"pathParamsOrQueryParamsChange":return!Qo(e.url,t.url)||!Dr(e.queryParams,t.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!ng(e,t)||!Dr(e.queryParams,t.queryParams);default:return!ng(e,t)}}(s,i,i.routeConfig.runGuardsAndResolvers);d?o.canActivateChecks.push(new qD(r)):(i.data=s.data,i._resolvedData=s._resolvedData),ac(e,t,i.component?u?u.children:null:n,r,o),d&&u&&u.outlet&&u.outlet.isActivated&&o.canDeactivateChecks.push(new Pu(u.outlet.component,s))}else s&&cc(t,u,o),o.canActivateChecks.push(new qD(r)),ac(e,null,i.component?u?u.children:null:n,r,o)})(s,i[s.value.outlet],n,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,u])=>cc(u,n.getContext(s),o)),o}function cc(e,t,n){const r=hs(e),o=e.value;Object.entries(r).forEach(([i,s])=>{cc(s,o.component?t?t.children.getContext(i):null:t,n)}),n.canDeactivateChecks.push(new Pu(o.component&&t&&t.outlet&&t.outlet.isActivated?t.outlet.component:null,o))}function lc(e){return"function"==typeof e}function GD(e){return e instanceof Cu||"EmptyError"===e?.name}const Lu=Symbol("INITIAL_VALUE");function gs(){return _r(e=>$f(e.map(t=>t.pipe(os(1),function y$(...e){const t=Eu(e);return Re((n,r)=>{(t?Ff(e,n,t):Ff(e,n)).subscribe(r)})}(Lu)))).pipe(Ve(t=>{for(const n of t)if(!0!==n){if(n===Lu)return Lu;if(!1===n||n instanceof as)return n}return!0}),_o(t=>t!==Lu),os(1)))}function WD(e){return function Mo(...e){return b(e)}(hn(t=>{if(ls(t))throw HD(0,t)}),Ve(t=>!0===t))}class ig{constructor(t){this.segmentGroup=t||null}}class sg extends Error{constructor(t){super(),this.urlTree=t}}function ms(e){return _u(new ig(e))}class qF{constructor(t,n){this.urlSerializer=t,this.urlTree=n}lineralizeSegments(t,n){let r=[],o=n.root;for(;;){if(r=r.concat(o.segments),0===o.numberOfChildren)return fe(r);if(o.numberOfChildren>1||!o.children[Ie])return _u(new L(4e3,!1));o=o.children[Ie]}}applyRedirectCommands(t,n,r){const o=this.applyRedirectCreateUrlTree(n,this.urlSerializer.parse(n),t,r);if(n.startsWith("/"))throw new sg(o);return o}applyRedirectCreateUrlTree(t,n,r,o){const i=this.createSegmentGroup(t,n.root,r,o);return new as(i,this.createQueryParams(n.queryParams,this.urlTree.queryParams),n.fragment)}createQueryParams(t,n){const r={};return Object.entries(t).forEach(([o,i])=>{if("string"==typeof i&&i.startsWith(":")){const u=i.substring(1);r[o]=n[u]}else r[o]=i}),r}createSegmentGroup(t,n,r,o){const i=this.createSegments(t,n.segments,r,o);let s={};return Object.entries(n.children).forEach(([u,d])=>{s[u]=this.createSegmentGroup(t,d,r,o)}),new nt(i,s)}createSegments(t,n,r,o){return n.map(i=>i.path.startsWith(":")?this.findPosParam(t,i,o):this.findOrReturn(i,r))}findPosParam(t,n,r){const o=r[n.path.substring(1)];if(!o)throw new L(4001,!1);return o}findOrReturn(t,n){let r=0;for(const o of n){if(o.path===t.path)return n.splice(r),o;r++}return t}}const ag={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function GF(e,t,n,r,o){const i=cg(e,t,n);return i.matched?(r=function mF(e,t){return e.providers&&!e._injector&&(e._injector=Ml(e.providers,t,`Route: ${e.path}`)),e._injector??t}(t,r),function VF(e,t,n,r){const o=t.canMatch;return o&&0!==o.length?fe(o.map(s=>{const u=fs(s,e);return Do(function RF(e){return e&&lc(e.canMatch)}(u)?u.canMatch(t,n):$r(e,()=>u(t,n)))})).pipe(gs(),WD()):fe(!0)}(r,t,n).pipe(Ve(s=>!0===s?i:{...ag}))):fe(i)}function cg(e,t,n){if("**"===t.path)return function WF(e){return{matched:!0,parameters:e.length>0?pD(e).parameters:{},consumedSegments:e,remainingSegments:[],positionalParamSegments:{}}}(n);if(""===t.path)return"full"===t.pathMatch&&(e.hasChildren()||n.length>0)?{...ag}:{matched:!0,consumedSegments:[],remainingSegments:n,parameters:{},positionalParamSegments:{}};const o=(t.matcher||S$)(n,e,t);if(!o)return{...ag};const i={};Object.entries(o.posParams??{}).forEach(([u,d])=>{i[u]=d.path});const s=o.consumed.length>0?{...i,...o.consumed[o.consumed.length-1].parameters}:i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:n.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function KD(e,t,n,r){return n.length>0&&function ZF(e,t,n){return n.some(r=>$u(e,t,r)&&Sr(r)!==Ie)}(e,n,r)?{segmentGroup:new nt(t,YF(r,new nt(n,e.children))),slicedSegments:[]}:0===n.length&&function QF(e,t,n){return n.some(r=>$u(e,t,r))}(e,n,r)?{segmentGroup:new nt(e.segments,KF(e,n,r,e.children)),slicedSegments:n}:{segmentGroup:new nt(e.segments,e.children),slicedSegments:n}}function KF(e,t,n,r){const o={};for(const i of n)if($u(e,t,i)&&!r[Sr(i)]){const s=new nt([],{});o[Sr(i)]=s}return{...r,...o}}function YF(e,t){const n={};n[Ie]=t;for(const r of e)if(""===r.path&&Sr(r)!==Ie){const o=new nt([],{});n[Sr(r)]=o}return n}function $u(e,t,n){return(!(e.hasChildren()||t.length>0)||"full"!==n.pathMatch)&&""===n.path}class e3{}class r3{constructor(t,n,r,o,i,s,u){this.injector=t,this.configLoader=n,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=u,this.applyRedirects=new qF(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(t){return new L(4002,`'${t.segmentGroup}'`)}recognize(){const t=KD(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(t).pipe(Ve(n=>{const r=new Jf([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},Ie,this.rootComponentType,null,{}),o=new nr(r,n),i=new LD("",o),s=function G$(e,t,n=null,r=null){return ID(DD(e),t,n,r)}(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(i._root,null),{state:i,tree:s}}))}match(t){return this.processSegmentGroup(this.injector,this.config,t,Ie).pipe(is(r=>{if(r instanceof sg)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof ig?this.noMatchError(r):r}))}inheritParamsAndData(t,n){const r=t.value,o=Xf(r,n,this.paramsInheritanceStrategy);r.params=Object.freeze(o.params),r.data=Object.freeze(o.data),t.children.forEach(i=>this.inheritParamsAndData(i,r))}processSegmentGroup(t,n,r,o){return 0===r.segments.length&&r.hasChildren()?this.processChildren(t,n,r):this.processSegment(t,n,r,r.segments,o,!0).pipe(Ve(i=>i instanceof nr?[i]:[]))}processChildren(t,n,r){const o=[];for(const i of Object.keys(r.children))"primary"===i?o.unshift(i):o.push(i);return jt(o).pipe(Qa(i=>{const s=r.children[i],u=function wF(e,t){const n=e.filter(r=>Sr(r)===t);return n.push(...e.filter(r=>Sr(r)!==t)),n}(n,i);return this.processSegmentGroup(t,u,s,i)}),function E$(e,t){return Re(function w$(e,t,n,r,o){return(i,s)=>{let u=n,d=t,h=0;i.subscribe(dt(s,p=>{const f=h++;d=u?e(d,p,f):(u=!0,p),r&&s.next(d)},o&&(()=>{u&&s.next(d),s.complete()})))}}(e,t,arguments.length>=2,!0))}((i,s)=>(i.push(...s),i)),Du(null),function C$(e,t){const n=arguments.length>=2;return r=>r.pipe(e?_o((o,i)=>e(o,i,r)):to,Uf(1),n?Du(t):dD(()=>new Cu))}(),Jt(i=>{if(null===i)return ms(r);const s=YD(i);return function o3(e){e.sort((t,n)=>t.value.outlet===Ie?-1:n.value.outlet===Ie?1:t.value.outlet.localeCompare(n.value.outlet))}(s),fe(s)}))}processSegment(t,n,r,o,i,s){return jt(n).pipe(Qa(u=>this.processSegmentAgainstRoute(u._injector??t,n,u,r,o,i,s).pipe(is(d=>{if(d instanceof ig)return fe(null);throw d}))),Zo(u=>!!u),is(u=>{if(GD(u))return function JF(e,t,n){return 0===t.length&&!e.children[n]}(r,o,i)?fe(new e3):ms(r);throw u}))}processSegmentAgainstRoute(t,n,r,o,i,s,u){return function XF(e,t,n,r){return!!(Sr(e)===r||r!==Ie&&$u(t,n,e))&&cg(t,e,n).matched}(r,o,i,s)?void 0===r.redirectTo?this.matchSegmentAgainstRoute(t,o,r,i,s):this.allowRedirects&&u?this.expandSegmentAgainstRouteUsingRedirect(t,o,n,r,i,s):ms(o):ms(o)}expandSegmentAgainstRouteUsingRedirect(t,n,r,o,i,s){const{matched:u,consumedSegments:d,positionalParamSegments:h,remainingSegments:p}=cg(n,o,i);if(!u)return ms(n);o.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const f=this.applyRedirects.applyRedirectCommands(d,o.redirectTo,h);return this.applyRedirects.lineralizeSegments(o,f).pipe(Jt(m=>this.processSegment(t,r,n,m.concat(p),s,!1)))}matchSegmentAgainstRoute(t,n,r,o,i){const s=GF(n,r,o,t);return"**"===r.path&&(n.children={}),s.pipe(_r(u=>u.matched?this.getChildConfig(t=r._injector??t,r,o).pipe(_r(({routes:d})=>{const h=r._loadedInjector??t,{consumedSegments:p,remainingSegments:f,parameters:m}=u,y=new Jf(p,m,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function s3(e){return e.data||{}}(r),Sr(r),r.component??r._loadedComponent??null,r,function a3(e){return e.resolve||{}}(r)),{segmentGroup:E,slicedSegments:C}=KD(n,p,f,d);if(0===C.length&&E.hasChildren())return this.processChildren(h,d,E).pipe(Ve(M=>null===M?null:new nr(y,M)));if(0===d.length&&0===C.length)return fe(new nr(y,[]));const S=Sr(r)===i;return this.processSegment(h,d,E,C,S?Ie:i,!0).pipe(Ve(M=>new nr(y,M instanceof nr?[M]:[])))})):ms(n)))}getChildConfig(t,n,r){return n.children?fe({routes:n.children,injector:t}):n.loadChildren?void 0!==n._loadedRoutes?fe({routes:n._loadedRoutes,injector:n._loadedInjector}):function HF(e,t,n,r){const o=t.canLoad;return void 0===o||0===o.length?fe(!0):fe(o.map(s=>{const u=fs(s,e);return Do(function NF(e){return e&&lc(e.canLoad)}(u)?u.canLoad(t,n):$r(e,()=>u(t,n)))})).pipe(gs(),WD())}(t,n,r).pipe(Jt(o=>o?this.configLoader.loadChildren(t,n).pipe(hn(i=>{n._loadedRoutes=i.routes,n._loadedInjector=i.injector})):function zF(e){return _u(VD(!1,On.GuardRejected))}())):fe({routes:[],injector:t})}}function i3(e){const t=e.value.routeConfig;return t&&""===t.path}function YD(e){const t=[],n=new Set;for(const r of e){if(!i3(r)){t.push(r);continue}const o=t.find(i=>r.value.routeConfig===i.value.routeConfig);void 0!==o?(o.children.push(...r.children),n.add(o)):t.push(r)}for(const r of n){const o=YD(r.children);t.push(new nr(r.value,o))}return t.filter(r=>!n.has(r))}function ZD(e){const t=e.children.map(n=>ZD(n)).flat();return[e,...t]}function lg(e){return _r(t=>{const n=e(t);return n?jt(n).pipe(Ve(()=>t)):fe(t)})}let QD=(()=>{class e{buildTitle(n){let r,o=n.root;for(;void 0!==o;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===Ie);return r}getResolvedTitleForRoute(n){return n.data[Xa]}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(p3),providedIn:"root"})}return e})(),p3=(()=>{class e extends QD{constructor(n){super(),this.title=n}updateTitle(n){const r=this.buildTitle(n);void 0!==r&&this.title.setTitle(r)}static#e=this.\u0275fac=function(r){return new(r||e)(ue(vL))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const vs=new te("",{providedIn:"root",factory:()=>({})}),ys=new te("");let ug=(()=>{class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=F(pC)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return fe(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);const r=Do(n.loadComponent()).pipe(Ve(XD),hn(i=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=i}),Hf(()=>{this.componentLoaders.delete(n)})),o=new uD(r,()=>new K).pipe(Bf());return this.componentLoaders.set(n,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return fe({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);const i=function f3(e,t,n,r){return Do(e.loadChildren()).pipe(Ve(XD),Jt(o=>o instanceof wb||Array.isArray(o)?fe(o):jt(t.compileModuleAsync(o))),Ve(o=>{r&&r(e);let i,s,u=!1;return Array.isArray(o)?(s=o,!0):(i=o.create(n).injector,s=i.get(ys,[],{optional:!0,self:!0}).flat()),{routes:s.map(og),injector:i}}))}(r,this.compiler,n,this.onLoadEndListener).pipe(Hf(()=>{this.childrenLoaders.delete(r)})),s=new uD(i,()=>new K).pipe(Bf());return this.childrenLoaders.set(r,s),s}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function XD(e){return function g3(e){return e&&"object"==typeof e&&"default"in e}(e)?e.default:e}let dg=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(m3),providedIn:"root"})}return e})(),m3=(()=>{class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const JD=new te(""),e1=new te("");function v3(e,t,n){const r=e.get(e1),o=e.get(Fn);return e.get(Xe).runOutsideAngular(()=>{if(!o.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,Promise.resolve();let i;const s=new Promise(h=>{i=h}),u=o.startViewTransition(()=>(i(),function y3(e){return new Promise(t=>{Py(t,{injector:e})})}(e))),{onViewTransitionCreated:d}=r;return d&&$r(e,()=>d({transition:u,from:t,to:n})),s})}let Fu=(()=>{class e{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new K,this.transitionAbortSubject=new K,this.configLoader=F(ug),this.environmentInjector=F(Tn),this.urlSerializer=F(cs),this.rootContexts=F(oc),this.location=F(za),this.inputBindingEnabled=null!==F(ku,{optional:!0}),this.titleStrategy=F(QD),this.options=F(vs,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=F(dg),this.createViewTransition=F(JD,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>fe(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=o=>this.events.next(new oF(o)),this.configLoader.onLoadStartListener=o=>this.events.next(new rF(o))}complete(){this.transitions?.complete()}handleNavigationRequest(n){const r=++this.navigationId;this.transitions?.next({...this.transitions.value,...n,id:r})}setupNavigations(n,r,o){return this.transitions=new ne({id:0,currentUrlTree:r,currentRawUrl:r,extractedUrl:this.urlHandlingStrategy.extract(r),urlAfterRedirects:this.urlHandlingStrategy.extract(r),rawUrl:r,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:rc,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(_o(i=>0!==i.id),Ve(i=>({...i,extractedUrl:this.urlHandlingStrategy.extract(i.rawUrl)})),_r(i=>{let s=!1,u=!1;return fe(i).pipe(_r(d=>{if(this.navigationId>i.id)return this.cancelNavigationTransition(i,"",On.SupersededByNewNavigation),Cr;this.currentTransition=i,this.currentNavigation={id:d.id,initialUrl:d.rawUrl,extractedUrl:d.extractedUrl,trigger:d.source,extras:d.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const h=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!h&&"reload"!==(d.extras.onSameUrlNavigation??n.onSameUrlNavigation)){const f="";return this.events.next(new ds(d.id,this.urlSerializer.serialize(d.rawUrl),f,Ru.IgnoredSameUrlNavigation)),d.resolve(null),Cr}if(this.urlHandlingStrategy.shouldProcessUrl(d.rawUrl))return fe(d).pipe(_r(f=>{const m=this.transitions?.getValue();return this.events.next(new xu(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),m!==this.transitions?.getValue()?Cr:Promise.resolve(f)}),function c3(e,t,n,r,o,i){return Jt(s=>function t3(e,t,n,r,o,i,s="emptyOnly"){return new r3(e,t,n,r,o,s,i).recognize()}(e,t,n,r,s.extractedUrl,o,i).pipe(Ve(({state:u,tree:d})=>({...s,targetSnapshot:u,urlAfterRedirects:d}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),hn(f=>{i.targetSnapshot=f.targetSnapshot,i.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:f.urlAfterRedirects};const m=new xD(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(m)}));if(h&&this.urlHandlingStrategy.shouldProcessUrl(d.currentRawUrl)){const{id:f,extractedUrl:m,source:y,restoredState:E,extras:C}=d,S=new xu(f,this.urlSerializer.serialize(m),y,E);this.events.next(S);const M=PD(this.rootComponentType).snapshot;return this.currentTransition=i={...d,targetSnapshot:M,urlAfterRedirects:m,extras:{...C,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=m,fe(i)}{const f="";return this.events.next(new ds(d.id,this.urlSerializer.serialize(d.extractedUrl),f,Ru.IgnoredByUrlHandlingStrategy)),d.resolve(null),Cr}}),hn(d=>{const h=new J$(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(h)}),Ve(d=>(this.currentTransition=i={...d,guards:_F(d.targetSnapshot,d.currentSnapshot,this.rootContexts)},i)),function OF(e,t){return Jt(n=>{const{targetSnapshot:r,currentSnapshot:o,guards:{canActivateChecks:i,canDeactivateChecks:s}}=n;return 0===s.length&&0===i.length?fe({...n,guardsResult:!0}):function kF(e,t,n,r){return jt(e).pipe(Jt(o=>function UF(e,t,n,r,o){const i=t&&t.routeConfig?t.routeConfig.canDeactivate:null;return i&&0!==i.length?fe(i.map(u=>{const d=sc(t)??o,h=fs(u,d);return Do(function xF(e){return e&&lc(e.canDeactivate)}(h)?h.canDeactivate(e,t,n,r):$r(d,()=>h(e,t,n,r))).pipe(Zo())})).pipe(gs()):fe(!0)}(o.component,o.route,n,t,r)),Zo(o=>!0!==o,!0))}(s,r,o,e).pipe(Jt(u=>u&&function TF(e){return"boolean"==typeof e}(u)?function PF(e,t,n,r){return jt(t).pipe(Qa(o=>Ff(function $F(e,t){return null!==e&&t&&t(new iF(e)),fe(!0)}(o.route.parent,r),function LF(e,t){return null!==e&&t&&t(new aF(e)),fe(!0)}(o.route,r),function BF(e,t,n){const r=t[t.length-1],i=t.slice(0,t.length-1).reverse().map(s=>function DF(e){const t=e.routeConfig?e.routeConfig.canActivateChild:null;return t&&0!==t.length?{node:e,guards:t}:null}(s)).filter(s=>null!==s).map(s=>lD(()=>fe(s.guards.map(d=>{const h=sc(s.node)??n,p=fs(d,h);return Do(function AF(e){return e&&lc(e.canActivateChild)}(p)?p.canActivateChild(r,e):$r(h,()=>p(r,e))).pipe(Zo())})).pipe(gs())));return fe(i).pipe(gs())}(e,o.path,n),function FF(e,t,n){const r=t.routeConfig?t.routeConfig.canActivate:null;if(!r||0===r.length)return fe(!0);const o=r.map(i=>lD(()=>{const s=sc(t)??n,u=fs(i,s);return Do(function MF(e){return e&&lc(e.canActivate)}(u)?u.canActivate(t,e):$r(s,()=>u(t,e))).pipe(Zo())}));return fe(o).pipe(gs())}(e,o.route,n))),Zo(o=>!0!==o,!0))}(r,i,e,t):fe(u)),Ve(u=>({...n,guardsResult:u})))})}(this.environmentInjector,d=>this.events.next(d)),hn(d=>{if(i.guardsResult=d.guardsResult,ls(d.guardsResult))throw HD(0,d.guardsResult);const h=new eF(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot,!!d.guardsResult);this.events.next(h)}),_o(d=>!!d.guardsResult||(this.cancelNavigationTransition(d,"",On.GuardRejected),!1)),lg(d=>{if(d.guards.canActivateChecks.length)return fe(d).pipe(hn(h=>{const p=new tF(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}),_r(h=>{let p=!1;return fe(h).pipe(function l3(e,t){return Jt(n=>{const{targetSnapshot:r,guards:{canActivateChecks:o}}=n;if(!o.length)return fe(n);const i=new Set(o.map(d=>d.route)),s=new Set;for(const d of i)if(!s.has(d))for(const h of ZD(d))s.add(h);let u=0;return jt(s).pipe(Qa(d=>i.has(d)?function u3(e,t,n,r){const o=e.routeConfig,i=e._resolve;return void 0!==o?.title&&!FD(o)&&(i[Xa]=o.title),function d3(e,t,n,r){const o=Vf(e);if(0===o.length)return fe({});const i={};return jt(o).pipe(Jt(s=>function h3(e,t,n,r){const o=sc(t)??r,i=fs(e,o);return Do(i.resolve?i.resolve(t,n):$r(o,()=>i(t,n)))}(e[s],t,n,r).pipe(Zo(),hn(u=>{i[s]=u}))),Uf(1),function _$(e){return Ve(()=>e)}(i),is(s=>GD(s)?Cr:_u(s)))}(i,e,t,r).pipe(Ve(s=>(e._resolvedData=s,e.data=Xf(e,e.parent,n).resolve,null)))}(d,r,e,t):(d.data=Xf(d,d.parent,e).resolve,fe(void 0))),hn(()=>u++),Uf(1),Jt(d=>u===s.size?fe(n):Cr))})}(this.paramsInheritanceStrategy,this.environmentInjector),hn({next:()=>p=!0,complete:()=>{p||this.cancelNavigationTransition(h,"",On.NoDataFromResolver)}}))}),hn(h=>{const p=new nF(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}))}),lg(d=>{const h=p=>{const f=[];p.routeConfig?.loadComponent&&!p.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(p.routeConfig).pipe(hn(m=>{p.component=m}),Ve(()=>{})));for(const m of p.children)f.push(...h(m));return f};return $f(h(d.targetSnapshot.root)).pipe(Du(null),os(1))}),lg(()=>this.afterPreactivation()),_r(()=>{const{currentSnapshot:d,targetSnapshot:h}=i,p=this.createViewTransition?.(this.environmentInjector,d.root,h.root);return p?jt(p).pipe(Ve(()=>i)):fe(i)}),Ve(d=>{const h=function hF(e,t,n){const r=ic(e,t._root,n?n._root:void 0);return new kD(r,t)}(n.routeReuseStrategy,d.targetSnapshot,d.currentRouterState);return this.currentTransition=i={...d,targetRouterState:h},this.currentNavigation.targetRouterState=h,i}),hn(()=>{this.events.next(new Kf)}),((e,t,n,r)=>Ve(o=>(new CF(t,o.targetRouterState,o.currentRouterState,n,r).activate(e),o)))(this.rootContexts,n.routeReuseStrategy,d=>this.events.next(d),this.inputBindingEnabled),os(1),hn({next:d=>{s=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new Zr(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects))),this.titleStrategy?.updateTitle(d.targetRouterState.snapshot),d.resolve(!0)},complete:()=>{s=!0}}),function D$(e){return Re((t,n)=>{Kr(e).subscribe(dt(n,()=>n.complete(),pn)),!n.closed&&t.subscribe(n)})}(this.transitionAbortSubject.pipe(hn(d=>{throw d}))),Hf(()=>{!s&&!u&&this.cancelNavigationTransition(i,"",On.SupersededByNewNavigation),this.currentTransition?.id===i.id&&(this.currentNavigation=null,this.currentTransition=null)}),is(d=>{if(u=!0,jD(d))this.events.next(new us(i.id,this.urlSerializer.serialize(i.extractedUrl),d.message,d.cancellationCode)),function gF(e){return jD(e)&&ls(e.url)}(d)?this.events.next(new Yf(d.url)):i.resolve(!1);else{this.events.next(new Ou(i.id,this.urlSerializer.serialize(i.extractedUrl),d,i.targetSnapshot??void 0));try{i.resolve(n.errorHandler(d))}catch(h){this.options.resolveNavigationPromiseOnError?i.resolve(!1):i.reject(h)}}return Cr}))}))}cancelNavigationTransition(n,r,o){const i=new us(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(i),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function b3(e){return e!==rc}let w3=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(C3),providedIn:"root"})}return e})();class E3{shouldDetach(t){return!1}store(t,n){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,n){return t.routeConfig===n.routeConfig}}let C3=(()=>{class e extends E3{static#e=this.\u0275fac=(()=>{let n;return function(o){return(n||(n=Fd(e)))(o||e)}})();static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),t1=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:()=>F(_3),providedIn:"root"})}return e})(),_3=(()=>{class e extends t1{constructor(){super(...arguments),this.location=F(za),this.urlSerializer=F(cs),this.options=F(vs,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=F(dg),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new as,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=PD(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{"popstate"===r.type&&n(r.url,r.state)})}handleRouterEvent(n,r){if(n instanceof xu)this.stateMemento=this.createStateMemento();else if(n instanceof ds)this.rawUrlTree=r.initialUrl;else if(n instanceof xD){if("eager"===this.urlUpdateStrategy&&!r.extras.skipLocationChange){const o=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl);this.setBrowserUrl(o,r)}}else n instanceof Kf?(this.currentUrlTree=r.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl),this.routerState=r.targetRouterState,"deferred"===this.urlUpdateStrategy&&(r.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,r))):n instanceof us&&(n.code===On.GuardRejected||n.code===On.NoDataFromResolver)?this.restoreHistory(r):n instanceof Ou?this.restoreHistory(r,!0):n instanceof Zr&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,r){const o=this.urlSerializer.serialize(n);if(this.location.isCurrentPathEqualTo(o)||r.extras.replaceUrl){const s={...r.extras.state,...this.generateNgRouterState(r.id,this.browserPageId)};this.location.replaceState(o,"",s)}else{const i={...r.extras.state,...this.generateNgRouterState(r.id,this.browserPageId+1)};this.location.go(o,"",i)}}restoreHistory(n,r=!1){if("computed"===this.canceledNavigationResolution){const i=this.currentPageId-this.browserPageId;0!==i?this.location.historyGo(i):this.currentUrlTree===n.finalUrl&&0===i&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(r&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r){return"computed"===this.canceledNavigationResolution?{navigationId:n,\u0275routerPageId:r}:{navigationId:n}}static#e=this.\u0275fac=(()=>{let n;return function(o){return(n||(n=Fd(e)))(o||e)}})();static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var uc=function(e){return e[e.COMPLETE=0]="COMPLETE",e[e.FAILED=1]="FAILED",e[e.REDIRECTING=2]="REDIRECTING",e}(uc||{});function n1(e,t){e.events.pipe(_o(n=>n instanceof Zr||n instanceof us||n instanceof Ou||n instanceof ds),Ve(n=>n instanceof Zr||n instanceof ds?uc.COMPLETE:n instanceof us&&(n.code===On.Redirect||n.code===On.SupersededByNewNavigation)?uc.REDIRECTING:uc.FAILED),_o(n=>n!==uc.REDIRECTING),os(1)).subscribe(()=>{t()})}function D3(e){throw e}const I3={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},S3={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let rr=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=F(rC),this.stateManager=F(t1),this.options=F(vs,{optional:!0})||{},this.pendingTasks=F(ki),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=F(Fu),this.urlSerializer=F(cs),this.location=F(za),this.urlHandlingStrategy=F(dg),this._events=new K,this.errorHandler=this.options.errorHandler||D3,this.navigated=!1,this.routeReuseStrategy=F(w3),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=F(ys,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!F(ku,{optional:!0}),this.eventsSubscription=new Lt,this.isNgZoneEnabled=F(Xe)instanceof Xe&&Xe.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const n=this.navigationTransitions.events.subscribe(r=>{try{const o=this.navigationTransitions.currentTransition,i=this.navigationTransitions.currentNavigation;if(null!==o&&null!==i)if(this.stateManager.handleRouterEvent(r,i),r instanceof us&&r.code!==On.Redirect&&r.code!==On.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof Zr)this.navigated=!0;else if(r instanceof Yf){const s=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),u={info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||b3(o.source)};this.scheduleNavigation(s,rc,null,u,{resolve:o.resolve,reject:o.reject,promise:o.promise})}(function N3(e){return!(e instanceof Kf||e instanceof Yf)})(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),rc,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",r)},0)})}navigateToSyncWithBrowser(n,r,o){const i={replaceUrl:!0},s=o?.navigationId?o:null;if(o){const d={...o};delete d.navigationId,delete d.\u0275routerPageId,0!==Object.keys(d).length&&(i.state=d)}const u=this.parseUrl(n);this.scheduleNavigation(u,r,s,i)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(og),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){const{relativeTo:o,queryParams:i,fragment:s,queryParamsHandling:u,preserveFragment:d}=r,h=d?this.currentUrlTree.fragment:s;let f,p=null;switch(u){case"merge":p={...this.currentUrlTree.queryParams,...i};break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=i||null}null!==p&&(p=this.removeEmptyProps(p));try{f=DD(o?o.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof n[0]||!n[0].startsWith("/"))&&(n=[]),f=this.currentUrlTree.root}return ID(f,n,p,h??null)}navigateByUrl(n,r={skipLocationChange:!1}){const o=ls(n)?n:this.parseUrl(n),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,rc,null,r)}navigate(n,r={skipLocationChange:!1}){return function T3(e){for(let t=0;t(null!=i&&(r[o]=i),r),{})}scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(!1);let u,d,h;s?(u=s.resolve,d=s.reject,h=s.promise):h=new Promise((f,m)=>{u=f,d=m});const p=this.pendingTasks.add();return n1(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(p))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:i,resolve:u,reject:d,promise:h,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),h.catch(f=>Promise.reject(f))}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),xe=(()=>{class e{constructor(n,r,o,i,s,u){this.router=n,this.route=r,this.tabIndexAttribute=o,this.renderer=i,this.el=s,this.locationStrategy=u,this.href=null,this.commands=null,this.onChanges=new K,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;const d=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===d||"area"===d,this.isAnchorElement?this.subscription=n.events.subscribe(h=>{h instanceof Zr&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(n){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",n)}ngOnChanges(n){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(n){null!=n?(this.commands=Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(n,r,o,i,s){const u=this.urlTree;return!!(null===u||this.isAnchorElement&&(0!==n||r||o||i||s||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(u,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info}),!this.isAnchorElement)}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){const n=this.urlTree;this.href=null!==n&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n)):null;const r=null===this.href?null:function Mv(e,t,n){return function CS(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?Nv:Tv}(t,n)(e)}(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",r)}applyAttributeValue(n,r){const o=this.renderer,i=this.el.nativeElement;null!==r?o.setAttribute(i,n,r):o.removeAttribute(i,n)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static#e=this.\u0275fac=function(r){return new(r||e)(pe(rr),pe(ps),function Qs(e){return function eI(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const r=n.length;let o=0;for(;o{class e{get isActive(){return this._isActive}constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,this.cdr=i,this.link=s,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new cn,this.routerEventsSubscription=n.events.subscribe(u=>{u instanceof Zr&&this.update()})}ngAfterContentInit(){fe(this.links.changes,fe(null)).pipe(Za()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();const n=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=jt(n).pipe(Za()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(n){const r=Array.isArray(n)?n:n.split(" ");this.classes=r.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{const n=this.hasActiveLinks();this.classes.forEach(r=>{n?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),n&&void 0!==this.ariaCurrentWhenActive?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){const r=function M3(e){return!!e.paths}(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return o=>{const i=o.urlTree;return!!i&&n.isActive(i,r)}}hasActiveLinks(){const n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}static#e=this.\u0275fac=function(r){return new(r||e)(pe(rr),pe(lo),pe(_l),pe(Xl),pe(xe,8))};static#t=this.\u0275dir=on({type:e,selectors:[["","routerLinkActive",""]],contentQueries:function(r,o,i){if(1&r&&function uE(e,t,n,r){Xy(e,t,n,r)}(i,xe,5),2&r){let s;(function dE(e){const t=I(),n=ke(),r=Md();Fc(r+1);const o=np(n,r);if(e.dirty&&function C0(e){return!(4&~e[se])}(t)===!(2&~o.metadata.flags)){if(null===o.matches)e.reset([]);else{const i=eb(t,r);e.reset(i,Um),e.notifyOnChanges()}return!0}return!1})(s=hE())&&(o.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[Lo]})}return e})();class o1{}let A3=(()=>{class e{constructor(n,r,o,i,s){this.router=n,this.injector=o,this.preloadingStrategy=i,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(_o(n=>n instanceof Zr),Qa(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(n,r){const o=[];for(const i of r){i.providers&&!i._injector&&(i._injector=Ml(i.providers,n,`Route: ${i.path}`));const s=i._injector??n,u=i._loadedInjector??s;(i.loadChildren&&!i._loadedRoutes&&void 0===i.canLoad||i.loadComponent&&!i._loadedComponent)&&o.push(this.preloadConfig(s,i)),(i.children||i._loadedRoutes)&&o.push(this.processRoutes(u,i.children??i._loadedRoutes))}return jt(o).pipe(Za())}preloadConfig(n,r){return this.preloadingStrategy.preload(r,()=>{let o;o=r.loadChildren&&void 0===r.canLoad?this.loader.loadChildren(n,r):fe(null);const i=o.pipe(Jt(s=>null===s?fe(void 0):(r._loadedRoutes=s.routes,r._loadedInjector=s.injector,this.processRoutes(s.injector??n,s.routes))));return r.loadComponent&&!r._loadedComponent?jt([i,this.loader.loadComponent(r)]).pipe(Za()):i})}static#e=this.\u0275fac=function(r){return new(r||e)(ue(rr),ue(pC),ue(Tn),ue(o1),ue(ug))};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const hg=new te("");let i1=(()=>{class e{constructor(n,r,o,i,s={}){this.urlSerializer=n,this.transitions=r,this.viewportScroller=o,this.zone=i,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration||="disabled",s.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof xu?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=n.navigationTrigger,this.restoredId=n.restoredState?n.restoredState.navigationId:0):n instanceof Zr?(this.lastId=n.id,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.urlAfterRedirects).fragment)):n instanceof ds&&n.code===Ru.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof RD&&(n.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(n.position):n.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(n.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(n,r){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new RD(n,"popstate"===this.lastSource?this.store[this.restoredId]:null,r))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){!function Jv(){throw new Error("invalid")}()};static#t=this.\u0275prov=P({token:e,factory:e.\u0275fac})}return e})();function Tr(e,t){return{\u0275kind:e,\u0275providers:t}}function a1(){const e=F(yn);return t=>{const n=e.get(bo);if(t!==n.components[0])return;const r=e.get(rr),o=e.get(c1);1===e.get(pg)&&r.initialNavigation(),e.get(l1,null,Oe.Optional)?.setUpPreloading(),e.get(hg,null,Oe.Optional)?.init(),r.resetRootComponentType(n.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}const c1=new te("",{factory:()=>new K}),pg=new te("",{providedIn:"root",factory:()=>1}),l1=new te("");function k3(e){return Tr(0,[{provide:l1,useExisting:A3},{provide:o1,useExisting:e}])}function L3(e){return Tr(9,[{provide:JD,useValue:v3},{provide:e1,useValue:{skipNextTransition:!!e?.skipInitialTransition,...e}}])}const u1=new te("ROUTER_FORROOT_GUARD"),$3=[za,{provide:cs,useClass:jf},rr,oc,{provide:ps,useFactory:function s1(e){return e.routerState.root},deps:[rr]},ug,[]];let en=(()=>{class e{constructor(n){}static forRoot(n,r){return{ngModule:e,providers:[$3,[],{provide:ys,multi:!0,useValue:n},{provide:u1,useFactory:H3,deps:[[rr,new Ec,new Cc]]},{provide:vs,useValue:r||{}},r?.useHash?{provide:Yo,useClass:Wk}:{provide:Yo,useClass:r_},{provide:hg,useFactory:()=>{const e=F(m2),t=F(Xe),n=F(vs),r=F(Fu),o=F(cs);return n.scrollOffset&&e.setOffset(n.scrollOffset),new i1(o,r,e,t,n)}},r?.preloadingStrategy?k3(r.preloadingStrategy).\u0275providers:[],r?.initialNavigation?V3(r):[],r?.bindToComponentInputs?Tr(8,[BD,{provide:ku,useExisting:BD}]).\u0275providers:[],r?.enableViewTransitions?L3().\u0275providers:[],[{provide:d1,useFactory:a1},{provide:Kp,multi:!0,useExisting:d1}]]}}static forChild(n){return{ngModule:e,providers:[{provide:ys,multi:!0,useValue:n}]}}static#e=this.\u0275fac=function(r){return new(r||e)(ue(u1,8))};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({})}return e})();function H3(e){return"guarded"}function V3(e){return["disabled"===e.initialNavigation?Tr(3,[{provide:Gp,multi:!0,useFactory:()=>{const t=F(rr);return()=>{t.setUpLocationChangeListener()}}},{provide:pg,useValue:2}]).\u0275providers:[],"enabledBlocking"===e.initialNavigation?Tr(2,[{provide:pg,useValue:0},{provide:Gp,multi:!0,deps:[yn],useFactory:t=>{const n=t.get(qk,Promise.resolve());return()=>n.then(()=>new Promise(r=>{const o=t.get(rr),i=t.get(c1);n1(o,()=>{r(!0)}),t.get(Fu).afterPreactivation=()=>(r(!0),i.closed?fe(void 0):i),o.initialNavigation()}))}}]).\u0275providers:[]]}const d1=new te(""),z3=[{path:"",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-home"]],decls:10,vars:0,consts:[[1,"d-flex","flex-column","justify-content-center","text-center","py-4","my-5"],[1,"display-3","mx-auto"],[1,"lead","w-75","mx-auto"],[1,"d-grid","gap-2","d-md-flex","justify-content-center"],["routerLink","/docs",1,"btn","btn-danger","px-4","me-md-2"],["href","https://github.com/DevNet-Framework",1,"btn","btn-outline-secondary","px-4"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"h1",1),a(2,"DevNet Framework"),c(),l(3,"p",2),a(4," A free open-source software, and cross-platform, inspired by ASP.NET Core, built in PHP for rapid application development, APIs, console and modern web application with high performance. "),c(),l(5,"div",3)(6,"a",4),a(7,"Documentation"),c(),l(8,"a",5),a(9,"View on GitHub"),c()()())},dependencies:[xe]})}return e})()},{path:"docs",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-docs"]],decls:56,vars:0,consts:[[1,"d-flex","flex-column","justify-content-center","text-center","p-3",2,"min-height","280px","background-color","rebeccapurple"],[1,"text-white","display-4","mx-auto"],[1,"lead","text-white","w-75","mx-auto"],[1,"pt-3"],[1,"container"],[1,"row"],[1,"col-sm-6","col-md-4","mb-3"],[1,"card","shadow-sm","h-100","p-3"],[1,"card-body"],[1,"card-title"],[1,"card-text","mb-0"],["routerLink","/docs/setup",1,"card-link","stretched-link"],["routerLink","/docs/console",1,"card-link","stretched-link"],["routerLink","/docs/system",1,"card-link","stretched-link"],["routerLink","/docs/web",1,"card-link","stretched-link"],["routerLink","/docs/security",1,"card-link","stretched-link"],["routerLink","/docs/orm",1,"card-link","stretched-link"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"h1",1),a(2,"DevNet Documentation"),c(),l(3,"p",2),a(4,"Learn how to use DevNet Framework for rapid application development on any platform, using PHP with a new experience to the next level."),c()(),l(5,"section",3)(6,"div",4)(7,"div",5)(8,"div",6)(9,"div",7)(10,"div",8)(11,"h5",9),a(12,"Setup"),c(),l(13,"p",10),a(14,"Installing the framework and configuring the deployment environment"),c(),v(15,"a",11),c()()(),l(16,"div",6)(17,"div",7)(18,"div",8)(19,"h5",9),a(20,"Console Application"),c(),l(21,"p",10),a(22,"Creating console applications and command lines"),c(),v(23,"a",12),c()()(),l(24,"div",6)(25,"div",7)(26,"div",8)(27,"h5",9),a(28,"Fundamentals"),c(),l(29,"p",10),a(30,"Exploring the fundamental features of the core library"),c(),v(31,"a",13),c()()(),l(32,"div",6)(33,"div",7)(34,"div",8)(35,"h5",9),a(36,"Web Application"),c(),l(37,"p",10),a(38,"Creating web applications, web APIs and microservices"),c(),v(39,"a",14),c()()(),l(40,"div",6)(41,"div",7)(42,"div",8)(43,"h5",9),a(44,"Security"),c(),l(45,"p",10),a(46,"Protecting and controlling the access to the resources"),c(),v(47,"a",15),c()()(),l(48,"div",6)(49,"div",7)(50,"div",8)(51,"h5",9),a(52,"ORM"),c(),l(53,"p",10),a(54,"Manipulating the database using the object relational mapper"),c(),v(55,"a",16),c()()()()()())},dependencies:[xe]})}return e})()},{path:"**",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-error"]],decls:8,vars:0,consts:[[1,"container"],[1,"d-flex","flex-column","justify-content-center","text-center",2,"height","75vh"],[1,"text-danger","display-6","mx-auto","fw-normal"],[1,"text-danger","display-1","mx-auto","fw-normal"],[1,"lead","w-75","mx-auto","text-dark","fw-normal"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"span",2),a(3,"ERROR"),c(),l(4,"h1",3),a(5,"404"),c(),l(6,"p",4),a(7,"Page not found!"),c()()())}})}return e})()}];let q3=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forRoot(z3,{scrollPositionRestoration:"enabled"}),en]})}return e})();const G3=[];let W3=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(G3),en]})}return e})(),Xo=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,W3]})}return e})();const Ue=g(687);function Y3(e){const r={className:"number",begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/,contains:[r,{className:"number",begin:/:\d{1,5}/},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"]},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable",begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}]},r,{className:"number",begin:/\b\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}function Z3(e){const t=e.regex,n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{\w+\}/},{begin:t.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},o={endsWithParent:!0,keywords:{$pattern:/[a-z_]{2,}|\/dev\/poll/,literal:["on","off","yes","no","true","false","none","blocked","debug","info","notice","warn","error","crit","select","break","last","permanent","redirect","kqueue","rtsig","epoll","poll","/dev/poll"]},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|\\{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|\\{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]?\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{beginKeywords:"upstream location",end:/;|\{/,contains:o.contains,keywords:{section:"upstream location"}},{className:"section",begin:t.concat(e.UNDERSCORE_IDENT_RE+t.lookahead(/\s+\{/)),relevance:0},{begin:t.lookahead(e.UNDERSCORE_IDENT_RE+"\\s"),end:";|\\{",contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:o}],relevance:0}],illegal:"[^\\s\\}\\{]"}}let ze=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-sidebar"]],decls:128,vars:0,consts:[[1,"position-sticky","top-0","overflow-auto","bg-white","p-2"],["id","menu",1,"list-unstyled","ps-0"],[1,"mb-1"],["data-bs-toggle","collapse","data-bs-target","#start-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","start-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],[1,"btn-toggle-nav","list-unstyled","fw-normal","pb-1","small"],["routerLink","/docs/setup/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/setup/installation","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/setup/deployment","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#console-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","console-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/console/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/output","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/input","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/console/command","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#fundamentals-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","fundamentals-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/system/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/properties","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/extension","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/linq","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/generics","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/asynchronous","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/system/delegates","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#web-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","web-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/web/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/http","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/middleware","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/routing","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/controller","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/view","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/filter","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/exception","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/web/dependency","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#security-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","security-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/security/overview","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/authentication","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/authorization","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/security/antiforgery","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["data-bs-toggle","collapse","data-bs-target","#entity-collapse","aria-expanded","false",1,"btn","btn-toggle","d-inline-flex","align-items-center","rounded","border-0","collapsed"],["id","entity-collapse","data-bs-parent","#menu","routerLinkActive","show",1,"collapse"],["routerLink","/docs/orm/start","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/query","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/save","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/relationships","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"],["routerLink","/docs/orm/migrations","routerLinkActive","fw-bold",1,"link-dark","d-inline-flex","text-decoration-none","rounded"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"ul",1)(2,"li",2)(3,"button",3),a(4," Setup "),c(),l(5,"div",4)(6,"ul",5)(7,"li")(8,"a",6),a(9,"Overview"),c()(),l(10,"li")(11,"a",7),a(12,"Installation"),c()(),l(13,"li")(14,"a",8),a(15,"Deployment"),c()()()()(),l(16,"li",2)(17,"button",9),a(18," Console "),c(),l(19,"div",10)(20,"ul",5)(21,"li")(22,"a",11),a(23,"Get Started"),c()(),l(24,"li")(25,"a",12),a(26,"Output"),c()(),l(27,"li")(28,"a",13),a(29,"Input"),c()(),l(30,"li")(31,"a",14),a(32,"Command Line"),c()()()()(),l(33,"li",2)(34,"button",15),a(35," Fundamentals "),c(),l(36,"div",16)(37,"ul",5)(38,"li")(39,"a",17),a(40,"Overview"),c()(),l(41,"li")(42,"a",18),a(43,"Accessor Properties"),c()(),l(44,"li")(45,"a",19),a(46,"Extension Methods"),c()(),l(47,"li")(48,"a",20),a(49,"LINQ Methods"),c()(),l(50,"li")(51,"a",21),a(52,"Generic Types"),c()(),l(53,"li")(54,"a",22),a(55,"Async Operations"),c()(),l(56,"li")(57,"a",23),a(58,"Delegates & Events"),c()()()()(),l(59,"li",2)(60,"button",24),a(61," Web "),c(),l(62,"div",25)(63,"ul",5)(64,"li")(65,"a",26),a(66,"Get Started"),c()(),l(67,"li")(68,"a",27),a(69,"Http Context"),c()(),l(70,"li")(71,"a",28),a(72,"Middleware"),c()(),l(73,"li")(74,"a",29),a(75,"Routing"),c()(),l(76,"li")(77,"a",30),a(78,"Controller"),c()(),l(79,"li")(80,"a",31),a(81,"Views"),c()(),l(82,"li")(83,"a",32),a(84,"Filters"),c()(),l(85,"li")(86,"a",33),a(87,"Exception Handler"),c()(),l(88,"li")(89,"a",34),a(90,"Dependency Injection"),c()()()()(),l(91,"li",2)(92,"button",35),a(93," Security "),c(),l(94,"div",36)(95,"ul",5)(96,"li")(97,"a",37),a(98,"Overview"),c()(),l(99,"li")(100,"a",38),a(101,"Authentication"),c()(),l(102,"li")(103,"a",39),a(104,"Authorization"),c()(),l(105,"li")(106,"a",40),a(107,"CSRF Prevention"),c()()()()(),l(108,"li",2)(109,"button",41),a(110," ORM "),c(),l(111,"div",42)(112,"ul",5)(113,"li")(114,"a",43),a(115,"Get Started"),c()(),l(116,"li")(117,"a",44),a(118,"Query Data"),c()(),l(119,"li")(120,"a",45),a(121,"Save Data"),c()(),l(122,"li")(123,"a",46),a(124,"Relationships"),c()(),l(125,"li")(126,"a",47),a(127,"Migrations"),c()()()()()()())},dependencies:[xe,r1],styles:[".btn-toggle[_ngcontent-%COMP%]{padding:.25rem .5rem;font-weight:600;color:#000000a6;background-color:transparent}.btn-toggle[_ngcontent-%COMP%]:hover, .btn-toggle[_ngcontent-%COMP%]:focus{color:#000000d9;background-color:#d2f4ea}.btn-toggle[_ngcontent-%COMP%]:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%}.btn-toggle[aria-expanded=true][_ngcontent-%COMP%]{color:#000000d9}.btn-toggle[aria-expanded=true][_ngcontent-%COMP%]:before{transform:rotate(90deg)}.btn-toggle-nav[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{border-left:2px solid #E0E0E0;margin-left:1rem}.btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.1875rem .5rem;margin-top:.15rem;margin-left:.8rem}.btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .btn-toggle-nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:focus{background-color:#d2f4ea}"]})}return e})();const Q3=[{path:"docs/setup/overview",component:(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["setup-overview"]],decls:33,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/framework.svg","alt","Web app home page","width","60%","height","auto"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/setup/installation",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet Framework is a free open-source PHP library and toolset for rapid application development with high performance to build console applications, web applications, web APIs, and microservices. "),c(),l(11,"h3"),a(12,"Architecture"),c(),l(13,"p"),a(14," The DevNet framework has a layered architecture, which can be represented by the following diagram, that shows the major components of the DevNet Framework in each layer. "),c(),l(15,"div"),v(16,"img",4),c(),l(17,"p"),a(18," The top layer is the application that performs specific tasks and operations that end users interact with, which is built on top of subsequent layers that contain more sophisticated services that are also built on layers below, down to the lowest layer of the system that provides the basic functionality that all components rely on. "),c(),l(19,"blockquote",5)(20,"b"),a(21,"Note:"),c(),a(22," Each of these components will be discussed in more detail in the upcoming chapters. "),c()(),l(23,"nav",6)(24,"ul",7)(25,"li",8)(26,"a",9),v(27,"i",10),a(28," Previous "),c()(),l(29,"li",8)(30,"a",11),a(31," Next "),v(32,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/setup/installation",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["setup-installation"]],decls:64,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["href","https://www.php.net/","rel","nofollow"],["href","https://getcomposer.org/","rel","nofollow"],[1,"alert","alert-warning"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/setup/deployment",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Installation"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet Framework has some software requirements in order to work, so make sure your system meets the software requirements before getting to the installation. "),c(),l(11,"h3"),a(12,"Software Requirements"),c(),l(13,"ul")(14,"li")(15,"a",4),a(16,"PHP"),c(),a(17," version 8.1 or higher"),c(),l(18,"li")(19,"a",5),a(20,"Composer"),c(),a(21," version 2.0 or higher"),c(),l(22,"li"),a(23,"You may need to install or activate "),l(24,"code"),a(25,"PDO PHP Extensions"),c()()(),l(26,"blockquote",6)(27,"b"),a(28,"Important:"),c(),a(29," If you are using composer on a Linux operating system, please make sure that you have added the path "),l(30,"code"),a(31,'"composer/vendor/bin"'),c(),a(32," to the system environment variables in the "),l(33,"code"),a(34,'".bashrc"'),c(),a(35," file as follows:"),v(36,"br"),l(37,"code"),a(38,'export PATH="$PATH:$HOME/.config/composer/vendor/bin"'),c()(),v(39,"br"),l(40,"h3"),a(41,"Installing DevNet Framework"),c(),l(42,"p"),a(43," It is recommended to Install the DevNet Framework globally in your system, just one framework runs multiple projects unless your projects use different versions of the DevNet framework, which may cause conflict because the composer doesn't support multi-versioning, in this case, you can solve this problem using docker container or installing the compatible version of DevNet framework locally inside its proper project. "),c(),l(44,"p"),a(45," To install DevNet Framework, open your terminal and run the following composer command-line: "),c(),l(46,"pre")(47,"code",7),a(48,"composer global require devnet/framework"),c()(),l(49,"p"),a(50," Then you can use the DevNet CLI to create and manage your project. "),c(),l(51,"pre")(52,"code",7),a(53,"devnet --help"),c()()(),l(54,"nav",8)(55,"ul",9)(56,"li",10)(57,"a",11),v(58,"i",12),a(59," Previous "),c()(),l(60,"li",10)(61,"a",13),a(62," Next "),v(63,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/setup/deployment",component:(()=>{class e{constructor(){}ngOnInit(){Ue.registerLanguage("apache",Y3),Ue.registerLanguage("nginx",Z3),Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["setup-deployment"]],decls:59,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-apache"],[1,"language-xml"],[1,"language-nginx"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/installation",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Deployment"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet web project comes with two default server configurations, Apache and IIS, to quickly deploy your web application, but you can add other server configurations, like the configuration of Nginx server, which is demonstrated in the last example of this section. "),c(),l(11,"h3"),a(12,"Apache configuration"),c(),l(13,"p"),a(14," For quick deployment on Apache server, your web project contains already "),l(15,"code"),a(16,".htaccess"),c(),a(17," file in the public directory "),l(18,"code"),a(19,"./webroot/"),c(),a(20," with the following configuration: "),c(),l(21,"pre")(22,"code",4),a(23,"RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^ index.php [QSA,L]"),c()(),v(24,"br"),l(25,"h3"),a(26,"IIS configuration"),c(),l(27,"p"),a(28," For IIS server deployment, your web project contains also the file "),l(29,"code"),a(30,"./webroot/Web.config"),c(),a(31," with the following configuration: "),c(),l(32,"pre")(33,"code",5),a(34,'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'),c()(),v(35,"br"),l(36,"h3"),a(37,"Nginx configuration"),c(),l(38,"p"),a(39," Assuming you have a PHP-FPM server installed in your system and running on "),l(40,"code"),a(41,"127.0.0.1:9000"),c(),a(42,", and you want to deploy your web application on the Nginx server, so you can configure the file "),l(43,"code"),a(44,"nginx.conf"),c(),a(45," like below: "),c(),l(46,"pre")(47,"code",6),a(48,"server {\n listen 80;\n server_name localhost;\n root /path/to/webroot;\n index index.php;\n error_page 404 /index.php;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_pass 127.0.0.1:9000;\n fastcgi_index index.php;\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n include fastcgi_params;\n }\n}"),c()()(),l(49,"nav",7)(50,"ul",8)(51,"li",9)(52,"a",10),v(53,"i",11),a(54," Previous "),c()(),l(55,"li",9)(56,"a",12),a(57," Next "),v(58,"i",13),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/setup",redirectTo:"docs/setup/overview",pathMatch:"full"}];let X3=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(Q3),en]})}return e})(),J3=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,X3,Xo]})}return e})();const e4=[{path:"docs/system/overview",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-overview"]],decls:46,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/command",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/properties",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet System is a low-level library that provides the fundamental functionalities of the DevNet framework, which can be represented in the following features: "),c(),l(11,"ul")(12,"li"),a(13,"Accessor Properties"),c(),l(14,"li"),a(15,"Extension Methods"),c(),l(16,"li"),a(17,"LINQ Methods"),c(),l(18,"li"),a(19,"Generic Types"),c(),l(20,"li"),a(21,"Asynchronous Operations"),c(),l(22,"li"),a(23,"Delegates & Events"),c(),l(24,"li"),a(25,"Database Access"),c(),l(26,"li"),a(27,"And more..."),c()(),v(28,"br"),l(29,"h3"),a(30,"Installation"),c(),l(31,"p"),a(32," If you have installed any of the DevNet packages, then you already have the DevNet System. However, you can still install DevNet System as a third-party library to work with any PHP project by running the following composer command-line: "),c(),l(33,"pre")(34,"code",4),a(35,"composer require devnet/system"),c()()(),l(36,"nav",5)(37,"ul",6)(38,"li",7)(39,"a",8),v(40,"i",9),a(41," Previous "),c()(),l(42,"li",7)(43,"a",10),a(44," Next "),v(45,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/properties",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-properties"]],decls:61,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Accessor Properties"),c(),v(8,"hr"),l(9,"p"),a(10," Accessor properties are methods that look like regular data properties from the outside but are invoked as methods internally when accessed as properties. This allows us to define custom logic for reading and writing the values of an object's properties, with more control over the property's behavior, such as how to validate or modify the input or output, unlike the data properties, which directly store a fixed value. "),c(),l(11,"p"),a(12," To enable the accessor property feature, you need to include the trait "),l(13,"code"),a(14,"DevNet\\System\\PropertyTrait"),c(),a(15," in your class. "),c(),l(16,"h3"),a(17,"Getter Accessor"),c(),l(18,"p"),a(19," The getter accessor is a function bound to a computed property and returns a value when that property is looked up. "),c(),l(20,"p"),a(21," Here is an example that shows how to define a getter accessor property, which is a method that has a property name prefixed with "),l(22,"code"),a(23,"get_"),c(),a(24," accessor and return a value. "),c(),l(25,"pre")(26,"code",4),a(27,"FirstName . ' ' . $this->LastName;\n }\n}\n"),c()(),l(28,"p"),a(29," And here how you can access the computed property: "),c(),l(30,"pre")(31,"code",4),a(32,'FirstName = "John";\n$person->LastName = "Doe";\n\n// Accessing the computed property.\nprint($person->FullName); // Output: John Doe\n'),c()(),v(33,"br"),l(34,"h3"),a(35,"Setter Accessor"),c(),l(36,"p"),a(37," The setter accessor is a function bound to a computed property and will be called when there is an attempt to set that property. "),c(),l(38,"p"),a(39," The following example shows how to define a setter accessor property as a method prefixed with "),l(40,"code"),a(41,"set_"),c(),a(42," accessor and take a value parameter to set object. "),c(),l(43,"pre")(44,"code",4),a(45,"FirstName = $segments[0] ?? '';\n $this->LastName = $segments[1] ?? '';\n }\n}\n"),c()(),l(46,"p"),a(47," And here how to set the computed property: "),c(),l(48,"pre")(49,"code",4),a(50,'FullName = "John Doe";\n\nprint($person->FirstName); // Output: John\nprint($person->LastName); // Output: Doe\n'),c()()(),l(51,"nav",5)(52,"ul",6)(53,"li",7)(54,"a",8),v(55,"i",9),a(56," Previous "),c()(),l(57,"li",7)(58,"a",10),a(59," Next "),v(60,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/extension",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-extension"]],decls:73,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"text-justify"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/properties",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/linq",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Extension Methods"),c(),v(8,"hr"),l(9,"p"),a(10," Extension methods are static methods that can be added to an existing class without modifying the class itself or creating a new derived one, and they can be called as if they were instance methods on that extended class. "),c(),l(11,"h3"),a(12,"Extended class"),c(),l(13,"p"),a(14," The extended class is the class that the extension method operates on, and must include the trait "),l(15,"code"),a(16,"DevNet\\System\\MethodTrait"),c(),a(17," to enable this feature like in the following code example: "),c(),l(18,"pre")(19,"code",4),a(20,"Salary - $employee->Salary * $tax;\n }\n}\n"),c()(),v(40,"br"),l(41,"h3"),a(42,"Calling the extension method"),c(),l(43,"p",5),a(44," To call an extension method as if it were an instance method on a particular extended class, the extension class must be brought into the same scope where that instance calls the extension method, using the keyword "),l(45,"code"),a(46,"use"),c()(),l(47,"pre")(48,"code",4),a(49,'Name = "John Doe";\n$employee->Salary = 25000;\n$tax = 0.15;\n\n// Calling the extension method as if it belongs to the employee instance.\n$income = $employee->getIncome($tax);\n\nprint("Income: {$income}$"); // Income: 21250$\n'),c()(),l(50,"p"),a(51," When calling the extension method, the first parameter will be skipped because it's the target reference, and the second parameter will become the first one, the third one will become the second one, and so on... "),c(),v(52,"br"),l(53,"blockquote",6)(54,"b"),a(55,"Note:"),c(),a(56," One of the best examples of extension methods is the "),l(57,"b"),a(58,"LINQ"),c(),a(59," methods that allow to perform queries on collections of type "),l(60,"code"),a(61,"IEnumerable"),c(),a(62,", More details about this feature in the upcoming section. "),c()(),l(63,"nav",7)(64,"ul",8)(65,"li",9)(66,"a",10),v(67,"i",11),a(68," Previous "),c()(),l(69,"li",9)(70,"a",12),a(71," Next "),v(72,"i",13),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/linq",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-linq"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/generics",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Language Integrated Query"),c(),v(8,"hr"),l(9,"p"),a(10," LINQ, or Language Integrated Query, is an integration of query capabilities as expressions of extension methods against data, such as in-memory data, document databases, or SQL databases. "),c(),l(11,"p"),a(12," Any collection class of type "),l(13,"code"),a(14,"IEnumerable"),c(),a(15," or "),l(16,"code"),a(17,"IQueryable"),c(),a(18," that uses the "),l(19,"code"),a(20,"DevNet\\System\\MethodTrait"),c(),a(21," to support the extension method can take advantage of using LINQ extension methods. "),c(),l(22,"p"),a(23," The difference between "),l(24,"code"),a(25,"IEnumerable"),c(),a(26," and "),l(27,"code"),a(28,"IQueryable"),c(),a(29," types is that the implementation of the "),l(30,"code"),a(31,"IEnumerable"),c(),a(32," type, like the "),l(33,"code"),a(34,"ArrayList"),c(),a(35,", uses LINQ against in-memory data, while the implementation of the "),l(36,"code"),a(37,"IQueryable"),c(),a(38," type, like the "),l(39,"code"),a(40,"EntitySet"),c(),a(41," repository of DevNet DevNet ORM, uses LINQ against SQL database, which means that this one uses "),l(42,"code"),a(43,"IQueryProvider"),c(),a(44," to compile the predicate expressions of the LINQ methods to SQL query syntax. "),c(),l(45,"h3"),a(46,"Using LINQ extension methods"),c(),l(47,"p"),a(48," We use the "),l(49,"code"),a(50,"ArrayList"),c(),a(51," collection as an example to show you how to use the Linq extension methods with the "),l(52,"code"),a(53,"IEnumerable"),c(),a(54," collection and make sure to declare the namespace "),l(55,"code"),a(56,"DevNet\\System\\Linq"),c(),a(57," to be able to use those extension methods. "),c(),l(58,"pre")(59,"code",4),a(60,"first();\n$last = $list->last();\nprint("First employee is {$first->Name} with Id {$first->Id}\\n");\nprint("Last employee is {$last->Name} with Id {$last->Id}\\n");\n'),c()(),l(67,"h6"),a(68,"Output:"),c(),l(69,"pre")(70,"code",5),a(71,"First employee is bob with Id 1\nLast employee is ted with Id 6\n"),c()(),v(72,"br"),l(73,"h5"),a(74,"Filtering"),c(),l(75,"pre")(76,"code",4),a(77,'print("Employees with Id greater than 2\\n");\n\n$employees = $list->where(fn($employee) => $employee->Id > 2);\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n\nprint("\\n");\nprint("Employees with Name ted\\n");\n\n$employees = $list->where(fn($employee) => $employee->Name == \'ted\');\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(78,"h6"),a(79,"Output:"),c(),l(80,"pre")(81,"code",5),a(82,"Employees with Id greater than 2\n3 => ted\n4 => alice\n5 => carol\n6 => ted\n\nEmployees with Name ted\n3 => ted\n6 => ted\n"),c()(),v(83,"br"),l(84,"h5"),a(85,"Sorting"),c(),l(86,"pre")(87,"code",4),a(88,'print("Ascending order by Name\\n");\n\n$employees = $list->orderBy(fn($employee) => $employee->Name);\nforeach ($employees as $employee) {\nprint("{$employee->Id} => {$employee->Name}\\n");\n}\n\nprint("\\n");\nprint("Descending order by Id\\n");\n\n$employees = $list->orderByDescending(fn($employee) => $employee->Id);\nforeach ($employees as $employee) {\nprint("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(89,"h6"),a(90,"Output:"),c(),l(91,"pre")(92,"code",5),a(93,"Ascending order by Name\n4 => alice\n1 => bob \n2 => carol\n5 => carol\n3 => ted \n6 => ted \n\nDescending order by Id\n6 => ted \n5 => carol\n4 => alice\n3 => ted \n2 => carol\n1 => bob\n"),c()(),v(94,"br"),l(95,"h5"),a(96,"Paging"),c(),l(97,"pre")(98,"code",4),a(99,'// Skips the first 2 employees then take just 3 from the rest of employees.\n$employees = $list->skip(2)->take(3);\n\nforeach ($employees as $employee) {\n print("{$employee->Id} => {$employee->Name}\\n");\n}\n'),c()(),l(100,"h6"),a(101,"Output:"),c(),l(102,"pre")(103,"code",5),a(104,"3 => ted\n4 => alice\n5 => carol\n"),c()(),v(105,"br"),l(106,"h5"),a(107,"Aggregating"),c(),l(108,"pre")(109,"code",4),a(110,'$count = $list->count();\n$max = $list->max(fn($employee) => $employee->Id);\n$min = $list->min(fn($employee) => $employee->Id);\n\nprint("Total employees => {$count}\\n");\nprint("Max employee Id => {$max}\\n");\nprint("Min employee Id => {$min}\\n");\n'),c()(),l(111,"h6"),a(112,"Output:"),c(),l(113,"pre")(114,"code",5),a(115,"Total employees => 6\nMax employee Id => 6\nMin employee Id => 1\n"),c()(),v(116,"br"),l(117,"h5"),a(118,"Grouping"),c(),l(119,"pre")(120,"code",4),a(121,'// Creates a groups of employees share the same name.\n$groups = $list->groupBy(fn($employee) => $employee->Name);\n\nforeach ($groups as $group) {\n print("Total employees in {$group->Key} group => {$group->count()}\\n");\n}\n'),c()(),l(122,"h6"),a(123,"Output:"),c(),l(124,"pre")(125,"code",5),a(126,"Total employees in bob group => 1\nTotal employees in carol group => 2\nTotal employees in ted group => 2\nTotal employees in alice group => 1\n"),c()()(),l(127,"nav",6)(128,"ul",7)(129,"li",8)(130,"a",9),v(131,"i",10),a(132," Previous "),c()(),l(133,"li",8)(134,"a",11),a(135," Next "),v(136,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/generics",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-generics"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/extension",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/asynchronous",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Generic Types"),c(),v(8,"hr"),l(9,"p"),a(10," A generic type or parameterized type is a class with type parameters used in class operations without being specific to a particular data type, then defers the specification of these type parameters until the instantiation of the generic type to allow the code re-use. "),c(),l(11,"h3"),a(12,"Generic type parameter"),c(),l(13,"p"),a(14," The generic type parameter is a placeholder for a type that will be specified when an instance of the generic type is created. e.g. "),l(15,"code"),a(16,"TypeName"),c(),a(17," where "),l(18,"code"),a(19,"T"),c(),a(20," is a generic type parameter. "),c(),l(21,"p"),a(22," This feature can be added to your class by using the trait "),l(23,"code"),a(24,"DevNet\\System\\TypeTrait"),c(),a(25,". You can then define the generic type parameters using the attribute "),l(26,"code"),a(27,"DevNet\\System\\Template"),c(),a(28," on the generic class to specify the type parameters, and pass the generic type arguments via the constructor injection using the method "),l(29,"code"),a(30,"setGenericArguments()"),c()(),l(31,"p"),a(32," The type parameter can be used as the type of a method parameter using the attribute "),l(33,"code"),a(34,"DevNet\\System\\Type"),c(),a(35,", where the concrete type would ordinarily be used, and the method "),l(36,"code"),a(37,"checkArgumentTypes()"),c(),a(38," is the first to be called inside the method needed for the type checking. "),c(),l(39,"p"),a(40," Here is an example explaining how to create a generic class using this feature: "),c(),l(41,"pre")(42,"code",4),a(43,"setGenericArguments($typeName);\n }\n\n private function add(#[Type('T')] $item): void\n {\n // Checking the the type of the arguments before using them.\n $this->checkArgumentTypes(func_get_args());\n $this->items[] = $item;\n }\n\n public function getIterator(): Enumerator\n {\n return new Enumerator($this->items);\n }\n}\n"),c()(),v(44,"br"),l(45,"h3"),a(46,"Generic type argument"),c(),l(47,"p"),a(48," The generic type argument is a type that is passed to the generic type parameter when an instance of the generic type is created. e.g. "),l(49,"code"),a(50,"TypeName"),c(),a(51," where "),l(52,"code"),a(53,"string"),c(),a(54," is a generic type argument. "),c(),l(55,"p"),a(56," The following example uses the generic "),l(57,"code"),a(58,"Collection"),c(),a(59," class created in the previous example to show how to specify the actual type argument at the time of instantiation to make it work only with that specified type. "),c(),l(60,"pre")(61,"code",4),a(62,"Id = 1;\n$employee->Name = 'Alice';\n\n// Create an instance of type Collection\n$employees = new Collection(Employee::class);\n\n// Now this method accepts only arguments of type Employee, other wise will throw a TypeException.\n$employees->add($employee);\n"),c()(),v(63,"br"),l(64,"h3"),a(65,"Checking generic type"),c(),l(66,"p"),a(67," You can use the method "),l(68,"code"),a(69,"checkArgumentTypes()"),c(),a(70," to check the type of any method parameter, including the parameterized type defined in the "),l(71,"code"),a(72,"DevNet\\System\\Type"),c(),a(73," attribute. "),c(),l(74,"p"),a(75," The example below represents a class "),l(76,"code"),a(77,"EmployeeProvider"),c(),a(78," that accepts only the injection of "),l(79,"code"),a(80,"Collection"),c(),a(81," through the constructor. "),c(),l(82,"pre")(83,"code",4),a(84,"\n public function __construct(#[Type(Collection::class, [Employee::class])] $employees)\n {\n $this->checkArgumentTypes(func_get_args());\n $this->employees = $employees;\n }\n\n public function get(int $id): ?Employee\n {\n foreach ($this->employees as $employee) {\n if ($employee->Id == $id) {\n return $employee;\n }\n }\n return null;\n }\n}\n"),c()(),v(85,"br"),l(86,"h3"),a(87,"Multiple type parameters"),c(),l(88,"p"),a(89," As mentioned earlier, the generic class can have multiple type parameters, like a pair of key-value type parameters, which are demonstrated in the following example: "),c(),l(90,"pre")(91,"code",4),a(92,"setGenericArguments($keyTypeName, $valueTypeName);\n }\n\n private function add(#[Type('K')] $key, #[Type('V')] $value): void\n {\n $this->checkArgumentTypes(func_get_args());\n $this->items[$key()] = $value();\n }\n ...\n}\n"),c()(),v(93,"br"),l(94,"h3"),a(95,"Built-in generic collections"),c(),l(96,"p"),a(97," For rapid development, the DevNet Core library provides two types of generic collections: "),c(),l(98,"ul")(99,"li")(100,"code"),a(101,"ArrayList"),c(),a(102," an indexed generic collection, where the parameter "),l(103,"code"),a(104,"T"),c(),a(105," is the type of the items in the collection."),c(),l(106,"li")(107,"code"),a(108,"Dictionary"),c(),a(109," a key-value pairs generic collection, where the parameter "),l(110,"code"),a(111,"K"),c(),a(112," is the type of the keys, and the parameter "),l(113,"code"),a(114,"V"),c(),a(115," is the type of the values in the collection."),c()(),l(116,"h5"),a(117,"ArrayList Example:"),c(),l(118,"pre")(119,"code",4),a(120,".\n$array = new ArrayList('string');\n$array[] = 'Bob';\n\n// This will throw a TypeException because the key must be of type integer.\n$array['1'] = 'Alice';\n\n// This will throw a TypeException because the value must be of type string.\n$array[1] = 50;\n"),c()(),v(121,"br"),l(122,"h5"),a(123,"Dictionary Example:"),c(),l(124,"pre")(125,"code",4),a(126,".\n$array = new Dictionary('string', 'float');\n$array['width'] = 90.5;\n\n// This will throw a TypeException because the value must be of type float.\n$array['height'] = '50';\n\n// This will throw a TypeException because the key must be of type string.\n$array[1] = 50;\n"),c()()(),l(127,"nav",5)(128,"ul",6)(129,"li",7)(130,"a",8),v(131,"i",9),a(132," Previous "),c()(),l(133,"li",7)(134,"a",10),a(135," Next "),v(136,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/asynchronous",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-asynchronous"]],decls:58,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"text-justify"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/generics",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/delegates",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Asynchronous Operations"),c(),v(8,"hr"),l(9,"p"),a(10," Asynchronous programming is a cooperative multitasking technique that allows the program to perform other operations while concurrently waiting for a long-running task to complete and then return the result when that task is complete. This technique is useful when working with an independent process that runs in the background or with I/O stream operations such as network access or database queries. "),c(),l(11,"h3"),a(12,"Coroutine Task"),c(),l(13,"p"),a(14," A coroutine task is an object that represents an asynchronous operation. It is used to perform work without blocking the main thread's execution by suspending and resuming the execution of the task's operations until the task completes and then returns a result on success or throws an exception on failure. "),c(),l(15,"pre")(16,"code",4),a(17,"wait();\nwhile (true) {\n if ($task->IsCompleted) {\n break;\n }\n}\n\ntry {\n // Getting the result when the task is completed.\n $result = $task->Result;\n} catch ($exception $e) {\n // Logging the error report if the task is failed.\n}\n"),c()(),v(18,"br"),l(19,"h3"),a(20,"Continuation Task"),c(),l(21,"p",5),a(22," A continuation task is an asynchronous task that is chained to another task by calling the "),l(23,"code"),a(24,"then()"),c(),a(25," method which will be executed when its antecedent task completes its execution. "),c(),l(26,"pre")(27,"code",4),a(28,"then(function($task1) {\n $data = $task1->Result;\n return json_decode($data);\n });\n\n return $task2;\n}\n\n$task = readJsonAsync('path/to/data.json');\n$data = $task->Result;\n"),c()(),v(29,"br"),l(30,"h3"),a(31,"Async/Await Pattern"),c(),l(32,"p"),a(33," The async/await pattern is a feature related to the coroutine concept, where the async function can use the await operator to suspend the asynchronous operation until that operation completes and then returns a result. This enables asynchronous non-blocking functions to be structured like normal synchronous functions in the enclosing scope without blocking the main thread during the execution of the async function, which also returns a task object that represents an asynchronous operation and provides a result when the task completes successfully. "),c(),l(34,"pre")(35,"code",4),a(36,"readAsync($file->Length));\n $data = json_decode($json);\n\n $file->close();\n return $data;\n});\n\n$task = $readJsonAsync('path/to/data.json');\n$data = $task->getAwaiter()->getResult();\n"),c()(),l(37,"p"),a(38," Here is the same example in an object-oriented way, where the async method must be prefixed with the "),l(39,"code"),a(40,"async_"),c(),a(41," keyword, and the class that has the async method must use the trait "),l(42,"code"),a(43,"DevNet\\System\\MethodTrait"),c(),a(44," to enable this feature. "),c(),l(45,"pre")(46,"code",4),a(47,"readAsync($file->Length));\n $data = json_decode($json);\n \n $file->close();\n return $data;\n });\n}\n\n$reader = new Reader();\n$task = $reader->readJsonAsync('path/to/data.json');\n$data = $task->getAwaiter()->getResult();\n"),c()()(),l(48,"nav",6)(49,"ul",7)(50,"li",8)(51,"a",9),v(52,"i",10),a(53," Previous "),c()(),l(54,"li",8)(55,"a",11),a(56," Next "),v(57,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system/delegates",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["system-delegates"]],decls:111,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/asynchronous",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Delegates & Events"),c(),v(8,"hr"),l(9,"p"),a(10," A delegate is a type that holds references to methods or functions with a particular signature of parameters and return type, and any method or function compatible with the delegate signature can be associated with the instance of that delegate and can be called by invoking the delegate instance. "),c(),l(11,"h3"),a(12,"Defining the delegate"),c(),l(13,"p"),a(14," A delegate is constructed by extending the abstract class Delegate, defining the method signature with an empty body, and having the same name as the name of the defined delegate class, as shown in the code example below. "),c(),l(15,"pre")(16,"code",4),a(17,"invoke($args);\n}\n"),c()(),v(42,"br"),l(43,"h3"),a(44,"Event"),c(),l(45,"p"),a(46," An event is a special type of delegate that enables an object to notify other objects when something of interest occurs, where the class that sends or raises the event is called the publisher (other names: sender, subject), and the classes that receive or handle the event are called subscribers (other names: receivers, observers, listeners, handlers). "),c(),l(47,"h5"),a(48,"Event Handler"),c(),l(49,"p"),a(50," DevNet provides an easy way to subscribe to the event by using "),l(51,"code"),a(52,"DevNet\\System\\Event\\EventHandler"),c(),a(53,", which has the following delegate signature "),l(54,"code"),a(55,"function(object $sender, EventArgs $args): void"),c()(),l(56,"ul")(57,"li")(58,"b"),a(59,"$sender:"),c(),a(60," ("),l(61,"code"),a(62,"object"),c(),a(63,") represents the publisher that raises the event, and the reason for passing the sender as a parameter to the handler, is because the handler can be subscribed to multiple publishers, and sometimes we need to know which publisher raises the event."),c(),l(64,"li")(65,"b"),a(66,"$args:"),c(),a(67," ("),l(68,"code"),a(69,"DevNet\\System\\Event\\EventArgs"),c(),a(70,") represents the event arguments to be handled by the handler."),c()(),l(71,"p"),a(72," The example below represents a "),l(73,"code"),a(74,"Button"),c(),a(75," class as a publisher with two events: The "),l(76,"code"),a(77,"click"),c(),a(78," and "),l(79,"code"),a(80,"keypress"),c(),a(81," events, which can be associated with event listeners. "),c(),l(82,"pre")(83,"code",4),a(84,"Title = $title;\n $this->click = new EventHandler();\n $this->keypress = new EventHandler();\n }\n\n public function addListener(string $event, callable $handler): void\n {\n switch($event) {\n case 'click':\n $this->click[] = $handler;\n break;\n case 'keypress':\n $this->keypress[] = $handler;\n break;\n default:\n throw \\Exception(\"The event {$event} does not exist!\");\n }\n }\n\n public function click(): void\n {\n $this->click->invoke($this, new EventArgs);\n }\n\n public function keypress(): void\n {\n $this->keypress->invoke($this, new EventArgs);\n }\n}\n"),c()(),l(85,"p"),a(86," And the following example represents a "),l(87,"code"),a(88,"Window"),c(),a(89," class as a subscriber that can subscribe handlers to the "),l(90,"code"),a(91,"Button"),c(),a(92," events. "),c(),l(93,"pre")(94,"code",4),a(95,"Title = $title;\n $this->MyButton = new Button(\"My button\");\n // Subscribe to the click event.\n $this->MyButton->addListener('click', [$this, 'onMyButtonClick']);\n }\n\n public function onMyButtonClick(object $sender, EventArgs $event): void\n {\n print(\"{$sender->Title} was clicked\");\n }\n}\n"),c()(),l(96,"p"),a(97," And here is a working example of triggering the click event of the Window's button. "),c(),l(98,"pre")(99,"code",4),a(100,'MyButton->click();\n'),c()()(),l(101,"nav",5)(102,"ul",6)(103,"li",7)(104,"a",8),v(105,"i",9),a(106," Previous "),c()(),l(107,"li",7)(108,"a",10),a(109," Next "),v(110,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/system",redirectTo:"docs/system/overview",pathMatch:"full"}];let t4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(e4),en]})}return e})(),n4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,t4,Xo]})}return e})();const r4=[{path:"docs/console/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["console-start"]],decls:78,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/setup/deployment",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/output",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Application"),c(),v(8,"hr"),l(9,"p"),a(10," This chapter shows how to create and run a DevNet console application. "),c(),l(11,"h3"),a(12,"Create Console Project"),c(),l(13,"p"),a(14," To create a DevNet console project, enter the command below in the Terminal, where the argument "),l(15,"code"),a(16,"project-name"),c(),a(17," is any name you give to your project: "),c(),l(18,"pre")(19,"code",4),a(20,"devnet new console --output project-name"),c()(),l(21,"p"),a(22," Or, using the composer command-line: "),c(),l(23,"pre")(24,"code",4),a(25,"composer create-project devnet/console project-name"),c()(),v(26,"br"),l(27,"h4"),a(28,"Project Structure"),c(),l(29,"p"),a(30," The DevNet console project has the following folder structure: "),c(),l(31,"pre")(32,"code",4),a(33,"console-project/\n\u251c\u2500\u2500 bin/\n| \u251c\u2500\u2500 apphost\n| \u251c\u2500\u2500 run.bat\n| \u2514\u2500\u2500 run\n\u251c\u2500\u2500 src/\n| \u2514\u2500\u2500 Program.php\n\u251c\u2500\u2500 vendor/\n\u2514\u2500\u2500 devnet.proj"),c()(),v(34,"br"),l(35,"h4"),a(36,"Entry Point"),c(),l(37,"p"),a(38," By default, the entry point is the static method "),l(39,"code"),a(40,"Application\\Program::main(array $args)"),c(),a(41,", but you can change that in the project file "),l(42,"code"),a(43,"devnet.proj"),c()(),l(44,"pre")(45,"code",5),a(46,'{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["console-output"]],decls:211,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/input",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Output"),c(),v(8,"hr"),l(9,"p"),a(10," Console output is the text that is printed to the console screen or terminal window when a program is run, by writing data to the standard output stream. "),c(),l(11,"h3"),a(12,"Write to the console"),c(),l(13,"p"),a(14," To write data to the standard output stream, the following static methods are used: "),c(),l(15,"ul")(16,"li")(17,"code"),a(18,"DevNet\\System\\IO\\Console::write(string, $format, array|string ...$args)"),c()(),l(19,"li")(20,"code"),a(21,"DevNet\\System\\IO\\Console::writeLine(string, $format, array|string ...$args)"),c()()(),l(22,"p"),a(23," Both methods are similar, except that "),l(24,"code"),a(25,"Console::writeLine()"),c(),a(26," prints data along with a new line at the end of the output, while the "),l(27,"code"),a(28,"Console::write()"),c(),a(29," prints data without adding a new line, as shown in the following example. "),c(),l(30,"pre")(31,"code",4),a(32,'value, $color->name);\n }\n\n Console::writeLine();\n Console::$ForegroundColor = ConsoleColor::Black;\n Console::$BackgroundColor = ConsoleColor::White;\n Console::writeLine("List of the background colors:");\n Console::resetColor();\n\n foreach (ConsoleColor::cases() as $color) {\n Console::$BackgroundColor = $color;\n Console::writeLine("The background color {0} is {1}", $color->value, $color->name);\n }\n\n Console::resetColor();\n }\n}\n'),c()(),v(105,"br"),l(106,"h4"),a(107,"Colors"),c(),l(108,"p"),a(109," The enumeration "),l(110,"code"),a(111,"DevNet\\System\\IO\\ConsoleColor"),c(),a(112,", that defines the foreground and background colors for the console window, has the following fields: "),c(),l(113,"table",6)(114,"thead")(115,"tr")(116,"th",7),a(117,"Name"),c(),l(118,"th",7),a(119,"Code"),c()()(),l(120,"tbody")(121,"tr")(122,"td"),a(123,"Black"),c(),l(124,"td"),a(125,"0"),c()(),l(126,"tr")(127,"td"),a(128,"DarkGrey"),c(),l(129,"td"),a(130,"1"),c()(),l(131,"tr")(132,"td"),a(133,"DarkRed"),c(),l(134,"td"),a(135,"2"),c()(),l(136,"tr")(137,"td"),a(138,"DarkMagenta"),c(),l(139,"td"),a(140,"3"),c()(),l(141,"tr")(142,"td"),a(143,"DarkBlue"),c(),l(144,"td"),a(145,"4"),c()(),l(146,"tr")(147,"td"),a(148,"DarkCyan"),c(),l(149,"td"),a(150,"5"),c()(),l(151,"tr")(152,"td"),a(153,"DarkGreen"),c(),l(154,"td"),a(155,"6"),c()(),l(156,"tr")(157,"td"),a(158,"DarkYellow"),c(),l(159,"td"),a(160,"7"),c()(),l(161,"tr")(162,"td"),a(163,"Gray"),c(),l(164,"td"),a(165,"8"),c()(),l(166,"tr")(167,"td"),a(168,"Red"),c(),l(169,"td"),a(170,"9"),c()(),l(171,"tr")(172,"td"),a(173,"Magenta"),c(),l(174,"td"),a(175,"10"),c()(),l(176,"tr")(177,"td"),a(178,"Blue"),c(),l(179,"td"),a(180,"11"),c()(),l(181,"tr")(182,"td"),a(183,"Cyan"),c(),l(184,"td"),a(185,"12"),c()(),l(186,"tr")(187,"td"),a(188,"Green"),c(),l(189,"td"),a(190,"13"),c()(),l(191,"tr")(192,"td"),a(193,"Yellow"),c(),l(194,"td"),a(195,"14"),c()(),l(196,"tr")(197,"td"),a(198,"White"),c(),l(199,"td"),a(200,"15"),c()()()()(),l(201,"nav",8)(202,"ul",9)(203,"li",10)(204,"a",11),v(205,"i",12),a(206," Previous "),c()(),l(207,"li",10)(208,"a",13),a(209," Next "),v(210,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/console/input",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["console-input"]],decls:66,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/output",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/console/command",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Console Input"),c(),v(8,"hr"),l(9,"p"),a(10," Console input is the input data that is entered by the user through the console window, to interact with system programs or other console applications. "),c(),l(11,"h3"),a(12,"User input"),c(),l(13,"p"),a(14," The static method "),l(15,"code"),a(16,"DevNet\\System\\IO\\Console::readLine()"),c(),a(17,", is used to read the user input data from the standard input stream. "),c(),l(18,"p"),a(19," In the following example, the program prompts the user to enter his name, then reads the user input data and prints it in a greeting message. "),c(),l(20,"pre")(21,"code",4),a(22,'{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["console-command"]],decls:147,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"table"],["scope","col"],[1,"language-php"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/console/input",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/system/overview",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Command-Line Dispatcher"),c(),v(8,"hr"),l(9,"p"),a(10," The command-line dispatcher is a component used for building command-line applications, it provides a way to organize functionality into logical groups by creating a hierarchy of commands that can be navigated using subcommands, options, and arguments to execute particular actions, like providing the help information for the application. "),c(),l(11,"h3"),a(12,"Command-line syntax"),c(),l(13,"p"),a(14," The command-line parser will parse the input into tokens, which are strings delimited by spaces interpreted as commands, options, and arguments. "),c(),l(15,"p"),a(16," For example, consider the following command line: "),c(),l(17,"pre")(18,"code",4),a(19,"devnet add class --output MyClass"),c()(),l(20,"p"),a(21," The following table shows how the command-line parser interprets the preceding example: "),c(),l(22,"table",5)(23,"thead")(24,"tr")(25,"th",6),a(26,"Token"),c(),l(27,"th",6),a(28,"Description"),c()()(),l(29,"tbody")(30,"tr")(31,"td"),a(32,"devnet"),c(),l(33,"td"),a(34,"Root command"),c()(),l(35,"tr")(36,"td"),a(37,"add"),c(),l(38,"td"),a(39,"Child command"),c()(),l(40,"tr")(41,"td"),a(42,"class"),c(),l(43,"td"),a(44,"Argument for "),l(45,"b"),a(46,"add"),c(),a(47," command"),c()(),l(48,"tr")(49,"td"),a(50,"--output"),c(),l(51,"td"),a(52,"Option for "),l(53,"b"),a(54,"add"),c(),a(55," command"),c()(),l(56,"tr")(57,"td"),a(58,"MyClass"),c(),l(59,"td"),a(60,"Argument for "),l(61,"b"),a(62,"--output"),c(),a(63," option"),c()()()(),l(64,"h4"),a(65,"Root command"),c(),l(66,"p"),a(67," The root command is the top-level command that is executed when the application is run, is the one that specifies the name of the app's executable, and can accept parameters, such as subcommands, options, and arguments. "),c(),l(68,"h4"),a(69,"Child commands"),c(),l(70,"p"),a(71," The child commands, also known as subcommands or verbs, are commands nested within another, used to specify a particular action, and can accept additional subcommands as parameters, as well as options and arguments. "),c(),l(72,"h4"),a(73,"Options"),c(),l(74,"p"),a(75," Options are named parameters passed to a command optionally to modify its behavior, and they can accept an argument or be just flags without it. "),c(),l(76,"h4"),a(77,"Arguments"),c(),l(78,"p"),a(79," Arguments are values passed to a command or an option to provide additional information. "),c(),v(80,"br"),l(81,"h3"),a(82,"Define commands"),c(),l(83,"p"),a(84," You can define a root command, with some options and arguments, by creating an instance of the class "),l(85,"code"),a(86,"DevNet\\System\\Command\\CommandLine"),c(),a(87,", then you can define subcommands in the same way and add them to it. "),c(),l(88,"p"),a(89," The following code example is a command line application that can display the time according to the specified timezone. "),c(),l(90,"pre")(91,"code",7),a(92,"addOption('--version', 'Display the version information.', '-v');\n\n $rootCommand->setHandler(function (object $sender, CommandEventArgs $args): void {\n $version = $args->get('--version');\n if ($version) {\n Console::writeLine(\"watch command-line: v1.0.0\");\n return;\n }\n\n Console::writeLine(\"Try 'watch --help' to get information about the command's usage.\");\n });\n\n // Defines the child command.\n $subcommand = new CommandLine('time', 'Display the current time');\n $subcommand->addArgument('timezone', 'Define the time zone');\n\n $subcommand->setHandler(function (object $sender, CommandEventArgs $args): void {\n $datetime = new DateTime('now');\n $timezone = $args->get('timezone');\n if ($timezone) {\n $datetime->setTimezone(new DateTimeZone($timezone->Value));\n }\n\n Console::writeLine($datetime->format('H:i:s'));\n }\n\n // Adds the child command.\n $rootCommand->addCommand($subcommand);\n\n // Parsing the input, then invoking the command.\n $rootCommand->invoke($args);\n }\n}\n"),c()(),l(93,"blockquote",8)(94,"b"),a(95,"Note:"),c(),a(96," You can run your command-line application by executing the bin file of your application "),l(97,"code"),a(98,"./bin/run"),c()(),l(99,"p"),a(100," In this example, we have renamed the bin files "),l(101,"code"),a(102,"./bin/run"),c(),a(103," and "),l(104,"code"),a(105,"./bin/run.bat"),c(),a(106," to "),l(107,"code"),a(108,"./bin/watch"),c(),a(109," and "),l(110,"code"),a(111,"./bin/watch.bat"),c(),a(112," to match the name of the root command. "),c(),l(113,"p"),a(114," Now you can execute the command with a given time zone argument to get the current time of that zone. "),c(),l(115,"pre")(116,"code",4),a(117,"./bin/watch time America/Toronto"),c()(),l(118,"h5"),a(119,"Output"),c(),l(120,"pre")(121,"code",4),a(122,"19:29:01"),c()(),v(123,"br"),l(124,"p"),a(125," Or execute the command with the option "),l(126,"code"),a(127,"--version"),c(),a(128," to get the version information. "),c(),l(129,"pre")(130,"code",4),a(131,"./bin/watch --version"),c()(),l(132,"h5"),a(133,"Output"),c(),l(134,"pre")(135,"code",4),a(136,"watch command-line: v1.0.0"),c()()(),l(137,"nav",9)(138,"ul",10)(139,"li",11)(140,"a",12),v(141,"i",13),a(142," Previous "),c()(),l(143,"li",11)(144,"a",14),a(145," Next "),v(146,"i",15),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/console",redirectTo:"docs/console/start",pathMatch:"full"}];let o4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(r4),en]})}return e})(),i4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,o4,Xo]})}return e})();const s4=[{path:"docs/web/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-start"]],decls:121,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],[1,"alert","alert-info"],["href","http://localhost:8000"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/system/delegates",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/http",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Web Application"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet web application is based on Middleware architecture with Action-Domain-Responder architectural pattern, which is suitable for creating a minimal web APIs, but it supports also Model-View-Controller architectural pattern which is available as an action dispatcher with a template engine that can be integrated into the services and invoked in the middleware endpoint. "),c(),l(11,"h3"),a(12,"Create a web project"),c(),l(13,"p"),a(14," To create a DevNet web project, enter the command below in the Terminal, where the argument "),l(15,"code"),a(16,"project-name"),c(),a(17," is any name you give to your web project: "),c(),l(18,"pre")(19,"code",4),a(20,"devnet new web --output project-name"),c()(),l(21,"p"),a(22," Or, using the composer command-line: "),c(),l(23,"pre")(24,"code",4),a(25,"composer create-project devnet/web project-name"),c()(),l(26,"p"),a(27," You can also create a DevNet web project from MVC template: "),c(),l(28,"pre")(29,"code",4),a(30,"composer create-project devnet/mvc project-name"),c()(),v(31,"br"),l(32,"h4"),a(33,"Project Structure"),c(),l(34,"p"),a(35," The DevNet web project has the following folder structure: "),c(),l(36,"pre")(37,"code",4),a(38,"web-project/\n\u251c\u2500\u2500 bin/\n| \u251c\u2500\u2500 apphost\n| \u251c\u2500\u2500 run.bat\n| \u2514\u2500\u2500 run\n\u251c\u2500\u2500 src/\n| \u2514\u2500\u2500 Program.php\n\u251c\u2500\u2500 webroot/\n| \u251c\u2500\u2500 css/\n| \u251c\u2500\u2500 js/\n| \u251c\u2500\u2500 lib/\n| \u251c\u2500\u2500 .htaccess\n| \u251c\u2500\u2500 index.php\n| \u2514\u2500\u2500 web.config\n\u251c\u2500\u2500 vendor/\n\u251c\u2500\u2500 devnet.proj\n\u2514\u2500\u2500 settings.json"),c()(),v(39,"br"),l(40,"h4"),a(41,"Entry Point"),c(),l(42,"p"),a(43," Like the console project, the entry point by default is the static method "),l(44,"code"),a(45,"Application\\Program::main(array $args)"),c(),a(46,", and you can change that in the project file: "),l(47,"samp"),a(48,'"devnet.proj"'),c()(),l(49,"p"),a(50," The entry point method calls the static method "),l(51,"code"),a(52,"WebHost::createDefaultBuilder(array $args)"),c(),a(53," to create a "),l(54,"code"),a(55,"WebHostBuilder"),c(),a(56," instance which can configure services through the method "),l(57,"code"),a(58,"register()"),c(),a(59,", and builds a "),l(60,"code"),a(61,"WebHost"),c(),a(62," instance which calls the "),l(63,"code"),a(64,"start()"),c(),a(65," method to configure the app's request pipeline, then runs the application as shown in the code below: "),c(),l(66,"pre")(67,"code",5),a(68,'register(function ($services) {\n // Services\n });\n\n $host = $builder->build();\n $host->start(function ($app) {\n // Middlewares\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n // Routes\n $routes->mapGet("/", fn () => "Hello World!");\n });\n });\n }\n}'),c()(),l(69,"blockquote",6)(70,"b"),a(71,"Note:"),c(),a(72," Working with services, middlewares and routes will be discussed in details in the upcoming sections."),c(),v(73,"br"),l(74,"h3"),a(75,"Run the application"),c(),l(76,"p"),a(77," To run the web application, run the following command in the Terminal : "),c(),l(78,"pre")(79,"code",4),a(80,"devnet run"),c()(),l(81,"p"),a(82," This will start the development web server at "),l(83,"a",7),a(84,"http://localhost:8000"),c(),a(85," in "),l(86,"samp"),a(87,"/webroot"),c(),a(88," folder, and optionally you can override this default server settings by adding arguments to the following parameters "),l(89,"code"),a(90,"--host"),c(),a(91,", "),l(92,"code"),a(93,"--port"),c(),a(94," and "),l(95,"code"),a(96,"--root"),c(),a(97," to the "),l(98,"code"),a(99,"run"),c(),a(100," command in the terminal like the following example: "),c(),l(101,"pre")(102,"code",4),a(103,"devnet run --host 127.0.0.1 --port 8888 --root webroot"),c()(),l(104,"blockquote",6)(105,"b"),a(106,"Note:"),c(),a(107," In Visual Studio Code with the PHP Xdebug extension, you can press the "),l(108,"b"),a(109,"F5"),c(),a(110," key button to launch the application in debug mode."),c()(),l(111,"nav",8)(112,"ul",9)(113,"li",10)(114,"a",11),v(115,"i",12),a(116," Previous "),c()(),l(117,"li",10)(118,"a",13),a(119," Next "),v(120,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/http",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-http"]],decls:157,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"text-justify"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/middleware",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"HTTP Client-Server "),c(),v(8,"hr"),l(9,"h3"),a(10,"Http Server"),c(),l(11,"p",4),a(12," DevNet provides the HttpContext class which encapsulates all HTTP information about the HTTP server request received from the client, and HTTP server response that will be sent to the client. "),c(),l(13,"p",4),a(14," HttpContext already injected in the your application, and you can access it through middlewares and request handler endpoints, but if you want to use HttpContext as a third-party component to another project than DevNet, you can create an instance of HttpContext using "),l(15,"code"),a(16,"HttpContextFactory"),c(),a(17," it will create a default instance with global server variables. "),c(),l(18,"pre")(19,"code",5),a(20,"Request->Method;"),c()(),v(37,"br"),l(38,"h6"),a(39,"The Request URL"),c(),l(40,"pre")(41,"code",5),a(42,"$scheme = $httpContext->Request->Url->Scheme;\n$host = $httpContext->Request->Url->Host->Name;\n$port = $httpContext->Request->Url->Host->Port;\n$path = $httpContext->Request->Url->Path;"),c()(),v(43,"br"),l(44,"h6"),a(45,"The Request Query"),c(),l(46,"pre")(47,"code",5),a(48,"$query = $httpContext->Request->Url->Query;\n$value = $query->getValue('name');"),c()(),l(49,"h6"),a(50,"The Request Form"),c(),l(51,"pre")(52,"code",5),a(53,"$form = $httpContext->Request->Form;\n$value = $form->getValue('name');"),c()(),v(54,"br"),l(55,"h6"),a(56,"The Request From Files"),c(),l(57,"pre")(58,"code",5),a(59,"$files = $httpContext->Request->Form->Files;\n$file = $files->getFile('name');\n \n$file->copyTo('path');"),c()(),v(60,"br"),l(61,"h6"),a(62,"The Request Headers"),c(),l(63,"pre")(64,"code",5),a(65,"$headers = $httpContext->Request->Headers;\n$values = $headers->getValues('name');\n$value = $values[0];"),c()(),v(66,"br"),l(67,"h6"),a(68,"The Request Cookies"),c(),l(69,"pre")(70,"code",5),a(71,"$cookies = $httpContext->Request->Cookies;\n$value = $cookies->getValue('name');"),c()(),v(72,"br"),l(73,"h4"),a(74,"Http Response"),c(),l(75,"p",4),a(76," You can access the "),l(77,"code"),a(78,"HttpResponse"),c(),a(79," property from the "),l(80,"code"),a(81,"HttpContext"),c(),a(82," and set the HTTP response data as shown below. "),c(),l(83,"h6"),a(84,"Adding Response Header"),c(),l(85,"pre")(86,"code",5),a(87,"$httpContext->Response->Headers->add('name', 'value', replace: true);"),c()(),v(88,"br"),l(89,"h6"),a(90,"Adding Response Cookie"),c(),l(91,"pre")(92,"code",5),a(93,"$options = new \\DevNet\\Http\\Message\\CookieOptions(expires: new DateTime('7 days'), path: '/');\n$httpContext->Response->Cookies->add('name', 'value', $options);"),c()(),v(94,"br"),l(95,"h6"),a(96,"Writing Response Content"),c(),l(97,"pre")(98,"code",5),a(99,"$httpContext->Response->Body->write('content');"),c()(),v(100,"br"),l(101,"h6"),a(102,"Writing Response Content Asynchronously"),c(),l(103,"pre")(104,"code",5),a(105,"$task = $httpContext->Response->writeAsync('content');\n$task = $httpContext->Response->writeJsonAsync($object);"),c()(),v(106,"br"),l(107,"h6"),a(108,"Send Redirect Response"),c(),l(109,"pre")(110,"code",5),a(111,"$httpContext->Response->redirect('path');"),c()(),v(112,"br"),l(113,"h6"),a(114,"Set Response Status Code"),c(),l(115,"pre")(116,"code",5),a(117,"$httpContext->Response->setStatusCode(403);"),c()(),v(118,"br"),l(119,"h4"),a(120,"Http Client"),c(),l(121,"p",4),a(122," DevNet Provides a "),l(123,"code"),a(124,"HttpClient"),c(),a(125," class for sending HTTP requests to a web API server and receiving back HTTP responses. "),c(),l(126,"pre")(127,"code",5),a(128,"requestAsync('GET', 'www.example.com');\n $response = await($task);\n $content = null;\n while(!$response->Body->EndOfStream) {\n $content .= await($response->Body->readAsync(1024));\n }\n return $content;\n});\n\n$task = $action();"),c()(),v(129,"br"),l(130,"h6"),a(131,"Send request content"),c(),l(132,"pre")(133,"code",5),a(134,"$form = \"Username=john_doe&Password=123456\";\n$content = new HttpRequestContent('application/x-www-form-urlencoded', $form);\n$task = $client->requestAsync('POST', 'www.example.com', $content);"),c()(),v(135,"br"),l(136,"h6"),a(137,"Send HTTP method request using short calls"),c(),l(138,"pre")(139,"code",5),a(140,"$task = $client->getRequestAsync('www.example.com', $requestContent);\n$task = $client->postRequestAsync('www.example.com', $requestContent);\n$task = $client->putRequestAsync('www.example.com', $requestContent);\n$task = $client->deleteRequestAsync('www.example.com', $requestContent);"),c()(),v(141,"br"),l(142,"h6"),a(143,"Send get request that returns response content"),c(),l(144,"pre")(145,"code",5),a(146,"$task = $client->getStringAsync('www.example.com');"),c()()(),l(147,"nav",6)(148,"ul",7)(149,"li",8)(150,"a",9),v(151,"i",10),a(152," Previous "),c()(),l(153,"li",8)(154,"a",11),a(155," Next "),v(156,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/middleware",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-middleware"]],decls:92,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/middleware.svg","alt","Web app home page","width","100%","height","auto"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/core/http",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/routing",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Middleware"),c(),v(8,"hr"),l(9,"p"),a(10," Middlewares are software components that are chained into the application pipeline to handle HTTP requests and responses, Each middleware component in the request pipeline is responsible for invoking the next component called Request Delegate, till reaching the endpoint of the application, and can perform work before and after the next component in the pipeline or short-circuiting the chain to prevent the next middlewares from processing the request. "),c(),l(11,"p"),a(12," The following diagram represents the DevNet request pipeline, which consists of a sequence of request delegates, called one after the other. "),c(),v(13,"br")(14,"img",4)(15,"br")(16,"br")(17,"br"),l(18,"p"),a(19," The following code represents an example of a middleware class called "),l(20,"code"),a(21,"RedirectMiddleware"),c(),a(22,", it redirects the old URL requested that has been changed permanently to the new URL before the request gets to the Router middleware. "),c(),l(23,"pre")(24,"code",5),a(25,'Request->Uri->Path == "/old/path") {\n $context->Response->setStatusCode(301);\n $context->Response->redirect("/new/path");\n return;\n }\n // Await next request delegate to chain the pipeline to the next middleware or endpoint.\n await($next($context));\n // Logging or other works can be done here after calling the next request delegate.\n }\n}'),c()(),v(26,"br"),l(27,"h3"),a(28,"Registering Middlewares"),c(),l(29,"p"),a(30," Inside the method "),l(31,"code"),a(32,"WebHost::start(Closure $configure)"),c(),a(33,", middlewares can be registered to the pipeline as a class that implements the interface "),l(34,"code"),a(35,"DevNet\\Http\\Middleware\\IMiddleware"),c(),a(36," or as an in-line middleware defined by an anonymous async function, with the help of the following methods: "),c(),l(37,"ul")(38,"li")(39,"code"),a(40,"ApplicationBuilder::use(callable $middleware)"),c()(),l(41,"li")(42,"code"),a(43,"ApplicationBuilderExtensions::useMiddleware(string $middleware, ...$args)"),c()()(),l(44,"pre")(45,"code",5),a(46,"start(function ($app) {\n $app->UseExceptionHandler();\n\n // Using middleware class\n $app->useMiddleware(RedirectMiddleware::class);\n $app->useRouter();\n\n // Using in-line middleware\n $app->use(async(function($context, $next) { //;\n // Some works can be done here before calling the next request delegate.\n await($next($context));\n // Other works can be done here after calling the next request delegate.\n }));\n\n // Other middlewares can be used here.\n\n $app->useEndpoint(function($routes) {\n // Routes\n });\n});"),c()(),v(47,"br"),l(48,"h3"),a(49,"Built-in middlewares"),c(),l(50,"table",6)(51,"thead")(52,"tr")(53,"th",7),a(54,"Method"),c(),l(55,"th",7),a(56,"Description"),c()()(),l(57,"tbody")(58,"tr")(59,"td")(60,"code"),a(61,"ApplicationBuilder::useExceptionHandler()"),c()(),l(62,"td"),a(63,"add ExceptionHandler middleware to the pipeline"),c()(),l(64,"tr")(65,"td")(66,"code"),a(67,"ApplicationBuilder::useRouter()"),c()(),l(68,"td"),a(69,"add Router matcher middleware to the pipeline"),c()(),l(70,"tr")(71,"td")(72,"code"),a(73,"ApplicationBuilder::useAuthentication()"),c()(),l(74,"td"),a(75,"add Authentication middleware to the pipeline"),c()(),l(76,"tr")(77,"td")(78,"code"),a(79,"ApplicationBuilder::useEndpoint()"),c()(),l(80,"td"),a(81,"add Endpoint dispatcher middleware to the pipeline"),c()()()()(),l(82,"nav",8)(83,"ul",9)(84,"li",10)(85,"a",11),v(86,"i",12),a(87," Previous "),c()(),l(88,"li",10)(89,"a",13),a(90," Next "),v(91,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/routing",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-routing"]],decls:200,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col",1,"col-md-6"],["scope","col",1,"col-md-4"],["scope","col",1,"col-3"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/middleware",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/controller",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Routing"),c(),v(8,"hr"),l(9,"p"),a(10," The router is a component responsible for matching incoming HTTP requests and dispatching those requests to the app's executable endpoints, which are executable actions responsible for request-handling, defined and configured in the application builder, and selected and executed when request URL matches a defined URL Pattern called Route Template. "),c(),l(11,"p"),a(12," The endpoint matching process can also filter HTTP requests by allowing restraint HTTP Verbs and can extract values from the request's URL and provide those values for request processing."),v(13,"br"),a(14," Routing is also able to generate URLs that map to endpoints. "),c(),l(15,"h3"),a(16,"Routing basics"),c(),l(17,"p"),a(18," Router is registered in the middleware pipeline in the "),l(19,"code"),a(20,"start()"),c(),a(21," method of "),l(22,"code"),a(23,"WebHost"),c(),a(24," class."),v(25,"br"),a(26," by using a pair of middleware, defined by "),l(27,"code"),a(28,"useRouter()"),c(),a(29," and "),l(30,"code"),a(31,"useEndpoint(RouteCollection $routes)"),c(),a(32," methods: "),c(),l(33,"ul")(34,"li")(35,"b"),a(36,"UseRouter"),c(),a(37," adds route matching middleware to the middleware pipeline, and this middleware looks at the set of endpoints defined in the App and selects the best match based on the request. "),c(),l(38,"li")(39,"b"),a(40,"UseEndpoint"),c(),a(41," adds endpoint execution middleware to the middleware pipeline, which runs the request delegate associated with the selected endpoint. "),c()(),l(42,"p"),a(43," The following code below shows a basic routing example, write "),l(44,"code"),a(45,'"Hello World!"'),c(),a(46," to the HTTP response when an HTTP GET request is sent to the root URL "),l(47,"code"),a(48,'"/"'),c(),a(49,", which is By default is "),l(50,"code"),a(51,"https://localhost:8000/"),c(),v(52,"br"),a(53," else If the request doesn't match any route, an HTTP 404 page not found is returned. "),c(),l(54,"pre")(55,"code",4),a(56,'start(function ($app) {\n $app->UseExceptionHandler();\n $app->useRouter();\n // Additional middlewares here\n $app->useEndpoint(function ($routes) {\n // Routes\n $routes->mapGet("/", fn () => "Hello World!");\n });\n});'),c()(),l(57,"p"),a(58," The following table shows the available routing methods and their descriptions. "),c(),l(59,"table",5)(60,"thead")(61,"tr")(62,"th",6),a(63,"Methods"),c(),l(64,"th",7),a(65,"Description"),c()()(),l(66,"tbody")(67,"tr")(68,"td")(69,"code"),a(70,"mapGet(string $pattern callable $handler)"),c()(),l(71,"td"),a(72,"Route that matches HTTP GET request for the specified path."),c()(),l(73,"tr")(74,"td")(75,"code"),a(76,"mapPost(string $pattern, callable $handler)"),c()(),l(77,"td"),a(78,"Route that matches HTTP POST request for the specified path."),c()(),l(79,"tr")(80,"td")(81,"code"),a(82,"mapPut(string $pattern, callable $handler)"),c()(),l(83,"td"),a(84,"Route that matches HTTP PUT request for the specified path."),c()(),l(85,"tr")(86,"td")(87,"code"),a(88,"mapDelete(string $pattern, callable $handler)"),c()(),l(89,"td"),a(90,"Route that matches HTTP DELETE request for the specified path."),c()(),l(91,"tr")(92,"td")(93,"code"),a(94,"mapPatch(string $pattern, callable $handler)"),c()(),l(95,"td"),a(96,"Route that matches HTTP PATCH request for the specified path."),c()(),l(97,"tr")(98,"td")(99,"code"),a(100,"mapRoute(string $pattern, callable $handler, ?string $verb = null)"),c()(),l(101,"td"),a(102,"Route that matches HTTP request for the specified path and HTTP method, or any HTTP method if it's not specified."),c()()()(),v(103,"br"),l(104,"h3"),a(105,"Async Handler"),c(),l(106,"p"),a(107," DevNet route can accept the Request Handler as an async function to handle the HTTP request asynchronously, like in the following example: "),c(),l(108,"pre")(109,"code",4),a(110,"useEndpoint(function($routes) {\n $routes->mapGet(\"/\", async(function(HttpContext $context) {\n $client = new HttpClient();\n $content = await($client->getStringAsync('www.example.com'));\n await($context->Response->writeAsync($content));\n }));\n});"),c()(),v(111,"br"),l(112,"h3"),a(113,"Route Template"),c(),l(114,"p"),a(115," A route template is a string pattern composed of segments, separated by a slash "),l(116,"code"),a(117,'"/"'),c(),a(118," used to define how the endpoint matches the URL Path, by splitting the URL path into segments and matching each segment with the route pattern segment in the same corresponding order. "),c(),l(119,"p"),a(120," The segment pattern can be literal or parameter enclosed in curly brackets "),l(121,"code"),a(122,'"{ }"'),c(),a(123," to hold a potential value of its corresponding matched URL segment, and this parameter can be mandatory or optionally by adding interrogation point "),l(124,"code"),a(125,'"?"'),c(),a(126," or it can have a default value using the equal sign "),l(127,"code"),a(128,'"="'),c(),a(129," after the route parameter name followed by a value. "),c(),l(130,"p"),a(131," The following code example shows a simple get route with a callback request handler, that retrieves the value of the parameter "),l(132,"code"),a(133,"{id}"),c(),a(134," from "),l(135,"code"),a(136,"HttpContext"),c(),a(137," to look for a product in the repository and then returns the data as a JSON response. "),c(),l(138,"pre")(139,"code",4),a(140,'...\n$app->useEndpoint(function($routes) {\n $routes->mapGet("/api/products/{id?}", function(HttpContext $context) {\n $id = $context->Request->RouteValues["id"];\n $product = ProductRepository::find($id);\n return $context->Response->writeJsonAsync($product);\n });\n});'),c()(),l(141,"p"),a(142," The following table demonstrates a list of route templates examples: "),c(),l(143,"table",5)(144,"thead")(145,"tr")(146,"th",8),a(147,"Route template"),c(),l(148,"th",8),a(149,"Matching URL example"),c()()(),l(150,"tbody")(151,"tr")(152,"td"),a(153,"/contact"),c(),l(154,"td"),a(155,"/contact"),c()(),l(156,"tr")(157,"td"),a(158,"/{language}/shop"),c(),l(159,"td"),a(160,"/en/shop"),c()(),l(161,"tr")(162,"td"),a(163,"/posts/{title?}"),c(),l(164,"td"),a(165,"/posts or /posts/my-post"),c()(),l(166,"tr")(167,"td"),a(168,"/{page=home}"),c(),l(169,"td"),a(170,"/ or /about"),c()()()(),l(171,"blockquote",9)(172,"b"),a(173,"Important:"),c(),a(174," The order of the routes is important, if a route matches the request URL, it will not check the next route, so make sure to not put a route with a greedy pattern at the top, because it will catch all the URLs. "),c(),v(175,"br"),l(176,"h3"),a(177,"Attribute Routing"),c(),l(178,"p"),a(179," Attribute routing is a technique that allows routes to be defined directly on the controller actions by using attributes that specify the URL patterns and HTTP methods that match the HTTP requests, giving more control and flexibility over the routing behavior. "),c(),l(180,"p"),a(181," The following code example shows how to map routes to MVC controllers. "),c(),l(182,"pre")(183,"code",4),a(184,"...\n$app->useEndpoint(function($routes) {\n $routes->mapControllers();\n});"),c()(),l(185,"p"),a(186," Then, you can use attributes to decorate your controller's action methods with their associated routes. "),c(),l(187,"pre")(188,"code",4),a(189,"view();\n }\n\n // Accept only the HTTP method GET.\n #[Route(path: '/contact', method: 'GET')]\n public function contact(): IActionResult\n {\n return $this->view();\n }\n\n // Accept only the HTTP method POST.\n #[Route(path: '/contact/submit', method: 'POST')]\n public function submit(string $subject, string $message): IActionResult\n {\n mail(\"email@example.com\", $subject, $message);\n return $this->statusCode(200);\n }\n}"),c()()(),l(190,"nav",10)(191,"ul",11)(192,"li",12)(193,"a",13),v(194,"i",14),a(195," Previous "),c()(),l(196,"li",12)(197,"a",15),a(198," Next "),v(199,"i",16),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/controller",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-controller"]],decls:179,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/mvc.svg","alt","Web app home page","width","80%","height","auto"],[1,"language-shell"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/routing",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/view",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Controller"),c(),v(8,"hr"),l(9,"p"),a(10," A controller is one of the important components of the architectural pattern MVC (Model View Controller) which helps to achieve the separation of concerns, it is the brain of the application that controls how the data is displayed, where each browser request is mapped to a particular method of a particular controller class called Action, and this action will handle the HTTP request and return data as HTTP response via the view engine. "),c(),v(11,"img",4)(12,"br")(13,"br")(14,"br"),l(15,"h3"),a(16,"Adding Controller Class"),c(),l(17,"p"),a(18," Controller class can be created manually or by using the devnet command-line: "),c(),l(19,"pre")(20,"code",5),a(21,"devnet add controller --name HomeController"),c()(),l(22,"p"),a(23," The class below represent an example of a controller class named "),l(24,"code"),a(25,"HomeController"),c(),a(26," extends a "),l(27,"code"),a(28,"Controller"),c(),a(29," base class to inherit some MVC features, and has one action method called "),l(30,"code"),a(31,"index()"),c(),a(32," that returns an instance of "),l(33,"code"),a(34,"IActionResult"),c(),a(35,", with a content of "),l(36,"samp"),a(37,'"Hello World!"'),c(),a(38," as a response."),v(39,"br"),c(),l(40,"pre")(41,"code",6),a(42,"content(\"Hello World!\");\n }\n}"),c()(),v(43,"br"),l(44,"h3"),a(45,"Action Result"),c(),l(46,"p"),a(47," The action result represents the result of the action method, which returns a HTTP response. "),c(),l(48,"p"),a(49," The following table shows a list of controller methods that return an action result for different kinds of responses: "),c(),l(50,"table",7)(51,"thead")(52,"tr")(53,"th",8),a(54,"Method"),c(),l(55,"th",8),a(56,"Description"),c()()(),l(57,"tbody")(58,"tr")(59,"td")(60,"code"),a(61,"view(object|array $data, ?string $name): IActionResult"),c()(),l(62,"td"),a(63,"Return HTML content result"),c()(),l(64,"tr")(65,"td")(66,"code"),a(67,"json(object|array $data): IActionResult"),c()(),l(68,"td"),a(69,"Return JSON data result"),c()(),l(70,"tr")(71,"td")(72,"code"),a(73,"content(string $content, ?string $contentType): IActionResult"),c()(),l(74,"td"),a(75,"Return text content result"),c()(),l(76,"tr")(77,"td")(78,"code"),a(79,"file(string $path, ?string $contentType): IActionResult"),c()(),l(80,"td"),a(81,"Return HTML content result"),c()(),l(82,"tr")(83,"td")(84,"code"),a(85,"redirect(string $url): IActionResult"),c()(),l(86,"td"),a(87,"Redirect the request to the giving path"),c()(),l(88,"tr")(89,"td")(90,"code"),a(91,"statusCode(int $code): IActionResult"),c()(),l(92,"td"),a(93,"Return HTTP status code result"),c()()()(),v(94,"br"),l(95,"h3"),a(96,"Async Action"),c(),l(97,"p"),a(98," DevNet Controller can use async method to handle the HTTP request asynchronously. "),c(),l(99,"pre")(100,"code",6),a(101,"content($content);\n }\n}"),c()(),v(102,"br"),l(103,"h3"),a(104,"Model binding"),c(),l(105,"p"),a(106," Model Bidding is a mechanism that retrieves data from the HTTP request and provides it to the controller action method parameters as simple data types or updates the data into the properties of a complex type parameter. "),c(),l(107,"p"),a(108," It automates the process of retrieving data from various sources, such as: "),c(),l(109,"ul")(110,"li"),a(111,"Route data."),c(),l(112,"li"),a(113,"Query strings."),c(),l(114,"li"),a(115,"Form fields."),c(),l(116,"li"),a(117,"Uploaded files."),c()(),l(118,"h4"),a(119,"Simple type binding"),c(),l(120,"p"),a(121," Simple model bidding is a technique that automatically assigns values to the controller action method parameters that have the same names as the request data and are of simple types such as string, int, or bool, etc. "),c(),l(122,"p"),a(123," The following example shows how the Model Binder maps the route data and query string to the controller action method parameters of simple types. "),c(),l(124,"pre")(125,"code",6),a(126,"content(\"Excerpt from the content of the post: {$id}\");\n }\n\n return $this->content(\"The full content of the post: {$id}\");\n }\n}"),c()(),l(127,"p"),a(128," Assuming the user requests the following URL: "),l(129,"samp"),a(130,'"/posts/1/?excerpt=true"'),c(),v(131,"br"),a(132," The model binder will retrieve the value "),l(133,"code"),a(134,"1"),c(),a(135," from the route data and provide it to the "),l(136,"code"),a(137,"$id"),c(),a(138," parameter and the value "),l(139,"code"),a(140,"true"),c(),a(141," from the query string to the "),l(142,"code"),a(143,"$excerpt"),c(),a(144," parameter. "),c(),v(145,"br"),l(146,"h4"),a(147,"Complex type binding"),c(),l(148,"p"),a(149," The complex-type binding is an automatic way of mapping the request data to the public properties of an object that is passed as a parameter to a controller action method. This provides easy access to the data of the HTTP request without having to parse it manually. "),c(),l(150,"p"),a(151," The code example below shows a controller with a "),l(152,"code"),a(153,"send()"),c(),a(154," action method that accepts a complex type parameter of type "),l(155,"code"),a(156,"Contact"),c(),a(157,", where the Model Binder automatically populates the request form data into the public properties of the Contact object, which is used to validate the data before sending it via email when the user submits the contact form. "),c(),l(158,"pre")(159,"code",6),a(160,"isValid()) {\n return $this->content(\"All required fields must be filled out!\");\n }\n\n mail(\"email@example.com\", $form->Subject, $form->Message);\n return $this->statusCode(200);\n }\n}"),c()(),l(161,"p"),a(162," And here is the code for the "),l(163,"code"),a(164,"Contact"),c(),a(165," model that is used as a parameter in the controller action method.\n"),c(),l(166,"pre")(167,"code",6),a(168,"Subject) && isset($this->Message)) {\n return true\n }\n\n return false;\n }\n}"),c()()(),l(169,"nav",9)(170,"ul",10)(171,"li",11)(172,"a",12),v(173,"i",13),a(174," Previous "),c()(),l(175,"li",11)(176,"a",14),a(177," Next "),v(178,"i",15),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/view",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-view"]],decls:240,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php-template"],[1,"alert","alert-warning"],[1,"language-php"],[1,"alert","alert-info"],["target","_blank","href","https://www.php.net/manual/en/control-structures.alternative-syntax.php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/controller",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/filter",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Views"),c(),v(8,"hr"),l(9,"p"),a(10," Views are the presentation details of the user\u2019s interaction, in form of HTML templates with minimal of embedded PHP code that generate content to send to the client, views are "),l(11,"samp"),a(12,".phtml"),c(),a(13," files stored by default in a Views folder at the root of the application, typically each controller will have its own folder, in which are views for specific controller actions. "),c(),l(14,"p"),a(15," By convention, all the views stored in the folder called "),l(16,"b"),a(17,'"Views"'),c(),a(18,", grouped into sub-folders have the same name as the the name of the controller they belong to, and each view file has the same name as the name of the action that return it. "),c(),l(19,"p"),a(20," The following code represent a view template with a sample HTML code, stored in "),l(21,"code"),a(22,'"/Views/Home/index.phtml"'),c(),v(23,"br"),a(24," assuming that the controller name is "),l(25,"b"),a(26,'"Home"'),c(),a(27," and the action name is "),l(28,"b"),a(29,'"index"'),c(),a(30,". "),c(),l(31,"pre")(32,"code",4),a(33,'\n\n\n \n \n <?= $viewName ?>\n\n\n

Hello World!

\n\n'),c()(),l(34,"blockquote",5)(35,"b"),a(36,"Important:"),c(),a(37," DevNet view engine uses its own PHP short tag syntax "),l(38,"code"),a(39,""),c(),a(40," without causing any conflict with XML tags, and there is no need to enable it in "),l(41,"samp"),a(42,'"php.ini"'),c()(),v(43,"br"),l(44,"h3"),a(45,"Returning the View"),c(),l(46,"p"),a(47," Typically views are returned from actions as a "),l(48,"code"),a(49,"ViewResult"),c(),a(50,", which is a type of "),l(51,"code"),a(52,"IActionResult"),c(),a(53,", the Action method can create and return a ViewResult directly, but that isn't commonly done, since controllers inherit from Controller base class, you simply use the method "),l(54,"code"),a(55,"view()"),c(),a(56," to return the ViewResult. "),c(),l(57,"pre")(58,"code",6),a(59,"view();\n }\n}"),c()(),v(60,"br"),l(61,"h4"),a(62,"Returning Explicit View"),c(),l(63,"p"),a(64," If your view doesn't follow the naming convention, you can return an explicit view, by passing a string argument to view method that define a relative path to the view file without the extension file "),l(65,"samp"),a(66,'".phtml"'),c()(),l(67,"p"),a(68," The following code shows an example of controller with action "),l(69,"code"),a(70,"index"),c(),a(71," that returns a content of an explicit view called "),l(72,"samp"),a(73,'"home.phtml"'),c(),a(74,", belong to the folder "),l(75,"samp"),a(76,'"Template"'),c()(),l(77,"pre")(78,"code",6),a(79,'view(name: "Template/home");\n }\n}'),c()(),v(80,"br"),l(81,"h3"),a(82,"Passing data to the view"),c(),l(83,"p"),a(84," The view data is an MVC communication mechanism for passing data from the controller's action method to the view. The data is passed as a key-value array argument and can then be retrieved in the view by accessing its corresponding keys in the ViewData property or by using variables with the same names as the keys. "),c(),l(85,"p"),a(86," Here is an example of a controller that passes key-value data to the view. "),c(),l(87,"pre")(88,"code",6),a(89," 'MySite',\n 'page' => 'Home'\n ];\n return $this->view($data);\n }\n}"),c()(),l(90,"p"),a(91," And here is an example of a view that retrieves the passed data by accessing the keys of the ViewData property. "),c(),l(92,"pre")(93,"code",4),a(94,'\n\n\n \n \n <?= $this->ViewData[\'site\'] . \'-\' . $this->ViewData[\'page\'] ?><title>\n ...\n'),c()(),l(95,"p"),a(96," Or, retrieve the view data as variables with the same names as the keys of the ViewData property. "),c(),l(97,"pre")(98,"code",4),a(99,'<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title><?= $site . \'-\' . $page ?><title>\n ...\n'),c()(),v(100,"br"),l(101,"h3"),a(102,"Layout"),c(),l(103,"p"),a(104," The layout or master page is common UI (User Interface) a template of common HTML elements that remains the same throughout the application, such as header, navigation bar, or footer section, to reduce duplicate code in views and make it easy to maintain. "),c(),l(105,"p"),a(106," By default layouts placed in the folder "),l(107,"samp"),a(108,'"/views/layouts"'),c(),a(109," and, an individual views can specify a layout by calling the method "),l(110,"code"),a(111,"layout(string $layoutName)"),c(),a(112,", the string parameter "),l(113,"code"),a(114,"$layoutName"),c(),a(115," define the relative path to the layout file without the extension file "),l(116,"samp"),a(117,'".phtml"'),c(),a(118," as shown in the following example: "),c(),l(119,"pre")(120,"code",4),a(121,"<? $this->layout('Shared/layout') ?>\n \n<h1>Hello World!</h1>"),c()(),l(122,"p"),a(123," Layout can include the view contents, by calling the method "),l(124,"code"),a(125,"renderBody()"),c(),a(126," and wherever the call to this method is placed, the contents of the view will be rendered. "),c(),l(127,"p"),a(128," In this example the view engin catch the content "),l(129,"code"),a(130,"<h1>Hello World!</h1>"),c(),a(131," of the view and rendered it into the body of the layout where the method "),l(132,"code"),a(133,"renderBody()"),c(),a(134," is called. "),c(),l(135,"pre")(136,"code",4),a(137,'<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <link rel="stylesheet" type="text/css" href="/css/style.css" />\n <title>DevNet\n\n\n
\n \n
\n
\n renderBody() ?>\n
\n\n'),c()(),v(138,"br"),l(139,"h4"),a(140,"Partial views"),c(),l(141,"p"),a(142," A partial view is a reusable portion of the layout, which means Layout can be split into many files that contains HTML code, It can be used in one or more views or layout views, You can use the same partial view at multiple places and eliminates the redundant code. "),c(),l(143,"pre")(144,"code",4),a(145,'\n\n\n \n \n \n DevNet\n\n\n
\n renderPartial(\'Shared/navbar\') ?>\n
\n
\n renderBody() ?>\n
\n\n'),c()(),l(146,"p"),a(147," The code below is the content of the partial view in separated file: "),l(148,"samp"),a(149,'"/Views/layouts/navbar.phtml"'),c(),a(150,". "),c(),l(151,"pre")(152,"code",4),a(153,''),c()(),v(154,"br"),l(155,"h4"),a(156,"Sections"),c(),l(157,"p"),a(158," Sections provide a dynamic way to organize where certain page elements should be placed, unlike the partial view which they remains the same throughout all the application, sections can be changed for each view. "),c(),l(159,"p"),a(160," To be able to use a section in a layout, we must first define a section in the view, by writing a block of content between the methods "),l(161,"code"),a(162,"section(string $sectionName)"),c(),a(163," and "),l(164,"code"),a(165,"endSection()"),c(),a(166," and give a ane to the section, which help us later to select which section to be rendered in the layout. "),c(),l(167,"pre")(168,"code",4),a(169,"layout('Shared/layout') ?>\n \n

Hello World!

\n\nsection('sidebar') ?>\n
    \n
  • \n
  • \n
\nendSection() ?>"),c()(),l(170,"p"),a(171," A layout can include one or more view sections, by calling the method "),l(172,"code"),a(173,"RenderSection(string $sectionName)"),c(),a(174," with specifying the name of the section be rendered, and where the call of this method is placed, the view section contents will be rendered. "),c(),l(175,"pre")(176,"code",4),a(177,'\n\n\n \n \n \n DevNet\n\n\n
\n renderPartial(\'Shared/navbar\') ?>\n
\n
\n \n
\n renderBody() ?>\n
\n
\n\n'),c()(),v(178,"br"),l(179,"h3"),a(180,"The control structures"),c(),l(181,"p"),a(182," DevNet view engine uses the PHP alternative syntax for control structures, such as "),l(183,"code"),a(184,"if"),c(),a(185,", "),l(186,"code"),a(187,"while"),c(),a(188,", "),l(189,"code"),a(190,"for"),c(),a(191,", "),l(192,"code"),a(193,"foreach"),c(),a(194,", and "),l(195,"code"),a(196,"switch"),c(),a(197,", which use the colon ("),l(198,"code"),a(199,":"),c(),a(200,") instead of opening brace and the "),l(201,"code"),a(202,"endif;"),c(),a(203,", "),l(204,"code"),a(205,"endwhile;"),c(),a(206,", "),l(207,"code"),a(208,"endfor;"),c(),a(209,", "),l(210,"code"),a(211,"endforeach;"),c(),a(212,", or "),l(213,"code"),a(214,"endswitch;"),c(),a(215,", respectively, instead of the closing brace. "),c(),l(216,"p"),a(217," The following example uses the alternative syntax of the "),l(218,"code"),a(219,"if"),c(),a(220," statement to display different navbars based on the user's authentication status, where the user identity is injected into the view by default when using the MVC controller. "),c(),l(221,"pre")(222,"code",4),a(223,'\n\n\n \n \n \n DevNet\n\n\n
\n User->isAuthenticated()): ?>\n renderPartial(\'Shared/authenticatedUserNavbar\') ?>\n \n renderPartial(\'Shared/anonymousUserNavbar\') ?>\n \n
\n
\n renderBody() ?>\n
\n\n'),c()(),l(224,"blockquote",7)(225,"b"),a(226,"Note:"),c(),a(227," For more information about the PHP alternative syntax, you can visit the PHP documentation website "),l(228,"a",8),a(229,"here"),c()()(),l(230,"nav",9)(231,"ul",10)(232,"li",11)(233,"a",12),v(234,"i",13),a(235," Previous "),c()(),l(236,"li",11)(237,"a",14),a(238," Next "),v(239,"i",15),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/filter",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-filter"]],decls:67,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/layout",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/exception",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Action Filters"),c(),v(8,"hr"),l(9,"p"),a(10," Action Filters are similar to Middlewares, they allow code to be run before or after specific stages in the request processing pipeline and can choose to short-circuit the pipeline or pass the request to the next filter or the endpoint action, but the difference is that the action filters are invoked after the dispatcher selects the action to execute, just before and after the execution of the action. "),c(),l(11,"p"),a(12," The following code example represents an action filter class called "),l(13,"code"),a(14,"AuthenticationFilter"),c(),a(15," that prevents accessing the requested resources if the user is not authenticated. "),c(),l(16,"pre")(17,"code",4),a(18,"HttpContext->User) {\n $context->HttpContext->Response->setStatusCode(401);\n return;\n }\n // Await next action delegate to chain the pipeline to the next filter before executing the action.\n await($next($context));\n // Logging or other works can be done here after executing the action.\n }\n}\n"),c()(),v(19,"br"),l(20,"h3"),a(21,"Registering action filters"),c(),l(22,"p"),a(23," The code example below shows how to add action filters to the route endpoint handler as class or as an anonymous async function, with the help of the method "),l(24,"code"),a(25,"RouteHandler::addFilter(callable|string $filter, ...$args)"),c()(),l(26,"pre")(27,"code",4),a(28,'start(function ($app) {\n // Middlewares\n $app->UseExceptionHandler();\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n $routes->mapGet("/users", function ($httpContext) {\n // Code...\n })\n // Adding action filter class.\n ->addFilter(AuthenticationFilter::class)\n\n // Adding in-line action filter as anonymous async function.\n ->addFilter(async(function ($actionContext, $next)) {\n // Some works can be done here before executing the action.\n await($next);\n // Other works can be done here after executing the action.\n }));\n\n // Other routes.\n });\n});'),c()(),l(29,"p"),a(30," You can apply the action filter to a controller using the attribute syntax and decorate the controller class or the action method with the filter name, as shown in the following code example.\n"),c(),l(31,"pre")(32,"code",4),a(33,"view();\n }\n\n // This filter will be applied only to this action method.\n #[Validate]\n #[Route(path: '/user/create', method: 'POST')]\n public function create(Profile $form): IActionResult\n {\n // Code...\n }\n}\n"),c()(),v(34,"br"),l(35,"h3"),a(36,"Built-in filters"),c(),l(37,"table",5)(38,"thead")(39,"tr")(40,"th",6),a(41,"Filter"),c(),l(42,"th",6),a(43,"Description"),c()()(),l(44,"tbody")(45,"tr")(46,"td")(47,"code"),a(48,"DevNet\\Core\\Endpoint\\Filters\\Authorize"),c()(),l(49,"td"),a(50,"Prevent a non-authorized user from accessing the resources."),c()(),l(51,"tr")(52,"td")(53,"code"),a(54,"DevNet\\Core\\Endpoint\\Filters\\ValidateAntiForgery"),c()(),l(55,"td"),a(56,"Prevent Cross-Site Request Forgery"),c()()()()(),l(57,"nav",7)(58,"ul",8)(59,"li",9)(60,"a",10),v(61,"i",11),a(62," Previous "),c()(),l(63,"li",9)(64,"a",12),a(65," Next "),v(66,"i",13),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/dependency",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-dependency"]],decls:161,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"table"],["scope","col"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/exception",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/overview",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Dependency Injection"),c(),v(8,"hr"),l(9,"p"),a(10," Dependency injection (DI) is a technique for achieving loose coupling between objects and dependencies rather than directly instantiating dependencies or using static references, most often the dependency objects are provided to the class which depends on, via constructor injection declaration, allowing them to follow the Explicit Dependencies Principle. "),c(),l(11,"p"),a(12," The following code represents a class "),l(13,"code"),a(14,"MyService"),c(),a(15," that depends on the class "),l(16,"code"),a(17,"MyDependency"),c(),a(18,", which will be injected automatically into its constructor by the service container. "),c(),l(19,"pre")(20,"code",4),a(21,"Dependency = $dependency;\n }\n}\n"),c()(),v(22,"br"),l(23,"h2"),a(24,"Service Container"),c(),l(25,"p"),a(26," Service Container is an implementation of Dependency Injection Container (aka Inversion of Controller Container), a system that implements an automatic dependency injection, it creates an object of the specified class as a service and injects all the dependency objects through their constructor by its type and manages its lifetime, whether Transient or Singleton lifetime. "),c(),l(27,"h5"),a(28,"Transient"),c(),l(29,"p"),a(30," Transient lifetime services are created each time they're requested from the service container. This lifetime works best for lightweight, stateless services. "),c(),l(31,"h5"),a(32,"Singleton"),c(),l(33,"p"),a(34," Singleton lifetime services are created only once, and Every subsequent request uses the same instance in the application life cycle. "),c(),l(35,"h2"),a(36,"Registering services"),c(),l(37,"p"),a(38," Typically the method "),l(39,"code"),a(40,"WebHostBuilder::register(IServiceCollection $services)"),c(),a(41," is responsible for defining the services that will be used throw your application without hard coding, and you can add services to the container with complex dependencies by using one of the following methods: "),c(),l(42,"ul")(43,"li")(44,"code"),a(45,"IServiceCollection::addSingleton(String $serviceType, String|Object|Closure $service);"),c()(),l(46,"li")(47,"code"),a(48,"IServiceCollection::addTransient(String $serviceType, String|Object|Closure $service);"),c()()(),l(49,"p"),a(50," Services are defined by the same service type class, parent class, or interface that the service is implementing, which will be used later to call the service from the service provider. "),c(),l(51,"p"),a(52," The following code shows an example of registering two services, "),l(53,"code"),a(54,"MyDependency"),c(),a(55," registered with Transient lifetime, defined by the same service type, and "),l(56,"code"),a(57,"MyService"),c(),a(58," with singleton lifetime defined by "),l(59,"code"),a(60,"IMyService"),c(),a(61," interface: "),c(),l(62,"pre")(63,"code",4),a(64,"register(function ($services) {\n // Adding services\n $services->addTransient(MyDependency::class);\n $services->addSingleton(IMyService::class, MyService::class);\n });\n ...\n }\n}\n"),c()(),v(65,"br"),l(66,"h3"),a(67,"Registering services using custom factory"),c(),l(68,"p"),a(69," Devnet Service container uses Service Activator to create your dependency when you call it, but if you want to resolve the instantiation of your dependency in your way, DevNet service container allows you to implement your own factory using a closure function that has "),l(70,"code"),a(71,"IServiceProvider"),c(),a(72," parameter to allow you to call any service registered within "),l(73,"code"),a(74,"IServiceCollection"),c(),a(75," and use it as a dependency for your service creation process as shown in the following example: "),c(),l(76,"pre")(77,"code",4),a(78,"register(function ($services) {\n $services->addSingleton(IService::class,\n fn($provider) => new MyService($provider->getService(MyDependency::class)));\n \n $services->addTransient(MyDependency::class);\n });\n ...\n }\n}\n"),c()(),v(79,"br"),l(80,"h3"),a(81,"Requesting Services"),c(),l(82,"p"),a(83," Services can be requested by their type using the method "),l(84,"code"),a(85,"IServiceProvider::getService(string $type)"),c(),a(86,", which can be accessible from the property "),l(87,"code"),a(88,"HttpContext::Services"),c(),a(89,", like in the following example. "),c(),l(90,"pre")(91,"code",4),a(92,'\n...\n$app->useEndpoint(function($routes) {\n $routes->mapGet("/service", function(HttpContext $context) {\n // Getting the services\n $service1 = $context->Services->getService(IService::class);\n $service2 = $context->Services->getService(MyService::class);\n // Code...\n });\n});\n'),c()(),v(93,"br"),l(94,"h3"),a(95,"Requesting services through controller"),c(),l(96,"p"),a(97," Services are injected into controllers as a constructor parameter during the creation of the controller, the service activator resolves the services from "),l(98,"code"),a(99,"IServiceCollection"),c(),a(100," that matches the parameter types of the controller's constructor and injects them into it automatically. "),c(),l(101,"pre")(102,"code",4),a(103,"MyService = $myService;\n }\n ...\n}\n"),c()(),v(104,"br"),l(105,"h3"),a(106,"Built-in services"),c(),l(107,"table",5)(108,"thead")(109,"tr")(110,"th",6),a(111,"Method"),c(),l(112,"th",6),a(113,"Description"),c()()(),l(114,"tbody")(115,"tr")(116,"td")(117,"code"),a(118,"addAntiForgery(?Closure $configuration)"),c()(),l(119,"td"),a(120,"Register IAntiForgery service."),c()(),l(121,"tr")(122,"td")(123,"code"),a(124,"addAuthentication(?Closure $configuration)"),c()(),l(125,"td"),a(126,"Register IAuthentication service."),c()(),l(127,"tr")(128,"td")(129,"code"),a(130,"addAuthorization(?Closure $configuration)"),c()(),l(131,"td"),a(132,"Register IAuthorization service."),c()(),l(133,"tr")(134,"td")(135,"code"),a(136,"addEntityContext(?Closure $configuration)"),c()(),l(137,"td"),a(138,"Register EntityContext service."),c()(),l(139,"tr")(140,"td")(141,"code"),a(142,"addHttpClient(?Closure $configuration)"),c()(),l(143,"td"),a(144,"Register HttpClient service."),c()(),l(145,"tr")(146,"td")(147,"code"),a(148,"addLogging(?Closure $configuration)"),c()(),l(149,"td"),a(150,"Register ILoggerFactory service."),c()()()()(),l(151,"nav",7)(152,"ul",8)(153,"li",9)(154,"a",10),v(155,"i",11),a(156," Previous "),c()(),l(157,"li",9)(158,"a",12),a(159," Next "),v(160,"i",13),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web/exception",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["web-exception"]],decls:90,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"language-json"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/filter",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/web/dependency",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Exception Handler"),c(),v(8,"hr"),l(9,"p"),a(10," The exception handler is a middleware that displays detailed information about unhandled request exceptions, it's the first middleware that runs in the request pipeline so that it can catch all the unhandled exceptions thrown in the middleware that follows. "),c(),l(11,"h3"),a(12,"Registering the Exception Handler"),c(),l(13,"p"),a(14," Exception Handler is enabled through the method "),l(15,"code"),a(16,"WebHost::start(Closure $configure)"),c(),a(17," by calling the extension method "),l(18,"code"),a(19,"ApplicationBuilderExtensions::useExceptionHandler()"),c(),a(20," of the Application builder, which adds the pre-built middleware "),l(21,"code"),a(22,"ExceptionHandlerMiddleware"),c(),a(23," to the request pipeline, and must be in the top order of all middlewares. "),c(),l(24,"pre")(25,"code",4),a(26,"start(function ($app) {\n // Registering the exception handler in the top order.\n $app->useExceptionHandler();\n // Some middlewares here.\n});\n"),c()(),v(27,"br"),l(28,"h3"),a(29,"Custom error handling"),c(),l(30,"p"),a(31," The default configuration of the exception handler displays the Developer Exception page that shows detailed information about the error exception, which is very useful for debugging, but it is not recommended for deploying the application in the production environment, instead you need to handle the errors differently with a custom error handler, e.g. log the errors and return only the status code. "),c(),l(32,"p"),a(33," The following example shows how to register an exception handler that redirects the errors to a custom error handler endpoint to handle the errors differently. "),c(),l(34,"pre")(35,"code",4),a(36,'start(function ($app) {\n // Registering an exception handler that redirects the errors to a custom error handler.\n $app->useExceptionHandler("/error");\n $app->useRouter();\n $app->useEndpoint(function ($routes) {\n $routes->mapGet("/", fn () => "Hello World!");\n // The custom error handler endpoint.\n $routes->mapGet("/error", function ($context) {\n $error = $context->Items->getValue(\'ErrorException\');\n $code = $error ? $error->getCode() : 404;\n $code = $code != 0 ? $code : 500;\n if ($code == 401) {\n $context->Response->redirect(\'/login\');\n } else {\n $context->Response->setStatusCode($code);\n // You may need to log the error message here.\n // e.g. Logger::log(LogLevel::Error, $error->getMessage());\n }\n });\n });\n});\n'),c()(),v(37,"br"),l(38,"h3"),a(39,"Runtime environment"),c(),l(40,"p"),a(41," The DevNet web application can determine the runtime environment by reading the environment variable "),l(42,"samp")(43,"b"),a(44,"DEVNET_ENVIRONMENT"),c()(),a(45," from your system environment variables or from the "),l(46,"samp"),a(47,'"lunch.json"'),c(),a(48," file of Visual Studio Code, which can have two values: "),l(49,"code"),a(50,"development"),c(),a(51," or "),l(52,"code"),a(53,"production"),c(),a(54,", so you can use it as an advantage to control the error-handling behavior of your application. "),c(),l(55,"p"),a(56," The environment variable "),l(57,"samp")(58,"b"),a(59,"DEVNET_ENVIRONMENT"),c()(),a(60," is set to "),l(61,"code"),a(62,"development"),c(),a(63," in the "),l(64,"samp"),a(65,'"lunch.json"'),c(),a(66," file, so when you debug your application, it runs in development mode. "),c(),l(67,"pre")(68,"code",5),a(69,'"configurations": [\n {\n "name": "Launch Built-in web server",\n "type": "php",\n "request": "launch",\n "cwd": "${workspaceRoot}/webroot",\n "runtimeArgs": [\n "-dxdebug.mode=debug",\n "-dxdebug.start_with_request=yes",\n "-S",\n "localhost:8000"\n ],\n "env": {\n "DEVNET_ENVIRONMENT": "development"\n }\n }\n]\n'),c()(),v(70,"br"),l(71,"h4"),a(72,"Controlling the error-handling conditions"),c(),l(73,"p"),a(74," By default, the Developer Exception page is enabled when the runtime environment is set to development mode, without the need to register it, but that can be controlled by adding a condition in your application pipeline to use a custom exception handler if the runtime environment is not in development mode. "),c(),l(75,"pre")(76,"code",4),a(77,'start(function ($app) {\n if (!$app->Environment->isDevolvement()) {\n $app->useExceptionHandler("/error");\n }\n // The rest of middlewares.\n ...\n});\n'),c()(),l(78,"p"),a(79," In this way, your application will run in development or production mode, depending on the runtime environment of your system or your application. "),c()(),l(80,"nav",6)(81,"ul",7)(82,"li",8)(83,"a",9),v(84,"i",10),a(85," Previous "),c()(),l(86,"li",8)(87,"a",11),a(88," Next "),v(89,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/web",redirectTo:"docs/web/start",pathMatch:"full"}];let a4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(s4),en]})}return e})(),c4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,a4,Xo]})}return e})();const l4=[{path:"docs/orm/start",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["orm-start"]],decls:213,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],["src","assets/images/orm.svg","width","100%","height","auto"],[1,"language-shell"],[1,"language-php"],[1,"table"],["scope","col"],[1,"language-json"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/antiforgery",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/query",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Get Started"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet ORM (Object-relational Mapping) is a system that offers an automated mechanism to developers for accessing and storing the data in the database in an object-oriented way, by performing the work required to map between Entities defined in an application's programming language as classes and data stored in relational data sources as tables, without needing the data-access code to be written. "),c(),l(11,"p"),a(12," The following diagram is an abstraction of DevNet ORM architecture. "),c(),v(13,"img",4)(14,"br")(15,"br"),l(16,"p")(17,"b"),a(18,"EntityContext:"),c(),a(19," is an implementation of the Unit of work pattern, represents a gateway to the database by providing an API to communicate with the database with the following capabilities: "),c(),l(20,"ul")(21,"li"),a(22,"Database Connections"),c(),l(23,"li"),a(24,"Data querying and persistance"),c(),l(25,"li"),a(26,"Change Tracking"),c(),l(27,"li"),a(28,"Model building"),c(),l(29,"li"),a(30,"Data Mapping"),c(),l(31,"li"),a(32,"Transaction management"),c()(),l(33,"p")(34,"b"),a(35,"EntitySet:"),c(),a(36," is an implementation of the Repository pattern, a class that holds a collection of entities of the same type related to a table in the database, and each entity is an instance that represents a data row in that table. "),c(),v(37,"br"),l(38,"h3"),a(39,"Installation"),c(),l(40,"p"),a(41," If the DevNet framework is not fully installed, you can install the DevNet ORM package into your project using Composer by running the following command in your terminal: "),c(),l(42,"pre")(43,"code",5),a(44,"composer require devnet/orm"),c()(),v(45,"br"),l(46,"h3"),a(47,"Defining the EntityContext"),c(),l(48,"p"),a(49," The recommended way to work with DevNet ORM is to define a context class in the "),l(50,"b"),a(51,'"Models"'),c(),a(52," folder that derives from "),l(53,"code"),a(54,"DevNet\\ORM\\EntityContext"),c(),a(55," and exposes "),l(56,"code"),a(57,"DevNet\\ORM\\EntitySet"),c(),a(58," properties that represent collections of the specified entities in the context, as shown in the following example. "),c(),l(59,"pre")(60,"code",6),a(61,"Posts = $this->set(Post::class);\n }\n}\n"),c()(),v(62,"br"),l(63,"h4"),a(64,"Entity Type"),c(),l(65,"p"),a(66," By convention, the entity types that are exposed in "),l(67,"code"),a(68,"EntitySet"),c(),a(69," properties in "),l(70,"code"),a(71,"EntityContext"),c(),a(72," are included in the model and mapped automatically to the database tables based on their shape. "),c(),l(73,"ul")(74,"li"),a(75," Each entity class will be mapped automatically to the corresponding database table with the same name. "),c(),l(76,"li"),a(77," Each public property will be mapped to the corresponding column with the same name in the table. "),c(),l(78,"li"),a(79," By default, the property that is named "),l(80,"b"),a(81,'"Id"'),c(),a(82," will be considered as the primary key. "),c()(),l(83,"p"),a(84," The following code example is the entity class "),l(85,"code"),a(86,"Application\\Models\\Post"),c(),a(87," used in the previous context, and it represents the "),l(88,"b"),a(89,'"Post"'),c(),a(90," table in the database where the properties represent the columns of that table. "),c(),l(91,"pre")(92,"code",6),a(93,"ProviderType = SqliteDataProvider::class;\n$options->ConnectionString = "/path/to/database.db3";\n\n$blog = new BlogContext($options);\n$posts = $blog->Posts;\n'),c()(),v(124,"br"),l(125,"h4"),a(126,"Database Providers"),c(),l(127,"p"),a(128," The following table shows a list of database providers that are supported by DevNet ORM. "),c(),l(129,"table",7)(130,"thead")(131,"tr")(132,"th",8),a(133,"Database Provider"),c(),l(134,"th",8),a(135,"Database Engine"),c()()(),l(136,"tbody")(137,"tr")(138,"td")(139,"code"),a(140,"DevNet\\ORM\\MySql\\MySqlDataProvider"),c()(),l(141,"td"),a(142,"MySql"),c()(),l(143,"tr")(144,"td")(145,"code"),a(146,"DevNet\\ORM\\PgSql\\PgSqlDataProvider"),c()(),l(147,"td"),a(148,"PostgreSql"),c()(),l(149,"tr")(150,"td")(151,"code"),a(152,"DevNet\\ORM\\Sqlite\\SqliteDataProvider"),c()(),l(153,"td"),a(154,"SQLite"),c()()()(),l(155,"h4"),a(156,"Connection String"),c(),l(157,"p"),a(158,' The client-server database providers like "MySql" and "PostgreSql" use the following connection string format:'),v(159,"br"),l(160,"code"),a(161,'"host=hostname;port=port;database=dbname;user=username;password=password"'),c()(),l(162,"p"),a(163,' The serverless database providers like "SQLite" use the following connection string format:'),v(164,"br"),l(165,"code"),a(166,'"/path/to/database.db3"'),c(),a(167," or "),l(168,"code"),a(169,'":memory:"'),c()(),v(170,"br"),l(171,"h3"),a(172,"Registering the EntityContext"),c(),l(173,"p"),a(174," It is recommended that you register the DevNet ORM as a reusable service to be injected into your application using the "),l(175,"code"),a(176,"ServiceCollectionExtensions::addEntityContext()"),c(),a(177," Extension method, which is called within the "),l(178,"code"),a(179,"WebHostBuilder::register()"),c(),a(180," method, with the use of the configuration provider that gets the database configuration from the "),l(181,"samp"),a(182,'"settings.json"'),c(),a(183," file as shown in the following code example: "),c(),l(184,"pre")(185,"code",6),a(186,"Configuration;\n $builder->register(function ($services) use ($configuration) { //;\n // Adding EntityContext\n $services->addEntityContext(BlogContext::class,\n function ($options) {\n $options->ProviderType = $configuration->getValue('Database:ProviderType');\n $options->ConnectionString = $configuration->getValue('Database:ConnectionString');\n }\n );\n });\n ...\n }\n}\n"),c()(),l(187,"p"),a(188," In the "),l(189,"samp"),a(190,'"settings.json"'),c(),a(191," file, you need to set the database configuration, like in the following example: "),c(),l(192,"pre")(193,"code",9),a(194,'"Database": {\n "ProviderType": "DevNet\\\\Entity\\\\PgSql\\\\PgSqlDataProvider",\n "ConnectionString": "host=localhost;database=dbname;user=username;password=password"\n}\n'),c()(),l(195,"p"),a(196," Then, you can get the "),l(197,"code"),a(198,"EntityContext"),c(),a(199," using the controller constructor injection, like this: "),c(),l(200,"pre")(201,"code",6),a(202,"blog = $blog;\n }\n\n #[Route(\"/blog\")]\n public function index(): IActionResult\n {\n $this->view(['posts' => $this->blog->Posts]);\n }\n}\n"),c()()(),l(203,"nav",10)(204,"ul",11)(205,"li",12)(206,"a",13),v(207,"i",14),a(208," Previous "),c()(),l(209,"li",12)(210,"a",15),a(211," Next "),v(212,"i",16),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/orm/query",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["orm-query"]],decls:192,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"alert","alert-warning"],[1,"language-sql"],[1,"alert","alert-info"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/start",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/save",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Querying Data"),c(),v(8,"hr"),l(9,"p"),a(10," The entity repository represents a collection of all records of a particular entity type and can be used to query a single entity or multiple entities. "),c(),l(11,"h3"),a(12,"Loading All Entities"),c(),l(13,"p"),a(14," The entity repository is an iterable collection, so you can load all the entities by iterating the "),l(15,"code"),a(16,"EntitySet"),c(),a(17," instance using the "),l(18,"code"),a(19,"foreach"),c(),a(20," statement, like in the following example: "),c(),l(21,"pre")(22,"code",4),a(23,"Posts as $post) {\n print($post->Title . PHP_EOL);\n}\n"),c()(),l(24,"p"),a(25," Or you can just export all the entities to an array to deal with them later by using the method "),l(26,"code"),a(27,"toArray()"),c(),a(28," like this: "),c(),l(29,"pre")(30,"code",4),a(31,"$posts = $blog->Posts->toArray();"),c()(),v(32,"br"),l(33,"h3"),a(34,"Loading a single entity"),c(),l(35,"p"),a(36," To load a single particular entity selected by its Id, use the method "),l(37,"code"),a(38,"EntitySet::find(string $keyValue)"),c(),a(39,", which will look first if it's already loaded in the tracker to return it quickly, and if it's not, then will load it from the database to the tracker and return it, and here is an example of how to use this method: "),c(),l(40,"pre")(41,"code",4),a(42,"$post = $blog->Posts->find($id);"),c()(),l(43,"p"),a(44," Otherwise, you can use the method "),l(45,"code"),a(46,"EntitySet::first()"),c(),a(47," to load to the first entity of the record or use the method "),l(48,"code"),a(49,"EntitySet::last()"),c(),a(50," to load the last one. "),c(),l(51,"pre")(52,"code",4),a(53,"$firstPost = $blog->Posts->first();\n$lastPost = $blog->Posts->last();\n"),c()(),v(54,"br"),l(55,"h3"),a(56,"Linq Query"),c(),l(57,"p")(58,"code"),a(59,"EntitySet"),c(),a(60," implements the "),l(61,"code"),a(62,"IQueryable"),c(),a(63," interface so it can use LINQ (Language-Integrated Query) to query data from the database, which are chained methods that represent SQL operations, compiled by the database provider to be sent as a specific database query language (MySQL, SQLite, ...) and then to get the result set. "),c(),l(64,"blockquote",5)(65,"b"),a(66,"Important:"),c(),a(67," Linq methods are extension methods, so to use this feature, you have to declare the use of the Linq namespace "),l(68,"code"),a(69,"DevNet\\System\\Linq"),c(),a(70," in every class or code that uses Linq methods with an instance of "),l(71,"code"),a(72,"EntitySet"),c(),a(73,". "),c(),v(74,"br"),l(75,"h4"),a(76,"Filtering Data"),c(),l(77,"p"),a(78," The method "),l(79,"code"),a(80,"where()"),c(),a(81," is used to restrict the result set to contain only those elements that satisfy the specified condition in the arrow function, like in the following code example: "),c(),l(82,"pre")(83,"code",4),a(84,'Posts->where(fn($post) => $post->Title == "My first post")->first();\n'),c()(),l(85,"p"),a(86," Which will be compiled to SQL then executed like this: "),c(),l(87,"pre")(88,"code",6),a(89,"SELECT * FROM Blog.Post WHERE Title = 'My first post';"),c()(),v(90,"br"),l(91,"h4"),a(92,"Ordering Data"),c(),l(93,"p"),a(94," To sort the result set in ascending order by a specified column, use the method "),l(95,"code"),a(96,"orderBy()"),c(),a(97,", and if the rows have the same value in that column, you can optionally chain it with the method "),l(98,"code"),a(99,"thenBy()"),c(),a(100," to sort them by another column, like in the following code: "),c(),l(101,"pre")(102,"code",4),a(103,"posts = $blog->Posts->orderBy(fn($p) => $p->Date)->thenBy(fn($p) => $p->Title)->toArray();"),c()(),l(104,"p"),a(105," And that will be compiled then executed in SQL like this: "),c(),l(106,"pre")(107,"code",6),a(108,"SELECT * FROM Blog.Post ORDER BY Date, Title;"),c()(),l(109,"p"),a(110," You can also sort the result set in descending order by a specified column using the method "),l(111,"code"),a(112,"orderByDescending()"),c(),a(113,", and optionally you can chain it by the method "),l(114,"code"),a(115,"ThenBy()"),c(),a(116," or "),l(117,"code"),a(118,"thenByDescending()"),c(),a(119," to sort the rows of the same values by another column, like in the code below: "),c(),l(120,"pre")(121,"code",4),a(122,"$posts = $blog->Posts->orderByDescending(fn($p) => $p->Date)\n ->thenByDescending(fn($p) => $p->Title)\n ->toArray();\n"),c()(),l(123,"p"),a(124," And this one will be compiled then executed in SQL like this: "),c(),l(125,"pre")(126,"code",6),a(127,"SELECT * FROM Blog.Post ORDER BY Date DESC, Title DESC;"),c()(),v(128,"br"),l(129,"h4"),a(130,"Partitioning Data"),c(),l(131,"p"),a(132," The partitioning data is the operation of dividing an input sequence into sections without changing the order of the elements and then returning one of those sections. "),c(),l(133,"p"),a(134," You can use the method "),l(135,"code"),a(136,"skip()"),c(),a(137," to skip a specified number of elements from the beginning of a sequence and then return the remaining elements, and use the method "),l(138,"code"),a(139,"take()"),c(),a(140," to return a specified number of contiguous elements from the start of a sequence, like in the following code example: "),c(),l(141,"pre")(142,"code",4),a(143,"$posts = $blog->Posts->skip(5)->take(10)->toArray();"),c()(),l(144,"p"),a(145," Which will be executed in SQL like this: "),c(),l(146,"pre")(147,"code",6),a(148,"SELECT * FROM Blog.Post LIMIT 5,10;"),c()(),v(149,"br"),l(150,"h5"),a(151,"Pagination Example"),c(),l(152,"p"),a(153," You can implement data pagination in DevNet ORM using the LINQ methods "),l(154,"code"),a(155,"skip()"),c(),a(156," and "),l(157,"code"),a(158,"take()"),c(),a(159," like this: "),c(),l(160,"pre")(161,"code",4),a(162,"$page = 1; // The page number you want to retrieve.\n$size = 10; // The number of items per page.\n$posts = $blog->Posts->skip(($page - 1) * $size)->take($size)->toArray();\n"),c()(),l(163,"p"),a(164," Page number 1 will display the first 10 posts, page 2 will skip the first 10 posts and display the next 10 posts, page 3 will skip 20 posts and display the next 10 posts, and so on... "),c(),v(165,"br"),l(166,"h4"),a(167,"Complex Query"),c(),l(168,"p"),a(169," Sometimes a simple query is not enough to solve a complex problem, so you can combine two or more clauses together to reach what you need as shown in the following code example: "),c(),l(170,"pre")(171,"code",4),a(172,"$posts = $blog->Posts->where(fn($p) =>$p->Date == '2023-01-01' && $p->Likes > 200)\n ->orderBy(fn($p) => $p->Title)\n ->take(10)\n ->toArray();\n"),c()(),l(173,"p"),a(174," Which will be compiled then executed in SQL like this: "),c(),l(175,"pre")(176,"code",6),a(177,"SELECT * FROM Blog.Post WHERE Date = '2023-01-01' AND Likes > 200 ORDER BY Title LIMIT 10;"),c()(),l(178,"blockquote",7)(179,"b"),a(180,"Note:"),c(),a(181," Linq queries are always executed against the database even if the entities returned already exist in the tracker. "),c()(),l(182,"nav",8)(183,"ul",9)(184,"li",10)(185,"a",11),v(186,"i",12),a(187," Previous "),c()(),l(188,"li",10)(189,"a",13),a(190," Next "),v(191,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/orm/save",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["orm-save"]],decls:70,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/query",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/relationships",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Saving Data"),c(),v(8,"hr"),l(9,"p"),a(10," Saving data is the process of persisting the changes made to the entities in the context to be applied to the database, such as adding new entities, removing entities, or modifying the properties of existing entities. "),c(),l(11,"h3"),a(12,"Adding Data"),c(),l(13,"p"),a(14," The "),l(15,"code"),a(16,"EntitySet::add(object $entity)"),c(),a(17," method adds a new entity instance to the context to be inserted into the database when calling the "),l(18,"code"),a(19,"EntityContext::save()"),c(),a(20," method. "),c(),l(21,"pre")(22,"code",4),a(23,'Title = "Post Title";\n$post->Content = "Some content...";\n$post->Date = new DateTime("now");\n\n$blog = new BlogContext();\n$blog->Post->add($post);\n$blog->Post->save();\n'),c()(),v(24,"br"),l(25,"h3"),a(26,"Deleting Data"),c(),l(27,"p"),a(28," The "),l(29,"code"),a(30,"EntitySet::remove(object $entity)"),c(),a(31," method attaches the selected entity instance to the context with deleted status, to be deleted from the database when calling the "),l(32,"code"),a(33,"EntityContext::save()"),c(),a(34," method. "),c(),l(35,"pre")(36,"code",4),a(37,"Post->find(1);\n$blog->Post->remove($post);\n$blog->save();\n"),c()(),v(38,"br"),l(39,"h3"),a(40,"Updating Data"),c(),l(41,"p"),a(42," To update a record in the database table, modify the values of the loaded entity instance, and when calling the method "),l(43,"code"),a(44,"EntityContext::save()"),c(),a(45,", the changes will be automatically detected and updated in the database. "),c(),l(46,"pre")(47,"code",4),a(48,'Post->find(1);\n$post->Content = "Updated content";\n$blog->save();\n'),c()(),v(49,"br"),l(50,"h3"),a(51,"Multiple Operations"),c(),l(52,"p"),a(53," You can combine multiple operations (Add/Update/Remove) and then persist all the changes in a single call to the "),l(54,"code"),a(55,"EntityContext::save()"),c(),a(56," method, and here an example: "),c(),l(57,"pre")(58,"code",4),a(59,'Title = "Post Title";\n$post->Content = "Some content...";\n$post->Date = new DateTime("now");\n$blog->Post->add($post);\n\n// Deletes post with id = 2\n$post = $blog->Post->find(2);\n$blog->Post->remove($post);\n\n// Updates post with id = 1\n$post = $blog->Post->find(1);\n$post->Content = "Updated content";\n\n// Persists all the operations\n$blog->Post->save();\n'),c()()(),l(60,"nav",5)(61,"ul",6)(62,"li",7)(63,"a",8),v(64,"i",9),a(65," Previous "),c()(),l(66,"li",7)(67,"a",10),a(68," Next "),v(69,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/orm/relationships",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["orm-relationships"]],decls:164,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"mb-2"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/save",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/migrations",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Relationships"),c(),v(8,"hr"),l(9,"p"),a(10," A relationship describes how entities are associated with each other, represented by a referential constraint that defines which entity is the principal or dependent role in the relationship, and there are many kinds of entity relationships, such as one-to-one, one-to-many, many-to-one, and many-to-many. "),c(),l(11,"ul")(12,"li",4)(13,"b"),a(14,"Dependent entity:"),c(),a(15,' sometimes called the "child" is the entity that contains the foreign key, which is a reference to the primary key of the principal entity.'),c(),l(16,"li",4)(17,"b"),a(18,"Principal entity:"),c(),a(19,' sometimes called the "parent" is the entity that contains the primary key, which is referenced as a foreign key in the dependent entity.'),c()(),l(20,"h3"),a(21,"Navigation property:"),c(),l(22,"p"),a(23," A navigation property is a public property presented in the principal or dependent entity that can have a reference type to single or multiple related entities to allow navigation from one entity to another. "),c(),l(24,"ul")(25,"li",4)(26,"b"),a(27,"Collection navigation property:"),c(),a(28," is a property that contains references to multiple related entities, used to navigate through one-to-many and many-to-many relationships, defined by the type "),l(29,"code"),a(30,"DevNet\\System\\Collections\\ICollection"),c(),a(31," with the annotation "),l(32,"code"),a(33,"DevNet\\System\\Generic"),c(),a(34," which specifies the type of the related entity collection."),c(),l(35,"li",4)(36,"b"),a(37,"Reference navigation property:"),c(),a(38," is a property that contains a reference to a single related entity, used to navigate through one-to-one and many-to-one relationships, has the same type as the type of the related entity, and may have the annotation "),l(39,"code"),a(40,"DevNet\\ORM\\Annotations\\ForeignKey"),c(),a(41," to define the name of the property that is used as a foreign key in the dependent entity."),c()(),l(42,"p"),a(43," The example below demonstrates an entity class named "),l(44,"code"),a(45,"Post"),c(),a(46," that has two navigation properties: a reference property called "),l(47,"code"),a(48,"Post::User"),c(),a(49,", and a collection property called "),l(50,"code"),a(51,"Post::Classifications"),c(),a(52,". "),c(),l(53,"pre")(54,"code",5),a(55,"Users->find($id);\n// Iterating through the posts that are related to the selected user.\nforeach($user->Posts as $post) {\n $post->Title;\n}\n"),c()(),v(83,"br"),l(84,"h3"),a(85,"One to one"),c(),l(86,"p"),a(87," A one-to-one relationship is one entity associated with at most one other entity by introducing a unique constraint to the foreign key to ensure only one dependent is related to the principal entity. "),c(),l(88,"p"),a(89," The following example represents an entity class "),l(90,"code"),a(91,"Profile"),c(),a(92," that has a one-to-one relationship with the entity class "),l(93,"code"),a(94,"User"),c(),a(95," presented in the previous example, and both entities have reference navigate to each other, except the entity "),l(96,"code"),a(97,"Profile"),c(),a(98," is a dependent entity has the property "),l(99,"code"),a(100,"Profile::UserId"),c(),a(101," defined as a foreign key. "),c(),l(102,"pre")(103,"code",5),a(104,"Users->find($id);\n// Getting the related Profile entity from the User entity.\n$profile = $user->Profile;\n// Getting the related User entity from the Profile entity.\n$user = $profile->User;\n"),c()(),v(110,"br"),l(111,"h3"),a(112,"Many to Many"),c(),l(113,"p"),a(114," A many-to-many relationship is any number of entities of the same entity type associated with any number of entities of another entity type, this relationship is composed of two on-to-many relationships, represented by a joining table that includes the foreign keys of both tables, and these foreign keys are composite primary keys. "),c(),l(115,"p"),a(116," Here is an example of an entity named "),l(117,"code"),a(118,"Category"),c(),a(119,", which has a many-to-many relationship with the entity "),l(120,"code"),a(121,"Post"),c(),a(122," demonstrated in the first example, through the junction entity "),l(123,"code"),a(124,"Classification"),c(),a(125,". "),c(),l(126,"pre")(127,"code",5),a(128,"Categories->find($id);\n// Iterates the related entities through the junction entity.\nforeach($category->Classifications as $classification) {\n $classification->Post->Title;\n}\n"),c()()(),l(154,"nav",6)(155,"ul",7)(156,"li",8)(157,"a",9),v(158,"i",10),a(159," Previous "),c()(),l(160,"li",8)(161,"a",11),a(162," Next "),v(163,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/orm/migrations",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["orm-migrations"]],decls:137,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],[1,"language-php"],[1,"text-justify"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/orm/relationships",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Migrations"),c(),v(8,"hr"),l(9,"p"),a(10," Migration provides a way to update the database schema incrementally, To keep it in sync with the changes in the data model, Without losing the existing data in the database. "),c(),l(11,"h3"),a(12,"Creating a migration"),c(),l(13,"p"),a(14," To create a migration, navigate to the root of your project and run the following command in the terminal: "),c(),l(15,"pre")(16,"code",4),a(17,"devnet add migration --name InitialMigration"),c()(),l(18,"p"),a(19," This will generate an empty migration class in the "),l(20,"samp"),a(21,'"Migrations"'),c(),a(22," folder, And the class file name will be prefixed by a timestamp date as an Id. "),c(),l(23,"p"),a(24," e.g. "),l(25,"samp"),a(26,'"/Migrations/20230701082859_InitialMigration.php"'),c()(),l(27,"pre")(28,"code",5),a(29,"createTable('User', function ($table) {\n $table->column('Id', 'integer')->identity(); // auto-increment\n $table->column('Fullname', 'string', 45)->nullable(false);\n $table->column('Username', 'string', 45)->nullable(false);\n $table->column('Password', 'string', 60)->nullable(false);\n $table->column('Role', 'string', 45)->default('User');\n $table->primaryKey('Id');\n $table->uniqueConstraint('Username');\n });\n\n $builder->createTable('Post', function ($table) {\n $table->column('Id', 'integer')->identity();\n $table->column('UserId', 'integer');\n $table->column('Title', 'string', 60)->nullable(false);\n $table->column('Content', 'text');\n $table->column('Date', 'date');\n $table->primaryKey('Id');\n $table->foreignKey('UserId')->references('User', 'Id')->onDelete('cascade');\n });\n\n $builder->createTable('Category', function ($table) {\n $table->column('Id', 'integer')->identity();\n $table->column('Name', 'string', 45)->nullable(false);\n $table->column('Description', 'string', 255)->nullable();\n $table->primaryKey('Id');\n $table->uniqueConstraint('Name');\n });\n\n $builder->createTable('PostCategory', function ($table) {\n $table->column('PostId', 'integer');\n $table->column('CategoryId', 'integer');\n $table->primaryKey('PostId', 'CategoryId');\n $table->foreignKey('PostId')->references('Post', 'Id')->onDelete('cascade');\n $table->foreignKey('CategoryId')->references('Category', 'Id')->onDelete('cascade');\n });\n }\n\n public function down(MigrationBuilder $builder): void\n {\n // if the constraint ON DELETE is configured as \"strict\" and which is the default configuration,\n // the child table must be dropped before the parent table, otherwise will throw an error.\n $builder->dropTable('PostCategory');\n $builder->dropTable('Category');\n $builder->dropTable('Post');\n $builder->dropTable('User');\n }\n}\n"),c()(),v(66,"br"),l(67,"h4"),a(68,"Updating the database schema"),c(),l(69,"p"),a(70," If the domain entity has been changed, it might be necessary to update the database schema to match it, and this can be done by creating another migration to make necessary alterations, as shown in the example below: "),c(),l(71,"pre")(72,"code",5),a(73,"alterTable('User', function ($table) {\n $table->addColumn('Email', 'string', 45);\n $table->addColumn('Phone', 'string', 15);\n $table->addColumn('Location', 'string', 45);\n });\n\n $builder->alterTable('Category', function ($table) {\n $table->renameColumn('Description', 'Definition');\n });\n\n $builder->renameTable('PostCategory', 'Classification');\n }\n\n public function down(MigrationBuilder $builder): void\n {\n $builder->alterTable('User', function ($table) {\n $table->removeColumn('Fullname');\n $table->removeColumn('Email';\n $table->removeColumn('Phone');\n $table->removeColumn('Location');\n });\n\n $builder->alterTable('Category', function ($table) {\n $table->renameColumn('Definition', 'Description');\n });\n\n $builder->renameTable('Classification', 'PostCategory');\n }\n}\n"),c()(),v(74,"br"),l(75,"h4"),a(76,"Seeding the database"),c(),l(77,"p",6),a(78," Seed data is data that populates the database at the time of migration execution, used to provide initial values for lookup lists or demo or test purposes, etc... "),c(),l(79,"pre")(80,"code",5),a(81," $name) {\n $builder->insertData('Category', [\n 'Id' => ++$id,\n 'Name' => $name\n ]);\n }\n }\n\n public function down(MigrationBuilder $builder): void\n {\n for ($i = 1; $i <= 4; $i++) {\n $builder->deleteData('Category', ['Id' => $i]);\n }\n }\n}\n"),c()(),v(82,"br"),l(83,"h3"),a(84,"Applying migrations"),c(),l(85,"p"),a(86," When you run the migration command for the first time, a migration history table will be created, which tracks the history of the applied migrations to determine later whether to upgrade or downgrade the migrations. "),c(),l(87,"p"),a(88," If the migration target is higher than the last migration applied, it will upgrade to the migration target. On the other hand, if it's lower, it will downgrade to the migration target. However, if the migration target has already been applied, then no action will be taken. "),c(),l(89,"p"),a(90," And here is an example shows how to run the migrate command targeting the migration that we created earlier: "),c(),l(91,"pre")(92,"code",4),a(93,"devnet migrate --target 20230701082859_InitialMigration"),c()(),l(94,"blockquote",7)(95,"b"),a(96,"Important:"),c(),a(97," Make sure to specify the database configuration in the "),l(98,"samp")(99,"b"),a(100,"settings.json"),c()(),a(101," before running the "),l(102,"code"),a(103,"migrate"),c(),a(104," command or pass it to the command as parameters using the options: "),l(105,"code"),a(106,"--provider"),c(),a(107," and "),l(108,"code"),a(109,"--connection"),c(),a(110,". "),c(),v(111,"br"),l(112,"h4"),a(113,"Applying all migrations"),c(),l(114,"p"),a(115," When you run the migration command without specifying the migration target, it will apply all migrations or continue from the latest migration applied. If all migrations have already been applied, no action will be taken. "),c(),l(116,"pre")(117,"code",4),a(118,"devnet migrate"),c()(),v(119,"br"),l(120,"h4"),a(121,"Reversing all migrations"),c(),l(122,"p"),a(123," To reverse all migrations to roll back to the state zero, run the migrate command with a target of 0 (zero), like this: "),c(),l(124,"pre")(125,"code",4),a(126,"devnet migrate --target 0"),c()()(),l(127,"nav",8)(128,"ul",9)(129,"li",10)(130,"a",11),v(131,"i",12),a(132," Previous "),c()(),l(133,"li",10)(134,"a",13),a(135," Next "),v(136,"i",14),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/orm",redirectTo:"docs/orm/start",pathMatch:"full"}];let u4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(l4),en]})}return e})(),d4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,u4,Xo]})}return e})();const h4=[{path:"docs/security/overview",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["security-overview"]],decls:40,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-shell"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/web/dependency",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/authentication",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Overview"),c(),v(8,"hr"),l(9,"p"),a(10," DevNet Security package provides several security libraries for building secure web applications and APIs, based on the following features: "),c(),l(11,"ul")(12,"li"),a(13,"Cookie-based Authentication"),c(),l(14,"li"),a(15,"Token-based Authentication"),c(),l(16,"li"),a(17,"Role-based Authorization"),c(),l(18,"li"),a(19,"Policy-based Authorization"),c(),l(20,"li"),a(21,"CSRF Prevention"),c()(),v(22,"br"),l(23,"h3"),a(24,"Requirement"),c(),l(25,"p"),a(26," DevNet Security package is part of the DevNet Framework, and if it's not already installed on your system or project, you still can install it using the composer command line: "),c(),l(27,"pre")(28,"code",4),a(29,"composer require devnet/security"),c()()(),l(30,"nav",5)(31,"ul",6)(32,"li",7)(33,"a",8),v(34,"i",9),a(35," Previous "),c()(),l(36,"li",7)(37,"a",10),a(38," Next "),v(39,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/security/authentication",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["security-authentication"]],decls:86,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],[1,"alert","alert-warning"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/overview",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/authorization",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Authentication"),c(),v(8,"hr"),l(9,"p"),a(10," Authentication is the process of verifying the identity of the user who accesses a web application. This may require the user to input a username and password to log into the web application. "),c(),l(11,"p"),a(12," Authentication is handled by the authentication middleware, which uses the registered authentication service that can have multiple authentication schemes, and each scheme is related to an authentication handler to determine later in the authorization policies which authentication handler should be used to authenticate the user and provides a "),l(13,"code"),a(14,"ClaimsIdentity"),c(),a(15," that represents the user in the request context. "),c(),l(16,"h3"),a(17,"Configuration"),c(),l(18,"p"),a(19," The authentication service is added to the application by calling the "),l(20,"code"),a(21,"addAuthentication()"),c(),a(22," method, and then authentication schemes can be specified by calling one of the following methods: "),c(),l(23,"ul")(24,"li")(25,"code"),a(26,"AddCookie()"),c(),a(27," for cookie-based authentication"),c(),l(28,"li")(29,"code"),a(30,"AddJwtBearer()"),c(),a(31," for token-based authentication"),c()(),l(32,"p"),a(33," The authentication middleware is used in the application by calling the "),l(34,"code"),a(35,"useAuthentication()"),c(),a(36," method and must be called before any middleware that depends on the user being authenticated. "),c(),l(37,"p"),a(38," This example shows the configuration of both approaches, cookie-based and token-based authentication, but you can choose one of the two approaches. "),c(),l(39,"pre")(40,"code",4),a(41,'register(function ($services) {\n // Adding authentication service\n $services->addAuthentication(function ($builder) {\n // Adding cookie-based authentication handler\n $builder->addCookie(AuthenticationScheme::CookieSession, function ($options) {\n // Optimally you can modify the following default options.\n $options->CookieName = "Identity";\n $options->CookiePath = "/";\n $options->ExpireTime = TimeSpan::fromDays(7);\n });\n // Adding token-based authentication handler\n $builder->addJwtBearer(AuthenticationScheme::JwtBearer, function ($options) {\n $options->SecurityKey = "jwt security key";\n // Optionally you can configure the following validation options\n $options->Issuer = "127.0.0.1:8000"; // server address\n $options->Audience = "127.0.0.1:8080"; // client address\n });\n });\n });\n \n $host = $builder->build();\n\n $host->start(function ($app) {\n $app->UseExceptionHandler();\n $app->useRouter();\n // Adding the authentication middleware before the endpoint middleware.\n $app->useAuthentication();\n $app->useEndpoint(function ($routes) {\n // Routes\n });\n });\n }\n}\n'),c()(),v(42,"br"),l(43,"h3"),a(44,"Cookie-based Authentication"),c(),l(45,"p"),a(46," The cookie-based authentication is a stateful process, which means that the server stores the user session data and sends to the client a cookie that contains a session reference, which is often stored in the browser and sent back to the server with every request to authenticate the client requests and maintain session information on the server over the stateless HTTP protocol. "),c(),l(47,"p"),a(48," The following example demonstrates the working process of cookie-based authentication using "),l(49,"code"),a(50,"ClaimsIdentity"),c(),a(51," and the "),l(52,"code"),a(53,"IAuthentication"),c(),a(54," service to log in and log out the user. "),c(),l(55,"pre")(56,"code",4),a(57,"useEndpoint(function($routes) {\n $routes->mapPost(\"/login\", function(HttpContext $context) {\n $user = $context->User;\n if (!$user->isAuthenticated()) {\n $form = $context->Request->Form;\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Username == $form->getValue('username'))->first();\n if (!$user || !password_verify($form->getValue('password'), $user->Password)) {\n return $context->Response->setStatusCode(401);\n }\n\n $identity = new ClaimsIdentity(AuthenticationScheme::CookieSession);\n $identity->addClaim(new Claim('Username' , $form->getValue('username')));\n $identity->addClaim(new Claim('Role', $user->Role));\n\n $authentication = $context->Services->getService(IAuthentication::class);\n $authentication->signIn($identity, $form->getValue('remember'));\n }\n\n return $context->Response->redirect('/account');\n });\n\n $routes->mapGet(\"/logout\", function(HttpContext $context) {\n $authentication = $context->Services->getService(IAuthentication::class);\n $authentication->signOut();\n return $context->Response->redirect('/login');\n })\n});"),c()(),v(58,"br"),l(59,"h3"),a(60,"Token-based Authentication"),c(),l(61,"p"),a(62," The token-based authentication is a stateless process. This means that the server does not store any session information about the user on its side. Instead, it sends to the client an encrypted token, typically JWT (JSON Web Token), that contains the user information and expiration time, and the client stores this token and sends it back to the server with every request, where the server does the token validation and grants access to the user. "),c(),l(63,"p"),a(64," The following example demonstrates the working process of token-based authentication using ClaimsIdentity and JwtSecurityTokenHandler to generate a JWT token and send it to the client to send it back later for authentication. "),c(),l(65,"p"),a(66," Due to the limitations of this approach, there is no option for remembering or logging out the user on the server side. However, you can easily log out by removing the token from your request header on the client side. "),c(),l(67,"pre")(68,"code",4),a(69,"useEndpoint(function($routes) {\n $routes->mapGet(\"/login\", (function(HttpContext $context) {\n $user = $context->User;\n if (!$user->isAuthenticated()) {\n $form = $context->Request->Form;\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Username == $form->getValue('username'))->first();\n if (!$user || $user->Password != $form->getValue('password')) {\n return $context->Response->setStatusCode(401);\n }\n\n $claims = new ClaimsIdentity(AuthenticationScheme::JwtBearer);\n $claims->addClaim(new Claim('sub', $form->getValue('username')));\n $claims->addClaim(new Claim('role', $user->Role));\n $claims->addClaim(new Claim('iss', '127.0.0.1:8000'));\n $claims->addClaim(new Claim('aud', '127.0.0.1:8080'));\n\n // The asymmetric encryption RSA not supported yet, only the symmetric encryption HSA for now.\n $token = new JwtSecurityToken($claims, 'HS256', new DateTime('7 days'));\n $jwtHandler = new JwtSecurityTokenHandler();\n $signedToken = $jwtHandler->writeToken($token, \"jwt security key\");\n\n // Need to send the token to the client.\n return $context->Response->WriteJsonAsync(['jwt' => $signedToken]);\n }\n\n return $context->Response->redirect('/account');\n }));\n});"),c()(),l(70,"blockquote",5)(71,"b"),a(72,"Important:"),c(),a(73," The client should send back the JWT token in the Authorization header using the Bearer schema in the following format: "),l(74,"code"),a(75,"Authorization: Bearer "),c()()(),l(76,"nav",6)(77,"ul",7)(78,"li",8)(79,"a",9),v(80,"i",10),a(81," Previous "),c()(),l(82,"li",8)(83,"a",11),a(84," Next "),v(85,"i",12),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/security/authorization",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["security-authorization"]],decls:135,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"language-php"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/authentication",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/security/antiforgery",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"Authorization"),c(),v(8,"hr"),l(9,"p"),a(10," Authorization is the process that determines if the user has permission to access or use resources, and usually is coupled with authentication so that the server has some concept of who the user is before determining what the user can do. "),c(),l(11,"p"),a(12," The authorization is controlled by the "),l(13,"code"),a(14,"Authorize"),c(),a(15," filter which is responsible for enforcing the authorization policy on the endpoint action. It uses the "),l(16,"code"),a(17,"IAuthorization"),c(),a(18," service to evaluate the policy and decide which rule applies to the action. The rule can allow or deny access to the action based on various criteria. "),c(),l(19,"h3"),a(20,"Configuration"),c(),l(21,"p"),a(22," To use the authorization feature in your application, you need first to add the "),l(23,"code"),a(24,"IAuthorization"),c(),a(25," service to the dependency, which also depends on the "),l(26,"code"),a(27,"IAuthentication"),c(),a(28," service, and the code below shows a simple way to add this feature. "),c(),l(29,"pre")(30,"code",4),a(31,"register(function ($services) {\n // The authentication service is needed for authorization service.\n $services->addAuthentication(function ($builder) {\n $builder->addCookie();\n });\n // Adding the authorization service\n $services->addAuthorization();\n });\n ...\n }\n}"),c()(),v(32,"br"),l(33,"h3"),a(34,"Simple Authorization"),c(),l(35,"p"),a(36," By default, applying the "),l(37,"code"),a(38,"Authorize"),c(),a(39," filter on the endpoint action without specifying any option will restrict the execution of that action only for authenticated users, as shown in the code example below. "),c(),l(40,"pre")(41,"code",4),a(42,'useEndpoint(function($routes) {\n $routes->mapGet("/account", function(HttpContext $context) {\n $user = $context->User;\n $claim = $user->findClaim(fn ($claim) => $claim->Type == "name");\n $name = $claim ? $claim->Value : null;\n return $context->Response->writeAsync("Welcome {$name}");\n })\n // Adding the authorize filter.\n ->addFilter(new Authorize());\n});'),c()(),l(43,"p"),a(44," You can also apply the "),l(45,"code"),a(46,"Authorize"),c(),a(47," filter to a controller's action methods using the attribute syntax. "),c(),l(48,"pre")(49,"code",4),a(50,"Context->User;\n $claim = $user->findClaim(fn ($claim) => $claim->Type == \"name\");\n $name = $claim ? $claim->Value : null;\n return $this->content(\"Welcome {$name}\");\n }\n\n #[Route('/register', 'GET')]\n public function register(): IActionResult\n {\n return $this->view();\n }\n\n #[Route('/account/create', 'POST')]\n public function create(Registration $form): IActionResult\n {\n if (!$form->isValid()) {\n return $this->redirect('/register');\n }\n\n $data = [];\n if (file_exists(__DIR__ . '/../../data.json')) {\n $json = file_get_contents(__DIR__ . '/../../data.json');\n $data = json_decode($json);\n }\n\n $user = new User();\n $user->Username = $form->Username;\n $user->Password = password_hash($form->Password, PASSWORD_DEFAULT);\n $user->Role = \"User\";\n\n $data[] = $user;\n $json = json_encode($data, JSON_PRETTY_PRINT);\n file_put_contents(__DIR__ . '/../../data.json', $json);\n\n return $this->content(\"The user was successfully created.\");\n }\n}"),c()(),l(51,"p"),a(52," Another way to restrict access to the controller's action method is to use the Authorize attribute on the entire controller class, which applies the Authorize filter to all the action methods in the controller. But, If you want to exclude some action methods from that, you can use the "),l(53,"code"),a(54,'Authorize("Anonymous")'),c(),a(55," attribute on those methods to override the class-level filter that requires the user to be authenticated and allow access to anyone. "),c(),l(56,"p"),a(57," In this example, the Authorize filter is applied to all controller methods except for the "),l(58,"code"),a(59,"register()"),c(),a(60," and "),l(61,"code"),a(62,"login()"),c(),a(63," methods. "),c(),l(64,"pre")(65,"code",4),a(66,"content(\"Hello Administrator\");\n }\n}"),c()(),v(92,"br"),l(93,"h4"),a(94,"Authorization with multiple roles"),c(),l(95,"p"),a(96," Multiple roles can be specified as an array of strings using the named argument "),l(97,"code"),a(98,"roles:"),c(),a(99," in the Authorize attribute, and the user must have at least one of these roles to access the resources. "),c(),l(100,"pre")(101,"code",4),a(102,"content(\"Hello to either Administrator or Manager\");\n }\n}"),c()(),l(103,"p"),a(104," When applying multiple Authorize attributes, the associated resources can only be accessed if the user satisfies all specified roles, unlike the previous example, where the user only needs to have at least one of the roles. "),c(),l(105,"pre")(106,"code",4),a(107,"content(\"Hello to Administrator and Manager\");\n }\n}"),c()(),v(108,"br"),l(109,"h3"),a(110,"Policy-based Authorization"),c(),l(111,"p"),a(112," Policy-based authorization is a way of creating authorization rules that depend on claims requirements that the user must satisfy to access a resource. It can require any user's claims such as ID, Name, Email, Role, etc., unlike role-based authorization, which is just a special case of policy-based authorization that only requires the role claim. "),c(),l(113,"p"),a(114," To use a policy in your application, you must first define it in the Authorization service by calling the addPolicy() method, which allows you to specify a group of claim requirements, as shown in the following example. "),c(),l(115,"pre")(116,"code",4),a(117,"register(function ($services) {\n $services->addAuthentication(function ($builder) {\n $builder->addCookie();\n });\n // Adding the authorization service with policy\n $services->addAuthorization(function($config) {\n $config->addPolicy(\"Administration\", function ($policy) {\n $policy->RequireClaim('EmployeeNumber');\n $policy->RequireClaim('Role', ['Administrator', 'Manager']);\n }\n });\n });\n ...\n }\n}\n"),c()(),l(118,"p"),a(119," And here is an example of how to apply a policy in the Authorize attribute using the named argument "),l(120,"code"),a(121,"policy:"),c()(),l(122,"pre")(123,"code",4),a(124,"content(\"Administration space\");\n }\n}"),c()()(),l(125,"nav",5)(126,"ul",6)(127,"li",7)(128,"a",8),v(129,"i",9),a(130," Previous "),c()(),l(131,"li",7)(132,"a",10),a(133," Next "),v(134,"i",11),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/security/antiforgery",component:(()=>{class e{constructor(){}ngOnInit(){Ue.highlightAll()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["security-antiforgery"]],decls:120,vars:0,consts:[[1,"container","pt-3"],[1,"row"],["id","sidebar",2,"width","260px"],["id","content",1,"flex-grow-1",2,"width","400px"],[1,"mb-2"],[1,"language-html"],[1,"language-php"],[1,"language-php-template"],[1,"language-javascript"],["aria-label","Page navigation",1,"no-print"],[1,"nav-page"],[1,"nav-page-item"],["routerLink","/docs/security/authorization",1,"nav-page-link"],[1,"chevron","left"],["routerLink","/docs/orm/start",1,"nav-page-link"],[1,"chevron","right"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1)(2,"div",2),v(3,"app-sidebar"),c(),l(4,"div",3)(5,"article")(6,"h1"),a(7,"CSRF Prevention"),c(),v(8,"hr"),l(9,"p"),a(10," Cross-site request forgery, abbreviated as CSRF or XSRF and also known as a one-click attack or session riding, is a malicious attack that takes advantage of a user's previously authenticated session to execute unwanted actions by manipulating the interaction between a client browser and a trusted web application. "),c(),l(11,"p"),a(12," To better understand the CSRF attack, consider the following scenario: "),c(),l(13,"ul")(14,"li",4),a(15," A user signs into his account on a vulnerable website, which trusts any request received with a valid authentication cookie. "),c(),l(16,"li",4),a(17," Then, the user visits a malicious site that contains a fake HTML form to win a prize, but in the background, it posts to the vulnerable website like the following example: "),c()(),l(18,"pre")(19,"code",5),a(20,'

Congratulations! You\'re a Winner!

\n
\n \n \n
\n'),c()(),l(21,"ul")(22,"li",4),a(23," When the user clicks on the submit button. The browser sends a request that includes the authentication cookie for the requested domain. "),c(),l(24,"li",4),a(25," The vulnerable server trusts the request with the authentication context and allows any action that an authenticated user can perform. "),c()(),l(26,"p"),a(27," In addition to this scenario, the malicious site could run a script that automatically submits the form by sending the form submission as an AJAX request. "),c(),v(28,"br"),l(29,"h3"),a(30,"AntiForgery"),c(),l(31,"p"),a(32," To prevent cross-site request forgery attacks, the DevNet framework provides the "),l(33,"code"),a(34,"AntiForgery"),c(),a(35," service that generates a CSRF token, which should be included in the form data or in the request header to be verified by the server when the form is submitted. "),c(),l(36,"p"),a(37," To use the "),l(38,"code"),a(39,"AntiForgery"),c(),a(40," service across your application, you need to register it as a dependency in your application services with the help of the extension method "),l(41,"code"),a(42,"addAntiforgory()"),c(),a(43," inside the method "),l(44,"code"),a(45,"register()"),c(),a(46," of the "),l(47,"code"),a(48,"WebHostBuilder"),c(),a(49," and have the option to customize the default configurations. "),c(),l(50,"pre")(51,"code",6),a(52,"register(function ($services) {\n // Add antiForgery service.\n $services->addAntiForgery();\n });\n ...\n }\n}\n"),c()(),v(53,"br"),l(54,"h3"),a(55,"X-CSRF-TOKEN"),c(),l(56,"p"),a(57," In traditional HTML-based applications, the AntiForgery tokens are passed to the server using hidden form fields, and usually, the token used in this technique is called "),l(58,"samp"),a(59,"X-CSRF-TOKEN"),c(),a(60,". "),c(),l(61,"p"),a(62," After registering the AntiForgery service with the MVC web application, it will be injected into the view so that you can generate a token in the HTML form. "),c(),l(63,"pre")(64,"code",7),a(65,'
\n Username ?>" />\n \n \n
\n'),c()(),l(66,"p"),a(67," The controller in this example sends the view that is presented above with an Antiforgory token via the "),l(68,"code"),a(69,"edit()"),c(),a(70," method when the user requests to edit his account, and when the user submits the HTML form, the controller receives the request via the "),l(71,"code"),a(72,"update()"),c(),a(73," method, which is decorated with the "),l(74,"code"),a(75,"DevNet\\Security\\Tokens\\Csrf\\Validate"),c(),a(76," attribute to check if the request is trusted before updating the data. "),c(),l(77,"pre")(78,"code",6),a(79,"addRange($data);\n\n $user = $users->where(fn ($user) => $user->Id == $id)->first();\n if (!$user) {\n Throw \\Exception(\"page not found!\", 404);\n }\n return $this->view(['user' => $user]);\n }\n\n // Adds AntiForgery validation filter as an attribute.\n #[Validate]\n #[Route(path: '/account/update/{id}', method: 'POST')]\n public function update(int $id, User $form): IActionResult\n {\n $json = file_get_contents(__DIR__ . '/path/to/data.json');\n $data = json_decode($json, true);\n $users = new ArrayList('object');\n $users->addRange($data);\n\n $user = $users->where(fn ($user) => $user->Id == $id)->first();\n if (!$user) {\n Throw \\Exception(\"page not found!\", 404);\n }\n $user->Username = $from->Username;\n $user->Email = $from->Username;\n $json = json_encode($users->toArray(), JSON_PRETTY_PRINT);\n file_put_contents('path/to/data.json', $json);\n\n return $this->statusCode(200);\n }\n}\n"),c()(),v(80,"br"),l(81,"h3"),a(82,"X-XSRF-TOKEN"),c(),l(83,"p"),a(84," In modern JavaScript-based applications, the AntiForgery tokens are sent to the server via the AJAX request headers, and usually, the token used in this technique is called "),l(85,"samp"),a(86,"X-XSRF-TOKEN"),c(),a(87,". "),c(),l(88,"p"),a(89," In the following example, when the user requests the "),l(90,"samp"),a(91,'"/account/create"'),c(),a(92," endpoint to create a new account, the server returns an HTML form response with "),l(93,"samp"),a(94,"XSRF-TOKEN"),c(),a(95," as a cookie, which must be sent back to the server via the AJAX request header when the user submits the form to the "),l(96,"samp"),a(97,'"/account/store"'),c(),a(98," endpoint, which this one has an Antiforgory filter to check if the request is trusted or not before storing the data. "),c(),l(99,"pre")(100,"code",6),a(101,'useEndpoint(function($routes) {\n $routes->mapGet("/account/create", (function(HttpContext $context) {\n $token = $context->AntiForgery->getToken();\n $context.Response->Cookies->add("XSRF-TOKEN", token);\n $html = file_get_contents("path/to/editFrom.phtml");\n $context->Response->Body->write($html);\n }));\n\n $routes.MapPost("/account/store", (function(HttpContext $context) {\n $form = $context->Request->Form;\n $user = new User();\n $user->Username = $form->getValue(\'username\');\n $user->Password = password_hash($form->getValue(\'password\'), PASSWORD_DEFAULT);\n\n $json = file_get_contents(\'path/to/data.json\');\n $data = json_decode($json);\n\n $data[] = $user;\n $json = json_encode($data, JSON_PRETTY_PRINT);\n file_put_contents(\'path/to/data.json\', $json);\n $context->Response->setStatusCode(200);\n })\n // Adds AntiForgery validation filter to the endpoint "/account/store".\n ->addFilter(Validate::class);\n});'),c()(),l(102,"p"),a(103," Here is a Javascript example that uses the AJAX request to send back the "),l(104,"samp"),a(105,"XSRF-TOKEN"),c(),a(106," to the server after receiving it from the server via the response cookie. "),c(),l(107,"pre")(108,"code",8),a(109,'const xsrfToken = document.cookie\n .split("; ")\n .find(row => row.startsWith("XSRF-TOKEN="))\n .split("=")[1];\n\nvar request = new XMLHttpRequest();\nrequest.open("POST", "https://example.com/account/edit");\nrequest.setRequestHeader("X-XSRF-TOKEN", xsrfToken);\nrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");\nrequest.send("username=user&email=user@example.com");\nrequest.onload = function() {\n console.log(this.status);\n }\n'),c()()(),l(110,"nav",9)(111,"ul",10)(112,"li",11)(113,"a",12),v(114,"i",13),a(115," Previous "),c()(),l(116,"li",11)(117,"a",14),a(118," Next "),v(119,"i",15),c()()()()()()())},dependencies:[xe,ze]})}return e})()},{path:"docs/security",redirectTo:"docs/security/overview",pathMatch:"full"}];let p4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[en.forChild(h4),en]})}return e})(),f4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e});static#n=this.\u0275inj=Me({imports:[Eo,p4,Xo]})}return e})(),g4=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-header"]],decls:19,vars:0,consts:[[1,"navbar","navbar-expand-lg","navbar-light","bg-white","border-bottom","shadow-sm"],[1,"container"],["routerLink","/",1,"navbar-brand"],["type","button","data-bs-toggle","collapse","data-bs-target","#navbarSupportedContent","aria-controls","navbarSupportedContent","aria-expanded","false","aria-label","Toggle navigation",1,"navbar-toggler"],[1,"navbar-toggler-icon"],["id","navbarSupportedContent",1,"collapse","navbar-collapse"],[1,"navbar-nav","me-auto","mb-2","mb-lg-0"],[1,"nav-item"],["aria-current","page","routerLink","/docs",1,"nav-link","active"],[1,"navbar-nav","ms-auto","mb-2","mb-lg-0"],[1,"nav-item","dropdown"],["href","#","id","navbarDropdown","role","button","data-bs-toggle","dropdown","aria-expanded","false",1,"nav-link","dropdown-toggle"],["aria-labelledby","navbarDropdown",1,"dropdown-menu","dropdown-menu-end"],["routerLink","/docs",1,"dropdown-item"]],template:function(r,o){1&r&&(l(0,"nav",0)(1,"div",1)(2,"a",2),a(3,"DevNet"),c(),l(4,"button",3),v(5,"span",4),c(),l(6,"div",5)(7,"ul",6)(8,"li",7)(9,"a",8),a(10,"Documentation"),c()()(),l(11,"ul",9)(12,"li",10)(13,"a",11),a(14," Versions "),c(),l(15,"ul",12)(16,"li")(17,"a",13),a(18,"v1.1.0"),c()()()()()()()())},dependencies:[xe]})}return e})(),m4=(()=>{class e{constructor(){}ngOnInit(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-footer"]],decls:3,vars:0,consts:[[1,"text-muted","bg-white","border-top","py-3"],[1,"container"]],template:function(r,o){1&r&&(l(0,"div",0)(1,"div",1),a(2," \xa9 2023 - DevNet by M. Moussaoui. "),c()())}})}return e})(),v4=(()=>{class e{constructor(){this.title="devnet"}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275cmp=De({type:e,selectors:[["app-root"]],decls:6,vars:0,consts:[["role","main"],[1,"mt-auto"]],template:function(r,o){1&r&&(l(0,"header"),v(1,"app-header"),c(),l(2,"main",0),v(3,"router-outlet"),c(),l(4,"footer",1),v(5,"app-footer"),c())},dependencies:[rg,g4,m4]})}return e})(),y4=(()=>{class e{static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275mod=wt({type:e,bootstrap:[v4]});static#n=this.\u0275inj=Me({imports:[mL,J3,n4,i4,c4,d4,f4,q3,Xo]})}return e})();fL().bootstrapModule(y4).catch(e=>console.error(e))},687:(G,$,g)=>{var w=g(653);w.registerLanguage("xml",g(133)),w.registerLanguage("bash",g(976)),w.registerLanguage("c",g(489)),w.registerLanguage("cpp",g(769)),w.registerLanguage("csharp",g(945)),w.registerLanguage("css",g(67)),w.registerLanguage("markdown",g(823)),w.registerLanguage("diff",g(217)),w.registerLanguage("ruby",g(130)),w.registerLanguage("go",g(172)),w.registerLanguage("graphql",g(689)),w.registerLanguage("ini",g(530)),w.registerLanguage("java",g(42)),w.registerLanguage("javascript",g(593)),w.registerLanguage("json",g(28)),w.registerLanguage("kotlin",g(567)),w.registerLanguage("less",g(867)),w.registerLanguage("lua",g(342)),w.registerLanguage("makefile",g(158)),w.registerLanguage("perl",g(995)),w.registerLanguage("objectivec",g(14)),w.registerLanguage("php",g(504)),w.registerLanguage("php-template",g(779)),w.registerLanguage("plaintext",g(643)),w.registerLanguage("python",g(344)),w.registerLanguage("python-repl",g(152)),w.registerLanguage("r",g(690)),w.registerLanguage("rust",g(16)),w.registerLanguage("scss",g(382)),w.registerLanguage("shell",g(54)),w.registerLanguage("sql",g(208)),w.registerLanguage("swift",g(491)),w.registerLanguage("yaml",g(917)),w.registerLanguage("typescript",g(585)),w.registerLanguage("vbnet",g(735)),w.registerLanguage("wasm",g(946)),w.HighlightJS=w,w.default=w,G.exports=w},653:G=>{var $={exports:{}};function g(b){return b instanceof Map?b.clear=b.delete=b.set=function(){throw new Error("map is read-only")}:b instanceof Set&&(b.add=b.clear=b.delete=function(){throw new Error("set is read-only")}),Object.freeze(b),Object.getOwnPropertyNames(b).forEach(function(D){var z=b[D];"object"==typeof z&&!Object.isFrozen(z)&&g(z)}),b}$.exports=g,$.exports.default=g;class w{constructor(D){void 0===D.data&&(D.data={}),this.data=D.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function O(b){return b.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function R(b,...D){const z=Object.create(null);for(const _e in b)z[_e]=b[_e];return D.forEach(function(_e){for(const pt in _e)z[pt]=_e[pt]}),z}const k=b=>!!b.scope||b.sublanguage&&b.language;class A{constructor(D,z){this.buffer="",this.classPrefix=z.classPrefix,D.walk(this)}addText(D){this.buffer+=O(D)}openNode(D){if(!k(D))return;let z="";z=D.sublanguage?`language-${D.language}`:((b,{prefix:D})=>{if(b.includes(".")){const z=b.split(".");return[`${D}${z.shift()}`,...z.map((_e,pt)=>`${_e}${"_".repeat(pt+1)}`)].join(" ")}return`${D}${b}`})(D.scope,{prefix:this.classPrefix}),this.span(z)}closeNode(D){k(D)&&(this.buffer+="
")}value(){return this.buffer}span(D){this.buffer+=``}}const _=(b={})=>{const D={children:[]};return Object.assign(D,b),D};class x{constructor(){this.rootNode=_(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(D){this.top.children.push(D)}openNode(D){const z=_({scope:D});this.add(z),this.stack.push(z)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(D){return this.constructor._walk(D,this.rootNode)}static _walk(D,z){return"string"==typeof z?D.addText(z):z.children&&(D.openNode(z),z.children.forEach(_e=>this._walk(D,_e)),D.closeNode(z)),D}static _collapse(D){"string"!=typeof D&&D.children&&(D.children.every(z=>"string"==typeof z)?D.children=[D.children.join("")]:D.children.forEach(z=>{x._collapse(z)}))}}class V extends x{constructor(D){super(),this.options=D}addKeyword(D,z){""!==D&&(this.openNode(z),this.addText(D),this.closeNode())}addText(D){""!==D&&this.add(D)}addSublanguage(D,z){const _e=D.root;_e.sublanguage=!0,_e.language=z,this.add(_e)}toHTML(){return new A(this,this.options).value()}finalize(){return!0}}function U(b){return b?"string"==typeof b?b:b.source:null}function j(b){return Z("(?=",b,")")}function W(b){return Z("(?:",b,")*")}function J(b){return Z("(?:",b,")?")}function Z(...b){return b.map(z=>U(z)).join("")}function be(...b){return"("+(function X(b){const D=b[b.length-1];return"object"==typeof D&&D.constructor===Object?(b.splice(b.length-1,1),D):{}}(b).capture?"":"?:")+b.map(_e=>U(_e)).join("|")+")"}function Ce(b){return new RegExp(b.toString()+"|").exec("").length-1}const Se=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function $e(b,{joinWith:D}){let z=0;return b.map(_e=>{z+=1;const pt=z;let ft=U(_e),K="";for(;ft.length>0;){const Q=Se.exec(ft);if(!Q){K+=ft;break}K+=ft.substring(0,Q.index),ft=ft.substring(Q.index+Q[0].length),"\\"===Q[0][0]&&Q[1]?K+="\\"+String(Number(Q[1])+pt):(K+=Q[0],"("===Q[0]&&z++)}return K}).map(_e=>`(${_e})`).join(D)}const ce="[a-zA-Z]\\w*",He="[a-zA-Z_]\\w*",lt="\\b\\d+(\\.\\d+)?",Fe="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",$t="\\b(0b[01]+)",vt={begin:"\\\\[\\s\\S]",relevance:0},or={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[vt]},tn={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[vt]},Dn=function(b,D,z={}){const _e=R({scope:"comment",begin:b,end:D,contains:[]},z);_e.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const pt=be("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return _e.contains.push({begin:Z(/[ ]+/,"(",pt,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),_e},ir=Dn("//","$"),Hn=Dn("/\\*","\\*/"),kn=Dn("#","$");var qt=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:ce,UNDERSCORE_IDENT_RE:He,NUMBER_RE:lt,C_NUMBER_RE:Fe,BINARY_NUMBER_RE:$t,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(b={})=>{const D=/^#![ ]*\//;return b.binary&&(b.begin=Z(D,/.*\b/,b.binary,/\b.*/)),R({scope:"meta",begin:D,end:/$/,relevance:0,"on:begin":(z,_e)=>{0!==z.index&&_e.ignoreMatch()}},b)},BACKSLASH_ESCAPE:vt,APOS_STRING_MODE:or,QUOTE_STRING_MODE:tn,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT:Dn,C_LINE_COMMENT_MODE:ir,C_BLOCK_COMMENT_MODE:Hn,HASH_COMMENT_MODE:kn,NUMBER_MODE:{scope:"number",begin:lt,relevance:0},C_NUMBER_MODE:{scope:"number",begin:Fe,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:$t,relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[vt,{begin:/\[/,end:/\]/,relevance:0,contains:[vt]}]}]},TITLE_MODE:{scope:"title",begin:ce,relevance:0},UNDERSCORE_TITLE_MODE:{scope:"title",begin:He,relevance:0},METHOD_GUARD:{begin:"\\.\\s*"+He,relevance:0},END_SAME_AS_BEGIN:function(b){return Object.assign(b,{"on:begin":(D,z)=>{z.data._beginMatch=D[1]},"on:end":(D,z)=>{z.data._beginMatch!==D[1]&&z.ignoreMatch()}})}});function Nr(b,D){"."===b.input[b.index-1]&&D.ignoreMatch()}function Mr(b,D){void 0!==b.className&&(b.scope=b.className,delete b.className)}function Ke(b,D){D&&b.beginKeywords&&(b.begin="\\b("+b.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",b.__beforeBegin=Nr,b.keywords=b.keywords||b.beginKeywords,delete b.beginKeywords,void 0===b.relevance&&(b.relevance=0))}function Io(b,D){Array.isArray(b.illegal)&&(b.illegal=be(...b.illegal))}function So(b,D){if(b.match){if(b.begin||b.end)throw new Error("begin & end are not supported with match");b.begin=b.match,delete b.match}}function Ar(b,D){void 0===b.relevance&&(b.relevance=1)}const Lt=(b,D)=>{if(!b.beforeMatch)return;if(b.starts)throw new Error("beforeMatch cannot be used with starts");const z=Object.assign({},b);Object.keys(b).forEach(_e=>{delete b[_e]}),b.keywords=z.keywords,b.begin=Z(z.beforeMatch,j(z.begin)),b.starts={relevance:0,contains:[Object.assign(z,{endsParent:!0})]},b.relevance=0,delete z.beforeMatch},Jo=["of","and","for","in","not","or","if","then","parent","list","value"],ei="keyword";function sr(b,D,z=ei){const _e=Object.create(null);return"string"==typeof b?pt(z,b.split(" ")):Array.isArray(b)?pt(z,b):Object.keys(b).forEach(function(ft){Object.assign(_e,sr(b[ft],D,ft))}),_e;function pt(ft,K){D&&(K=K.map(Q=>Q.toLowerCase())),K.forEach(function(Q){const ne=Q.split("|");_e[ne[0]]=[ft,Bt(ne[0],ne[1])]})}}function Bt(b,D){return D?Number(D):function Xr(b){return Jo.includes(b.toLowerCase())}(b)?0:1}const To={},pn=b=>{console.error(b)},No=(b,...D)=>{console.log(`WARN: ${b}`,...D)},ar=(b,D)=>{To[`${b}/${D}`]||(console.log(`Deprecated as of ${b}. ${D}`),To[`${b}/${D}`]=!0)},xr=new Error;function Jr(b,D,{key:z}){let _e=0;const pt=b[z],ft={},K={};for(let Q=1;Q<=D.length;Q++)K[Q+_e]=pt[Q],ft[Q+_e]=!0,_e+=Ce(D[Q-1]);b[z]=K,b[z]._emit=ft,b[z]._multi=!0}function Ze(b){(function ws(b){b.scope&&"object"==typeof b.scope&&null!==b.scope&&(b.beginScope=b.scope,delete b.scope)})(b),"string"==typeof b.beginScope&&(b.beginScope={_wrap:b.beginScope}),"string"==typeof b.endScope&&(b.endScope={_wrap:b.endScope}),function Vn(b){if(Array.isArray(b.begin)){if(b.skip||b.excludeBegin||b.returnBegin)throw pn("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),xr;if("object"!=typeof b.beginScope||null===b.beginScope)throw pn("beginScope must be object"),xr;Jr(b,b.begin,{key:"beginScope"}),b.begin=$e(b.begin,{joinWith:""})}}(b),function eo(b){if(Array.isArray(b.end)){if(b.skip||b.excludeEnd||b.returnEnd)throw pn("skip, excludeEnd, returnEnd not compatible with endScope: {}"),xr;if("object"!=typeof b.endScope||null===b.endScope)throw pn("endScope must be object"),xr;Jr(b,b.end,{key:"endScope"}),b.end=$e(b.end,{joinWith:""})}}(b)}function ti(b){function D(K,Q){return new RegExp(U(K),"m"+(b.case_insensitive?"i":"")+(b.unicodeRegex?"u":"")+(Q?"g":""))}class z{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(Q,ne){ne.position=this.position++,this.matchIndexes[this.matchAt]=ne,this.regexes.push([ne,Q]),this.matchAt+=Ce(Q)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const Q=this.regexes.map(ne=>ne[1]);this.matcherRe=D($e(Q,{joinWith:"|"}),!0),this.lastIndex=0}exec(Q){this.matcherRe.lastIndex=this.lastIndex;const ne=this.matcherRe.exec(Q);if(!ne)return null;const bt=ne.findIndex((dt,Is)=>Is>0&&void 0!==dt),Re=this.matchIndexes[bt];return ne.splice(0,bt),Object.assign(ne,Re)}}class _e{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(Q){if(this.multiRegexes[Q])return this.multiRegexes[Q];const ne=new z;return this.rules.slice(Q).forEach(([bt,Re])=>ne.addRule(bt,Re)),ne.compile(),this.multiRegexes[Q]=ne,ne}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(Q,ne){this.rules.push([Q,ne]),"begin"===ne.type&&this.count++}exec(Q){const ne=this.getMatcher(this.regexIndex);ne.lastIndex=this.lastIndex;let bt=ne.exec(Q);if(this.resumingScanAtSamePosition()&&(!bt||bt.index!==this.lastIndex)){const Re=this.getMatcher(0);Re.lastIndex=this.lastIndex+1,bt=Re.exec(Q)}return bt&&(this.regexIndex+=bt.position+1,this.regexIndex===this.count&&this.considerAll()),bt}}if(b.compilerExtensions||(b.compilerExtensions=[]),b.contains&&b.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return b.classNameAliases=R(b.classNameAliases||{}),function ft(K,Q){const ne=K;if(K.isCompiled)return ne;[Mr,So,Ze,Lt].forEach(Re=>Re(K,Q)),b.compilerExtensions.forEach(Re=>Re(K,Q)),K.__beforeBegin=null,[Ke,Io,Ar].forEach(Re=>Re(K,Q)),K.isCompiled=!0;let bt=null;return"object"==typeof K.keywords&&K.keywords.$pattern&&(K.keywords=Object.assign({},K.keywords),bt=K.keywords.$pattern,delete K.keywords.$pattern),bt=bt||/\w+/,K.keywords&&(K.keywords=sr(K.keywords,b.case_insensitive)),ne.keywordPatternRe=D(bt,!0),Q&&(K.begin||(K.begin=/\B|\b/),ne.beginRe=D(ne.begin),!K.end&&!K.endsWithParent&&(K.end=/\B|\b/),K.end&&(ne.endRe=D(ne.end)),ne.terminatorEnd=U(ne.end)||"",K.endsWithParent&&Q.terminatorEnd&&(ne.terminatorEnd+=(K.end?"|":"")+Q.terminatorEnd)),K.illegal&&(ne.illegalRe=D(K.illegal)),K.contains||(K.contains=[]),K.contains=[].concat(...K.contains.map(function(Re){return function Es(b){return b.variants&&!b.cachedVariants&&(b.cachedVariants=b.variants.map(function(D){return R(b,{variants:null},D)})),b.cachedVariants?b.cachedVariants:Rr(b)?R(b,{starts:b.starts?R(b.starts):null}):Object.isFrozen(b)?R(b):b}("self"===Re?K:Re)})),K.contains.forEach(function(Re){ft(Re,ne)}),K.starts&&ft(K.starts,Q),ne.matcher=function pt(K){const Q=new _e;return K.contains.forEach(ne=>Q.addRule(ne.begin,{rule:ne,type:"begin"})),K.terminatorEnd&&Q.addRule(K.terminatorEnd,{type:"end"}),K.illegal&&Q.addRule(K.illegal,{type:"illegal"}),Q}(ne),ne}(b)}function Rr(b){return!!b&&(b.endsWithParent||Rr(b.starts))}class ni extends Error{constructor(D,z){super(D),this.name="HTMLInjectionError",this.html=z}}const _s=O,ri=R,dc=Symbol("nomatch");var Mo=function(b){const D=Object.create(null),z=Object.create(null),_e=[];let pt=!0;const ft="Could not find the language '{}', did you forget to load/include a language module?",K={disableAutodetect:!0,name:"Plain text",contains:[]};let Q={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:V};function ne(q){return Q.noHighlightRe.test(q)}function Re(q,le,ee){let et="",Te="";"object"==typeof le?(et=q,ee=le.ignoreIllegals,Te=le.language):(ar("10.7.0","highlight(lang, code, ...args) has been deprecated."),ar("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),Te=q,et=le),void 0===ee&&(ee=!0);const rn={code:et,language:Te};As("before:highlight",rn);const kr=rn.result?rn.result:dt(rn.language,rn.code,ee);return kr.code=rn.code,As("after:highlight",kr),kr}function dt(q,le,ee,et){const Te=Object.create(null);function rn(Y,ie){return Y.keywords[ie]}function kr(){if(!ve.keywords)return void Mt.addText(Ne);let Y=0;ve.keywordPatternRe.lastIndex=0;let ie=ve.keywordPatternRe.exec(Ne),P="";for(;ie;){P+=Ne.substring(Y,ie.index);const Ye=Pr.case_insensitive?ie[0].toLowerCase():ie[0],Me=rn(ve,Ye);if(Me){const[fn,Hu]=Me;Mt.addText(P),P="",Te[Ye]=(Te[Ye]||0)+1,Te[Ye]<=7&&(ae+=Hu),fn.startsWith("_")?P+=ie[0]:Mt.addKeyword(ie[0],Pr.classNameAliases[fn]||fn)}else P+=ie[0];Y=ve.keywordPatternRe.lastIndex,ie=ve.keywordPatternRe.exec(Ne)}P+=Ne.substring(Y),Mt.addText(P)}function Ut(){null!=ve.subLanguage?function si(){if(""===Ne)return;let Y=null;if("string"==typeof ve.subLanguage){if(!D[ve.subLanguage])return void Mt.addText(Ne);Y=dt(ve.subLanguage,Ne,!0,pc[ve.subLanguage]),pc[ve.subLanguage]=Y._top}else Y=Ve(Ne,ve.subLanguage.length?ve.subLanguage:null);ve.relevance>0&&(ae+=Y.relevance),Mt.addSublanguage(Y._emitter,Y.language)}():kr(),Ne=""}function oe(Y,ie){let P=1;const Ye=ie.length-1;for(;P<=Ye;){if(!Y._emit[P]){P++;continue}const Me=Pr.classNameAliases[Y[P]]||Y[P],fn=ie[P];Me?Mt.addKeyword(fn,Me):(Ne=fn,kr(),Ne=""),P++}}function Ao(Y,ie){return Y.scope&&"string"==typeof Y.scope&&Mt.openNode(Pr.classNameAliases[Y.scope]||Y.scope),Y.beginScope&&(Y.beginScope._wrap?(Mt.addKeyword(Ne,Pr.classNameAliases[Y.beginScope._wrap]||Y.beginScope._wrap),Ne=""):Y.beginScope._multi&&(oe(Y.beginScope,ie),Ne="")),ve=Object.create(Y,{parent:{value:ve}}),ve}function Gt(Y,ie,P){let Ye=function we(b,D){const z=b&&b.exec(D);return z&&0===z.index}(Y.endRe,P);if(Ye){if(Y["on:end"]){const Me=new w(Y);Y["on:end"](ie,Me),Me.isMatchIgnored&&(Ye=!1)}if(Ye){for(;Y.endsParent&&Y.parent;)Y=Y.parent;return Y}}if(Y.endsWithParent)return Gt(Y.parent,ie,P)}function mg(Y){return 0===ve.matcher.regexIndex?(Ne+=Y[0],1):(gc=!0,0)}function vg(Y){const ie=Y[0],P=le.substring(Y.index),Ye=Gt(ve,Y,P);if(!Ye)return dc;const Me=ve;ve.endScope&&ve.endScope._wrap?(Ut(),Mt.addKeyword(ie,ve.endScope._wrap)):ve.endScope&&ve.endScope._multi?(Ut(),oe(ve.endScope,Y)):Me.skip?Ne+=ie:(Me.returnEnd||Me.excludeEnd||(Ne+=ie),Ut(),Me.excludeEnd&&(Ne=ie));do{ve.scope&&Mt.closeNode(),!ve.skip&&!ve.subLanguage&&(ae+=ve.relevance),ve=ve.parent}while(ve!==Ye.parent);return Ye.starts&&Ao(Ye.starts,Y),Me.returnEnd?0:ie.length}let xs={};function Uu(Y,ie){const P=ie&&ie[0];if(Ne+=Y,null==P)return Ut(),0;if("begin"===xs.type&&"end"===ie.type&&xs.index===ie.index&&""===P){if(Ne+=le.slice(ie.index,ie.index+1),!pt){const Ye=new Error(`0 width match regex (${q})`);throw Ye.languageName=q,Ye.badRule=xs.rule,Ye}return 1}if(xs=ie,"begin"===ie.type)return function Bu(Y){const ie=Y[0],P=Y.rule,Ye=new w(P),Me=[P.__beforeBegin,P["on:begin"]];for(const fn of Me)if(fn&&(fn(Y,Ye),Ye.isMatchIgnored))return mg(ie);return P.skip?Ne+=ie:(P.excludeBegin&&(Ne+=ie),Ut(),!P.returnBegin&&!P.excludeBegin&&(Ne=ie)),Ao(P,Y),P.returnBegin?0:ie.length}(ie);if("illegal"===ie.type&&!ee){const Ye=new Error('Illegal lexeme "'+P+'" for mode "'+(ve.scope||"")+'"');throw Ye.mode=ve,Ye}if("end"===ie.type){const Ye=vg(ie);if(Ye!==dc)return Ye}if("illegal"===ie.type&&""===P)return 1;if(fc>1e5&&fc>3*ie.index)throw new Error("potential infinite loop, way more iterations than matches");return Ne+=P,P.length}const Pr=nn(q);if(!Pr)throw pn(ft.replace("{}",q)),new Error('Unknown language: "'+q+'"');const yg=ti(Pr);let Rs="",ve=et||yg;const pc={},Mt=new Q.__emitter(Q);!function cr(){const Y=[];for(let ie=ve;ie!==Pr;ie=ie.parent)ie.scope&&Y.unshift(ie.scope);Y.forEach(ie=>Mt.openNode(ie))}();let Ne="",ae=0,io=0,fc=0,gc=!1;try{for(ve.matcher.considerAll();;){fc++,gc?gc=!1:ve.matcher.considerAll(),ve.matcher.lastIndex=io;const Y=ve.matcher.exec(le);if(!Y)break;const P=Uu(le.substring(io,Y.index),Y);io=Y.index+P}return Uu(le.substring(io)),Mt.closeAllNodes(),Mt.finalize(),Rs=Mt.toHTML(),{language:q,value:Rs,relevance:ae,illegal:!1,_emitter:Mt,_top:ve}}catch(Y){if(Y.message&&Y.message.includes("Illegal"))return{language:q,value:_s(le),illegal:!0,relevance:0,_illegalBy:{message:Y.message,index:io,context:le.slice(io-100,io+100),mode:Y.mode,resultSoFar:Rs},_emitter:Mt};if(pt)return{language:q,value:_s(le),illegal:!1,relevance:0,errorRaised:Y,_emitter:Mt,_top:ve};throw Y}}function Ve(q,le){le=le||Q.languages||Object.keys(D);const ee=function Is(q){const le={value:_s(q),illegal:!1,relevance:0,_top:K,_emitter:new Q.__emitter(Q)};return le._emitter.addText(q),le}(q),et=le.filter(nn).filter(Ns).map(Ut=>dt(Ut,q,!1));et.unshift(ee);const Te=et.sort((Ut,oe)=>{if(Ut.relevance!==oe.relevance)return oe.relevance-Ut.relevance;if(Ut.language&&oe.language){if(nn(Ut.language).supersetOf===oe.language)return 1;if(nn(oe.language).supersetOf===Ut.language)return-1}return 0}),[rn,kr]=Te,si=rn;return si.secondBest=kr,si}function oi(q){let le=null;const ee=function bt(q){let le=q.className+" ";le+=q.parentNode?q.parentNode.className:"";const ee=Q.languageDetectRe.exec(le);if(ee){const et=nn(ee[1]);return et||(No(ft.replace("{}",ee[1])),No("Falling back to no-highlight mode for this block.",q)),et?ee[1]:"no-highlight"}return le.split(/\s+/).find(et=>ne(et)||nn(et))}(q);if(ne(ee))return;if(As("before:highlightElement",{el:q,language:ee}),q.children.length>0&&(Q.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(q)),Q.throwUnescapedHTML))throw new ni("One of your code blocks includes unescaped HTML.",q.innerHTML);le=q;const et=le.textContent,Te=ee?Re(et,{language:ee,ignoreIllegals:!0}):Ve(et);q.innerHTML=Te.value,function fg(q,le,ee){const et=le&&z[le]||ee;q.classList.add("hljs"),q.classList.add(`language-${et}`)}(q,ee,Te.language),q.result={language:Te.language,re:Te.relevance,relevance:Te.relevance},Te.secondBest&&(q.secondBest={language:Te.secondBest.language,relevance:Te.secondBest.relevance}),As("after:highlightElement",{el:q,result:Te,text:et})}let Ss=!1;function Ts(){"loading"!==document.readyState?document.querySelectorAll(Q.cssSelector).forEach(oi):Ss=!0}function nn(q){return q=(q||"").toLowerCase(),D[q]||D[z[q]]}function Or(q,{languageName:le}){"string"==typeof q&&(q=[q]),q.forEach(ee=>{z[ee.toLowerCase()]=le})}function Ns(q){const le=nn(q);return le&&!le.disableAutodetect}function As(q,le){const ee=q;_e.forEach(function(et){et[ee]&&et[ee](le)})}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",function gg(){Ss&&Ts()},!1),Object.assign(b,{highlight:Re,highlightAuto:Ve,highlightAll:Ts,highlightElement:oi,highlightBlock:function je(q){return ar("10.7.0","highlightBlock will be removed entirely in v12.0"),ar("10.7.0","Please use highlightElement now."),oi(q)},configure:function L(q){Q=ri(Q,q)},initHighlighting:()=>{Ts(),ar("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function ii(){Ts(),ar("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function hc(q,le){let ee=null;try{ee=le(b)}catch(et){if(pn("Language definition for '{}' could not be registered.".replace("{}",q)),!pt)throw et;pn(et),ee=K}ee.name||(ee.name=q),D[q]=ee,ee.rawDefinition=le.bind(null,b),ee.aliases&&Or(ee.aliases,{languageName:q})},unregisterLanguage:function jn(q){delete D[q];for(const le of Object.keys(z))z[le]===q&&delete z[le]},listLanguages:function ro(){return Object.keys(D)},getLanguage:nn,registerAliases:Or,autoDetection:Ns,inherit:ri,addPlugin:function oo(q){(function Ms(q){q["before:highlightBlock"]&&!q["before:highlightElement"]&&(q["before:highlightElement"]=le=>{q["before:highlightBlock"](Object.assign({block:le.el},le))}),q["after:highlightBlock"]&&!q["after:highlightElement"]&&(q["after:highlightElement"]=le=>{q["after:highlightBlock"](Object.assign({block:le.el},le))})})(q),_e.push(q)}}),b.debugMode=function(){pt=!1},b.safeMode=function(){pt=!0},b.versionString="11.6.0",b.regex={concat:Z,lookahead:j,either:be,optional:J,anyNumberOfTimes:W};for(const q in qt)"object"==typeof qt[q]&&$.exports(qt[q]);return Object.assign(b,qt),b}({});G.exports=Mo,Mo.HighlightJS=Mo,Mo.default=Mo},976:G=>{G.exports=function $(g){const O={},R={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[O]}]};Object.assign(O,{className:"variable",variants:[{begin:g.regex.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},R]});const N={className:"subst",begin:/\$\(/,end:/\)/,contains:[g.BACKSLASH_ESCAPE]},k={begin:/<<-?\s*(?=\w+)/,starts:{contains:[g.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},B={className:"string",begin:/"/,end:/"/,contains:[g.BACKSLASH_ESCAPE,O,N]};N.contains.push(B);const x={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},g.NUMBER_MODE,O]},U=g.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),j={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[g.inherit(g.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],literal:["true","false"],built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]},contains:[U,g.SHEBANG(),j,x,g.HASH_COMMENT_MODE,k,{match:/(\/[a-z._-]+)+/},B,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},O]}}},489:G=>{G.exports=function $(g){const w=g.regex,O=g.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),R="decltype\\(auto\\)",N="[a-zA-Z_]\\w*::",B="("+R+"|"+w.optional(N)+"[a-zA-Z_]\\w*"+w.optional("<[^<>]+>")+")",A={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},x={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[g.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},g.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},V={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},U={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},g.inherit(x,{className:"string"}),{className:"string",begin:/<.*?>/},O,g.C_BLOCK_COMMENT_MODE]},j={className:"title",begin:w.optional(N)+g.IDENT_RE,relevance:0},W=w.optional(N)+g.IDENT_RE+"\\s*\\(",X={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},be=[U,A,O,g.C_BLOCK_COMMENT_MODE,V,x],Ce={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:X,contains:be.concat([{begin:/\(/,end:/\)/,keywords:X,contains:be.concat(["self"]),relevance:0}]),relevance:0},we={begin:"("+B+"[\\*&\\s]+)+"+W,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:X,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:R,keywords:X,relevance:0},{begin:W,returnBegin:!0,contains:[g.inherit(j,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:X,relevance:0,contains:[O,g.C_BLOCK_COMMENT_MODE,x,V,A,{begin:/\(/,end:/\)/,keywords:X,relevance:0,contains:["self",O,g.C_BLOCK_COMMENT_MODE,x,V,A]}]},A,O,g.C_BLOCK_COMMENT_MODE,U]};return{name:"C",aliases:["h"],keywords:X,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},g.TITLE_MODE]}]),exports:{preprocessor:U,strings:x,keywords:X}}}},769:G=>{G.exports=function $(g){const w=g.regex,O=g.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),R="decltype\\(auto\\)",N="[a-zA-Z_]\\w*::",B="(?!struct)("+R+"|"+w.optional(N)+"[a-zA-Z_]\\w*"+w.optional("<[^<>]+>")+")",A={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},x={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[g.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},g.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},V={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},U={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},g.inherit(x,{className:"string"}),{className:"string",begin:/<.*?>/},O,g.C_BLOCK_COMMENT_MODE]},j={className:"title",begin:w.optional(N)+g.IDENT_RE,relevance:0},W=w.optional(N)+g.IDENT_RE+"\\s*\\(",Se={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},$e={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:w.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,g.IDENT_RE,w.lookahead(/(<[^<>]+>|)\s*\(/))},Je=[$e,U,A,O,g.C_BLOCK_COMMENT_MODE,V,x],ce={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:Se,contains:Je.concat([{begin:/\(/,end:/\)/,keywords:Se,contains:Je.concat(["self"]),relevance:0}]),relevance:0};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:Se,illegal:".]/,contains:[{begin:R,keywords:Se,relevance:0},{begin:W,returnBegin:!0,contains:[j],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[x,V]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:Se,relevance:0,contains:[O,g.C_BLOCK_COMMENT_MODE,x,V,A,{begin:/\(/,end:/\)/,keywords:Se,relevance:0,contains:["self",O,g.C_BLOCK_COMMENT_MODE,x,V,A]}]},A,O,g.C_BLOCK_COMMENT_MODE,U]},$e,Je,[U,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",end:">",keywords:Se,contains:["self",A]},{begin:g.IDENT_RE+"::",keywords:Se},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}},945:G=>{G.exports=function $(g){const B={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},A=g.inherit(g.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),_={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},x={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},V=g.inherit(x,{illegal:/\n/}),U={className:"subst",begin:/\{/,end:/\}/,keywords:B},j=g.inherit(U,{illegal:/\n/}),W={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},g.BACKSLASH_ESCAPE,j]},J={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},U]},Z=g.inherit(J,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},j]});U.contains=[J,W,x,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,_,g.C_BLOCK_COMMENT_MODE],j.contains=[Z,W,V,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,_,g.inherit(g.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const X={variants:[J,W,x,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE]},be={begin:"<",end:">",contains:[{beginKeywords:"in out"},A]},Ce=g.IDENT_RE+"(<"+g.IDENT_RE+"(\\s*,\\s*"+g.IDENT_RE+")*>)?(\\[\\])?",we={begin:"@"+g.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:B,illegal:/::/,contains:[g.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},X,_,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},A,be,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[A,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[A,be,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+Ce+"\\s+)+"+g.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:B,contains:[{beginKeywords:["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"].join(" "),relevance:0},{begin:g.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[g.TITLE_MODE,be],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:B,relevance:0,contains:[X,_,g.C_BLOCK_COMMENT_MODE]},g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},we]}}},67:G=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],O=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],N=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();G.exports=function k(B){const A=B.regex,_=(B=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:B.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[B.APOS_STRING_MODE,B.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:B.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(B),W=[B.APOS_STRING_MODE,B.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[_.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},_.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},_.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+O.join("|")+")"},{begin:":(:)?("+R.join("|")+")"}]},_.CSS_VARIABLE,{className:"attribute",begin:"\\b("+N.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[_.BLOCK_COMMENT,_.HEXCOLOR,_.IMPORTANT,_.CSS_NUMBER_MODE,...W,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...W,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},_.FUNCTION_DISPATCH]},{begin:A.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...W,_.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+g.join("|")+")\\b"}]}}},217:G=>{G.exports=function $(g){const w=g.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:w.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:w.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}},172:G=>{G.exports=function $(g){const k={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:k,illegal:"{G.exports=function $(g){const w=g.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[g.HASH_COMMENT_MODE,g.QUOTE_STRING_MODE,g.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:w.concat(/[_A-Za-z][_0-9A-Za-z]*/,w.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}},530:G=>{G.exports=function $(g){const w=g.regex,O={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:g.NUMBER_RE}]},R=g.COMMENT();R.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const N={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},k={className:"literal",begin:/\bon|off|true|false|yes|no\b/},B={className:"string",contains:[g.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},A={begin:/\[/,end:/\]/,contains:[R,k,N,B,O,"self"],relevance:0},U=w.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[R,{className:"section",begin:/\[+/,end:/\]+/},{begin:w.concat(U,"(\\s*\\.\\s*",U,")*",w.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[R,A,k,N,B,O]}}]}}},42:G=>{var $="[0-9](_*[0-9])*",g=`\\.(${$})`,w="[0-9a-fA-F](_*[0-9a-fA-F])*",O={className:"number",variants:[{begin:`(\\b(${$})((${g})|\\.)?|(${g}))[eE][+-]?(${$})[fFdD]?\\b`},{begin:`\\b(${$})((${g})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${g})[fFdD]?\\b`},{begin:`\\b(${$})[fFdD]\\b`},{begin:`\\b0[xX]((${w})\\.?|(${w})?\\.(${w}))[pP][+-]?(${$})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${w})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function R(k,B,A){return-1===A?"":k.replace(B,_=>R(k,B,A-1))}G.exports=function N(k){const B=k.regex,A="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",_=A+R("(?:<"+A+"~~~(?:\\s*,\\s*"+A+"~~~)*>)?",/~~~/g,2),W={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},J={className:"meta",begin:"@"+A,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},Z={className:"params",begin:/\(/,end:/\)/,keywords:W,relevance:0,contains:[k.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:W,illegal:/<\/|#/,contains:[k.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},k.C_LINE_COMMENT_MODE,k.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[k.BACKSLASH_ESCAPE]},k.APOS_STRING_MODE,k.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,A],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[B.concat(/(?!else)/,A),/\s+/,A,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,A],className:{1:"keyword",3:"title.class"},contains:[Z,k.C_LINE_COMMENT_MODE,k.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+_+"\\s+)",k.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:W,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:W,relevance:0,contains:[J,k.APOS_STRING_MODE,k.QUOTE_STRING_MODE,O,k.C_BLOCK_COMMENT_MODE]},k.C_LINE_COMMENT_MODE,k.C_BLOCK_COMMENT_MODE]},O,J]}}},593:G=>{const $="[A-Za-z$_][0-9A-Za-z$_]*",g=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],w=["true","false","null","undefined","NaN","Infinity"],O=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],N=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],k=["arguments","this","super","console","window","document","localStorage","module","global"],B=[].concat(N,O,R);G.exports=function A(_){const x=_.regex,U=$,J={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Nt,ut)=>{const Pt=Nt[0].length+Nt.index,zt=Nt.input[Pt];if("<"===zt||","===zt)return void ut.ignoreMatch();let Ln;">"===zt&&(((Nt,{after:ut})=>{const Pt="",Pn={match:[/const|var|let/,/\s+/,U,/\s*/,/=\s*/,/(async\s*)?/,x.lookahead(In)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[yt]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:Z,exports:{PARAMS_CONTAINS:Ft,CLASS_REFERENCE:or},illegal:/#(?![$_A-z])/,contains:[_.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},_.APOS_STRING_MODE,_.QUOTE_STRING_MODE,$e,Je,ce,lt,we,or,{className:"attr",begin:U+x.lookahead(":"),relevance:0},Pn,{begin:"("+_.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[lt,_.REGEXP_MODE,{className:"function",begin:In,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:_.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:Z,contains:Ft}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:J.begin,"on:begin":J.isTrulyOpeningTag,end:J.end}],subLanguage:"xml",contains:[{begin:J.begin,end:J.end,skip:!0,contains:["self"]}]}]},_n,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+_.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[yt,_.inherit(_.TITLE_MODE,{begin:U,className:"title.function"})]},{match:/\.\.\./,relevance:0},kn,{match:"\\$"+U,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[yt]},Hn,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},vt,Qr,{match:/\$[(.]/}]}}},28:G=>{G.exports=function $(g){const R=["true","false","null"],N={scope:"literal",beginKeywords:R.join(" ")};return{name:"JSON",keywords:{literal:R},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},g.QUOTE_STRING_MODE,N,g.C_NUMBER_MODE,g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}},567:G=>{var $="[0-9](_*[0-9])*",g=`\\.(${$})`,w="[0-9a-fA-F](_*[0-9a-fA-F])*",O={className:"number",variants:[{begin:`(\\b(${$})((${g})|\\.)?|(${g}))[eE][+-]?(${$})[fFdD]?\\b`},{begin:`\\b(${$})((${g})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${g})[fFdD]?\\b`},{begin:`\\b(${$})[fFdD]\\b`},{begin:`\\b0[xX]((${w})\\.?|(${w})?\\.(${w}))[pP][+-]?(${$})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${w})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};G.exports=function R(N){const k={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},A={className:"symbol",begin:N.UNDERSCORE_IDENT_RE+"@"},_={className:"subst",begin:/\$\{/,end:/\}/,contains:[N.C_NUMBER_MODE]},x={className:"variable",begin:"\\$"+N.UNDERSCORE_IDENT_RE},V={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[x,_]},{begin:"'",end:"'",illegal:/\n/,contains:[N.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[N.BACKSLASH_ESCAPE,x,_]}]};_.contains.push(V);const U={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+N.UNDERSCORE_IDENT_RE+")?"},j={className:"meta",begin:"@"+N.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[N.inherit(V,{className:"string"}),"self"]}]},W=O,J=N.COMMENT("/\\*","\\*/",{contains:[N.C_BLOCK_COMMENT_MODE]}),Z={variants:[{className:"type",begin:N.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},X=Z;return X.variants[1].contains=[Z],Z.variants[1].contains=[X],{name:"Kotlin",aliases:["kt","kts"],keywords:k,contains:[N.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),N.C_LINE_COMMENT_MODE,J,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},A,U,j,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:k,relevance:5,contains:[{begin:N.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[N.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:k,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[Z,N.C_LINE_COMMENT_MODE,J],relevance:0},N.C_LINE_COMMENT_MODE,J,U,j,V,N.C_NUMBER_MODE]},J]},{begin:[/class|interface|trait/,/\s+/,N.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},N.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},U,j]},V,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},W]}}},867:G=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],O=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],N=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),k=O.concat(R);G.exports=function B(A){const _=(A=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:A.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[A.APOS_STRING_MODE,A.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:A.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(A),x=k,U="[\\w-]+",j="("+U+"|@\\{"+U+"\\})",W=[],J=[],Z=function(Fe){return{className:"string",begin:"~?"+Fe+".*?"+Fe}},X=function(Fe,$t,Ft){return{className:Fe,begin:$t,relevance:Ft}},be={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},Ce={begin:"\\(",end:"\\)",contains:J,keywords:be,relevance:0};J.push(A.C_LINE_COMMENT_MODE,A.C_BLOCK_COMMENT_MODE,Z("'"),Z('"'),_.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},_.HEXCOLOR,Ce,X("variable","@@?"+U,10),X("variable","@\\{"+U+"\\}"),X("built_in","~?`[^`]*?`"),{className:"attribute",begin:U+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},_.IMPORTANT,{beginKeywords:"and not"},_.FUNCTION_DISPATCH);const we=J.concat({begin:/\{/,end:/\}/,contains:W}),Se={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(J)},$e={begin:j+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},_.CSS_VARIABLE,{className:"attribute",begin:"\\b("+N.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:J}}]},Je={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:be,returnEnd:!0,contains:J,relevance:0}},ce={className:"variable",variants:[{begin:"@"+U+"\\s*:",relevance:15},{begin:"@"+U}],starts:{end:"[;}]",returnEnd:!0,contains:we}},He={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:j,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[A.C_LINE_COMMENT_MODE,A.C_BLOCK_COMMENT_MODE,Se,X("keyword","all\\b"),X("variable","@\\{"+U+"\\}"),{begin:"\\b("+g.join("|")+")\\b",className:"selector-tag"},_.CSS_NUMBER_MODE,X("selector-tag",j,0),X("selector-id","#"+j),X("selector-class","\\."+j,0),X("selector-tag","&",0),_.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+O.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+R.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:we},{begin:"!important"},_.FUNCTION_DISPATCH]},lt={begin:U+`:(:)?(${x.join("|")})`,returnBegin:!0,contains:[He]};return W.push(A.C_LINE_COMMENT_MODE,A.C_BLOCK_COMMENT_MODE,Je,ce,lt,$e,He,Se,_.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:W}}},342:G=>{G.exports=function $(g){const w="\\[=*\\[",O="\\]=*\\]",R={begin:w,end:O,contains:["self"]},N=[g.COMMENT("--(?!"+w+")","$"),g.COMMENT("--"+w,O,{contains:[R],relevance:10})];return{name:"Lua",keywords:{$pattern:g.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:N.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[g.inherit(g.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:N}].concat(N)},g.C_NUMBER_MODE,g.APOS_STRING_MODE,g.QUOTE_STRING_MODE,{className:"string",begin:w,end:O,contains:[R],relevance:5}])}}},158:G=>{G.exports=function $(g){const w={className:"variable",variants:[{begin:"\\$\\("+g.UNDERSCORE_IDENT_RE+"\\)",contains:[g.BACKSLASH_ESCAPE]},{begin:/\$[@%{G.exports=function $(g){const O={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},_={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:g.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},x={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},V={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]},U=g.inherit(x,{contains:[]}),j=g.inherit(V,{contains:[]});x.contains.push(j),V.contains.push(U);let W=[O,_];return[x,V,U,j].forEach(X=>{X.contains=X.contains.concat(W)}),W=W.concat(x,V),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:W},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:W}]}]},O,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},x,V,{className:"quote",begin:"^>\\s+",contains:W,end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},_,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}},14:G=>{G.exports=function $(g){const O=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:O,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:O,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"/,end:/$/,illegal:"\\n"},g.C_LINE_COMMENT_MODE,g.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_,contains:[g.UNDERSCORE_TITLE_MODE]},{begin:"\\."+g.UNDERSCORE_IDENT_RE,relevance:0}]}}},995:G=>{G.exports=function $(g){const w=g.regex,R=/[dualxmsipngr]{0,12}/,N={$pattern:/[\w.]+/,keyword:["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"].join(" ")},k={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:N},B={begin:/->\{/,end:/\}/},A={variants:[{begin:/\$\d/},{begin:w.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},_=[g.BACKSLASH_ESCAPE,k,A],x=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],V=(W,J,Z="\\1")=>{const X="\\1"===Z?Z:w.concat(Z,J);return w.concat(w.concat("(?:",W,")"),J,/(?:\\.|[^\\\/])*?/,X,/(?:\\.|[^\\\/])*?/,Z,R)},U=(W,J,Z)=>w.concat(w.concat("(?:",W,")"),J,/(?:\\.|[^\\\/])*?/,Z,R),j=[A,g.HASH_COMMENT_MODE,g.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),B,{className:"string",contains:_,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[g.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[g.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+g.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[g.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:V("s|tr|y",w.either(...x,{capture:!0}))},{begin:V("s|tr|y","\\(","\\)")},{begin:V("s|tr|y","\\[","\\]")},{begin:V("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:U("(?:m|qr)?",/\//,/\//)},{begin:U("m|qr",w.either(...x,{capture:!0}),/\1/)},{begin:U("m|qr",/\(/,/\)/)},{begin:U("m|qr",/\[/,/\]/)},{begin:U("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[g.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return k.contains=j,B.contains=j,{name:"Perl",aliases:["pl","pm"],keywords:N,contains:j}}},779:G=>{G.exports=function $(g){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},g.inherit(g.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),g.inherit(g.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}},504:G=>{G.exports=function $(g){const w=g.regex,O=/(?![A-Za-z0-9])(?![$])/,R=w.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,O),N=w.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,O),k={scope:"variable",match:"\\$+"+R},A={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},_=g.inherit(g.APOS_STRING_MODE,{illegal:null}),U="[ \t\n]",j={scope:"string",variants:[g.inherit(g.QUOTE_STRING_MODE,{illegal:null,contains:g.QUOTE_STRING_MODE.contains.concat(A)}),_,g.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:g.QUOTE_STRING_MODE.contains.concat(A)})]},W={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},J=["false","null","true"],Z=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],X=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],Ce={keyword:Z,literal:(Ft=>{const yt=[];return Ft.forEach(vt=>{yt.push(vt),vt.toLowerCase()===vt?yt.push(vt.toUpperCase()):yt.push(vt.toLowerCase())}),yt})(J),built_in:X},we=Ft=>Ft.map(yt=>yt.replace(/\|\d+$/,"")),Se={variants:[{match:[/new/,w.concat(U,"+"),w.concat("(?!",we(X).join("\\b|"),"\\b)"),N],scope:{1:"keyword",4:"title.class"}}]},$e=w.concat(R,"\\b(?!\\()"),Je={variants:[{match:[w.concat(/::/,w.lookahead(/(?!class\b)/)),$e],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[N,w.concat(/::/,w.lookahead(/(?!class\b)/)),$e],scope:{1:"title.class",3:"variable.constant"}},{match:[N,w.concat("::",w.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[N,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},ce={scope:"attr",match:w.concat(R,w.lookahead(":"),w.lookahead(/(?!::)/))},He={relevance:0,begin:/\(/,end:/\)/,keywords:Ce,contains:[ce,k,Je,g.C_BLOCK_COMMENT_MODE,j,W,Se]},lt={relevance:0,match:[/\b/,w.concat("(?!fn\\b|function\\b|",we(Z).join("\\b|"),"|",we(X).join("\\b|"),"\\b)"),R,w.concat(U,"*"),w.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[He]};He.contains.push(lt);const Fe=[ce,Je,g.C_BLOCK_COMMENT_MODE,j,W,Se];return{case_insensitive:!1,keywords:Ce,contains:[{begin:w.concat(/#\[\s*/,N),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:J,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:J,keyword:["new","array"]},contains:["self",...Fe]},...Fe,{scope:"meta",match:N}]},g.HASH_COMMENT_MODE,g.COMMENT("//","$"),g.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:g.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},k,lt,Je,{match:[/const/,/\s/,R],scope:{1:"keyword",3:"variable.constant"}},Se,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},g.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:Ce,contains:["self",k,Je,g.C_BLOCK_COMMENT_MODE,j,W]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},g.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[g.inherit(g.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},g.UNDERSCORE_TITLE_MODE]},j,W]}}},643:G=>{G.exports=function $(g){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}},152:G=>{G.exports=function $(g){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}},344:G=>{G.exports=function $(g){const w=g.regex,O=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),R=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],A={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:R,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},_={className:"meta",begin:/^(>>>|\.\.\.) /},x={className:"subst",begin:/\{/,end:/\}/,keywords:A,illegal:/#/},V={begin:/\{\{/,relevance:0},U={className:"string",contains:[g.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[g.BACKSLASH_ESCAPE,_],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[g.BACKSLASH_ESCAPE,_],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[g.BACKSLASH_ESCAPE,_,V,x]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[g.BACKSLASH_ESCAPE,_,V,x]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[g.BACKSLASH_ESCAPE,V,x]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[g.BACKSLASH_ESCAPE,V,x]},g.APOS_STRING_MODE,g.QUOTE_STRING_MODE]},j="[0-9](_?[0-9])*",W=`(\\b(${j}))?\\.(${j})|\\b(${j})\\.`,J=`\\b|${R.join("|")}`,Z={className:"number",relevance:0,variants:[{begin:`(\\b(${j})|(${W}))[eE][+-]?(${j})[jJ]?(?=${J})`},{begin:`(${W})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${J})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${J})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${J})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${J})`},{begin:`\\b(${j})[jJ](?=${J})`}]},X={className:"comment",begin:w.lookahead(/# type:/),end:/$/,keywords:A,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},be={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:A,contains:["self",_,Z,U,g.HASH_COMMENT_MODE]}]};return x.contains=[U,Z,_],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:A,illegal:/(<\/|->|\?)|=>/,contains:[_,Z,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},U,X,g.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,O],scope:{1:"keyword",3:"title.function"},contains:[be]},{variants:[{match:[/\bclass/,/\s+/,O,/\s*/,/\(\s*/,O,/\s*\)/]},{match:[/\bclass/,/\s+/,O]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[Z,be,U]}]}}},690:G=>{G.exports=function $(g){const w=g.regex,O=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,R=w.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),N=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,k=w.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:O,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[g.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:w.lookahead(w.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:O},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),g.HASH_COMMENT_MODE,{scope:"string",contains:[g.BACKSLASH_ESCAPE],variants:[g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),g.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[N,R]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,R]},{scope:{1:"punctuation",2:"number"},match:[k,R]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,R]}]},{scope:{3:"operator"},match:[O,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:N},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:k},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}},130:G=>{G.exports=function $(g){const w=g.regex,O="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",R=w.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),N=w.concat(R,/(::\w+)*/),k={"variable.constant":["__FILE__","__LINE__"],"variable.language":["self","super"],keyword:["alias","and","attr_accessor","attr_reader","attr_writer","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","include","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield"],built_in:["proc","lambda"],literal:["true","false","nil"]},B={className:"doctag",begin:"@[A-Za-z]+"},A={begin:"#<",end:">"},_=[g.COMMENT("#","$",{contains:[B]}),g.COMMENT("^=begin","^=end",{contains:[B],relevance:10}),g.COMMENT("^__END__",g.MATCH_NOTHING_RE)],x={className:"subst",begin:/#\{/,end:/\}/,keywords:k},V={className:"string",contains:[g.BACKSLASH_ESCAPE,x],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:w.concat(/<<[-~]?'?/,w.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[g.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[g.BACKSLASH_ESCAPE,x]})]}]},j="[0-9](_?[0-9])*",J={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:k}]},we=[V,{variants:[{match:[/class\s+/,N,/\s+<\s+/,N]},{match:[/class\s+/,N]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:k},{relevance:0,match:[N,/\.new[ (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{match:[/def/,/\s+/,O],scope:{1:"keyword",3:"title.function"},contains:[J]},{begin:g.IDENT_RE+"::"},{className:"symbol",begin:g.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[V,{begin:O}],relevance:0},{className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${j}))?([eE][+-]?(${j})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:k},{begin:"("+g.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[g.BACKSLASH_ESCAPE,x],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(A,_),relevance:0}].concat(A,_);x.contains=we,J.contains=we;const ce=[{begin:/^\s*=>/,starts:{end:"$",contains:we}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:k,contains:we}}];return _.unshift(A),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:k,illegal:/\/\*/,contains:[g.SHEBANG({binary:"ruby"})].concat(ce).concat(_).concat(we)}}},16:G=>{G.exports=function $(g){const w=g.regex,O={className:"title.function.invoke",relevance:0,begin:w.concat(/\b/,/(?!let\b)/,g.IDENT_RE,w.lookahead(/\s*\(/))},R="([ui](8|16|32|64|128|size)|f(32|64))?",B=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],A=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:g.IDENT_RE+"!?",type:A,keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"],literal:["true","false","Some","None","Ok","Err"],built_in:B},illegal:""},O]}}},382:G=>{const g=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],w=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],O=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],R=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],N=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();G.exports=function k(B){const A=(B=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:B.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[B.APOS_STRING_MODE,B.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:B.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}))(B),_=R,x=O,V="@[a-z-]+",W={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[B.C_LINE_COMMENT_MODE,B.C_BLOCK_COMMENT_MODE,A.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},A.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+g.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+x.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+_.join("|")+")"},W,{begin:/\(/,end:/\)/,contains:[A.CSS_NUMBER_MODE]},A.CSS_VARIABLE,{className:"attribute",begin:"\\b("+N.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[A.BLOCK_COMMENT,W,A.HEXCOLOR,A.CSS_NUMBER_MODE,B.QUOTE_STRING_MODE,B.APOS_STRING_MODE,A.IMPORTANT,A.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:V,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:w.join(" ")},contains:[{begin:V,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},W,B.QUOTE_STRING_MODE,B.APOS_STRING_MODE,A.HEXCOLOR,A.CSS_NUMBER_MODE]},A.FUNCTION_DISPATCH]}}},54:G=>{G.exports=function $(g){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}},208:G=>{G.exports=function $(g){const w=g.regex,O=g.COMMENT("--","$"),k=["true","false","unknown"],A=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],V=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],j=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],W=V,J=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter(we=>!V.includes(we)),be={begin:w.concat(/\b/,w.either(...W),/\s*\(/),relevance:0,keywords:{built_in:W}};return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:function Ce(we,{exceptions:Se,when:$e}={}){const Je=$e;return Se=Se||[],we.map(ce=>ce.match(/\|\d+$/)||Se.includes(ce)?ce:Je(ce)?`${ce}|0`:ce)}(J,{when:we=>we.length<3}),literal:k,type:A,built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]},contains:[{begin:w.either(...j),relevance:0,keywords:{$pattern:/[\w\.]+/,keyword:J.concat(j),literal:k,type:A}},{className:"type",begin:w.either("double precision","large object","with timezone","without timezone")},be,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{begin:/""/}]},g.C_NUMBER_MODE,g.C_BLOCK_COMMENT_MODE,O,{className:"operator",begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}},491:G=>{function $(ce){return ce?"string"==typeof ce?ce:ce.source:null}function g(ce){return w("(?=",ce,")")}function w(...ce){return ce.map(lt=>$(lt)).join("")}function R(...ce){return"("+(function O(ce){const He=ce[ce.length-1];return"object"==typeof He&&He.constructor===Object?(ce.splice(ce.length-1,1),He):{}}(ce).capture?"":"?:")+ce.map(Fe=>$(Fe)).join("|")+")"}const N=ce=>w(/\b/,ce,/\w$/.test(ce)?/\b/:/\B/),k=["Protocol","Type"].map(N),B=["init","self"].map(N),A=["Any","Self"],_=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],x=["false","nil","true"],V=["assignment","associativity","higherThan","left","lowerThan","none","right"],U=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],j=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],W=R(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),J=R(W,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Z=w(W,J,"*"),X=R(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),be=R(X,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Ce=w(X,be,"*"),we=w(/[A-Z]/,be,"*"),Se=["autoclosure",w(/convention\(/,R("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",w(/objc\(/,Ce,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],$e=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];G.exports=function Je(ce){const He={match:/\s+/,relevance:0},lt=ce.COMMENT("/\\*","\\*/",{contains:["self"]}),Fe=[ce.C_LINE_COMMENT_MODE,lt],$t={match:[/\./,R(...k,...B)],className:{2:"keyword"}},Ft={match:w(/\./,R(..._)),relevance:0},yt=_.filter(Ze=>"string"==typeof Ze).concat(["_|0"]),or={variants:[{className:"keyword",match:R(..._.filter(Ze=>"string"!=typeof Ze).concat(A).map(N),...B)}]},tn={$pattern:R(/\b\w+/,/#\w+/),keyword:yt.concat(U),literal:x},_n=[$t,Ft,or],Hn=[{match:w(/\./,R(...j)),relevance:0},{className:"built_in",match:w(/\b/,R(...j),/(?=\()/)}],kn={match:/->/,relevance:0},In=[kn,{className:"operator",relevance:0,variants:[{match:Z},{match:`\\.(\\.|${J})+`}]}],Pn="([0-9]_*)+",Nt="([0-9a-fA-F]_*)+",ut={className:"number",relevance:0,variants:[{match:`\\b(${Pn})(\\.(${Pn}))?([eE][+-]?(${Pn}))?\\b`},{match:`\\b0x(${Nt})(\\.(${Nt}))?([pP][+-]?(${Pn}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},Pt=(Ze="")=>({className:"subst",variants:[{match:w(/\\/,Ze,/[0\\tnr"']/)},{match:w(/\\/,Ze,/u\{[0-9a-fA-F]{1,8}\}/)}]}),zt=(Ze="")=>({className:"subst",match:w(/\\/,Ze,/[\t ]*(?:[\r\n]|\r\n)/)}),Ln=(Ze="")=>({className:"subst",label:"interpol",begin:w(/\\/,Ze,/\(/),end:/\)/}),qt=(Ze="")=>({begin:w(Ze,/"""/),end:w(/"""/,Ze),contains:[Pt(Ze),zt(Ze),Ln(Ze)]}),Nr=(Ze="")=>({begin:w(Ze,/"/),end:w(/"/,Ze),contains:[Pt(Ze),Ln(Ze)]}),Mr={className:"string",variants:[qt(),qt("#"),qt("##"),qt("###"),Nr(),Nr("#"),Nr("##"),Nr("###")]},Ke={match:w(/`/,Ce,/`/)},Ar=[Ke,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${be}+`}],sr=[{match:/(@|#(un)?)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:$e,contains:[...In,ut,Mr]}]}},{className:"keyword",match:w(/@/,R(...Se))},{className:"meta",match:w(/@/,Ce)}],Bt={match:g(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:w(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,be,"+")},{className:"type",match:we,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:w(/\s+&\s+/,g(we)),relevance:0}]},Xr={begin://,keywords:tn,contains:[...Fe,..._n,...sr,kn,Bt]};Bt.contains.push(Xr);const pn={begin:/\(/,end:/\)/,relevance:0,keywords:tn,contains:["self",{match:w(Ce,/\s*:/),keywords:"_|0",relevance:0},...Fe,..._n,...Hn,...In,ut,Mr,...Ar,...sr,Bt]},No={begin://,contains:[...Fe,Bt]},xr={begin:/\(/,end:/\)/,keywords:tn,contains:[{begin:R(g(w(Ce,/\s*:/)),g(w(Ce,/\s+/,Ce,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Ce}]},...Fe,..._n,...In,ut,Mr,...sr,Bt,pn],endsParent:!0,illegal:/["']/},Jr={match:[/func/,/\s+/,R(Ke.match,Ce,Z)],className:{1:"keyword",3:"title.function"},contains:[No,xr,He],illegal:[/\[/,/%/]},Vn={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[No,xr,He],illegal:/\[|%/},eo={match:[/operator/,/\s+/,Z],className:{1:"keyword",3:"title"}},ws={begin:[/precedencegroup/,/\s+/,we],className:{1:"keyword",3:"title"},contains:[Bt],keywords:[...V,...x],end:/}/};for(const Ze of Mr.variants){const ti=Ze.contains.find(Es=>"interpol"===Es.label);ti.keywords=tn;const Rr=[..._n,...Hn,...In,ut,Mr,...Ar];ti.contains=[...Rr,{begin:/\(/,end:/\)/,contains:["self",...Rr]}]}return{name:"Swift",keywords:tn,contains:[...Fe,Jr,Vn,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:tn,contains:[ce.inherit(ce.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._n]},eo,ws,{beginKeywords:"import",end:/$/,contains:[...Fe],relevance:0},..._n,...Hn,...In,ut,Mr,...Ar,...sr,Bt,pn]}}},585:G=>{const $="[A-Za-z$_][0-9A-Za-z$_]*",g=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],w=["true","false","null","undefined","NaN","Infinity"],O=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],N=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],k=["arguments","this","super","console","window","document","localStorage","module","global"],B=[].concat(N,O,R);G.exports=function _(x){const V=function A(x){const V=x.regex,j=$,Z={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(ut,Pt)=>{const zt=ut[0].length+ut.index,Ln=ut.input[zt];if("<"===Ln||","===Ln)return void Pt.ignoreMatch();let qt;">"===Ln&&(((ut,{after:Pt})=>{const zt="",Nt={match:[/const|var|let/,/\s+/,j,/\s*/,/=\s*/,/(async\s*)?/,V.lookahead(Pn)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[vt]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:X,exports:{PARAMS_CONTAINS:yt,CLASS_REFERENCE:tn},illegal:/#(?![$_A-z])/,contains:[x.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},x.APOS_STRING_MODE,x.QUOTE_STRING_MODE,Je,ce,He,Fe,Se,tn,{className:"attr",begin:j+V.lookahead(":"),relevance:0},Nt,{begin:"("+x.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[Fe,x.REGEXP_MODE,{className:"function",begin:Pn,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:x.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:X,contains:yt}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:""},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:Z.begin,"on:begin":Z.isTrulyOpeningTag,end:Z.end}],subLanguage:"xml",contains:[{begin:Z.begin,end:Z.end,skip:!0,contains:["self"]}]}]},Dn,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+x.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[vt,x.inherit(x.TITLE_MODE,{begin:j,className:"title.function"})]},{match:/\.\.\./,relevance:0},Qr,{match:"\\$"+j,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[vt]},kn,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},or,In,{match:/\$[(.]/}]}}(x),U=$,j=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],W={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[V.exports.CLASS_REFERENCE]},J={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:j},contains:[V.exports.CLASS_REFERENCE]},be={$pattern:$,keyword:g.concat(["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"]),literal:w,built_in:B.concat(j),"variable.language":k},Ce={className:"meta",begin:"@"+U},we=($e,Je,ce)=>{const He=$e.contains.findIndex(lt=>lt.label===Je);if(-1===He)throw new Error("can not find mode to replace");$e.contains.splice(He,1,ce)};return Object.assign(V.keywords,be),V.exports.PARAMS_CONTAINS.push(Ce),V.contains=V.contains.concat([Ce,W,J]),we(V,"shebang",x.SHEBANG()),we(V,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/}),V.contains.find($e=>"func.def"===$e.label).relevance=0,Object.assign(V,{name:"TypeScript",aliases:["ts","tsx"]}),V}},735:G=>{G.exports=function $(g){const w=g.regex,N=/\d{1,2}\/\d{1,2}\/\d{4}/,k=/\d{4}-\d{1,2}-\d{1,2}/,B=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,A=/\d{1,2}(:\d{1,2}){1,2}/,_={className:"literal",variants:[{begin:w.concat(/# */,w.either(k,N),/ *#/)},{begin:w.concat(/# */,A,/ *#/)},{begin:w.concat(/# */,B,/ *#/)},{begin:w.concat(/# */,w.either(k,N),/ +/,w.either(B,A),/ *#/)}]},U=g.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),j=g.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},_,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},U,j,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[j]}]}}},946:G=>{G.exports=function $(g){const w=g.COMMENT(/\(;/,/;\)/);return w.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[g.COMMENT(/;;/,/$/),w,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},g.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}}},133:G=>{G.exports=function $(g){const w=g.regex,O=w.concat(/[\p{L}_]/u,w.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),N={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},k={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},B=g.inherit(k,{begin:/\(/,end:/\)/}),A=g.inherit(g.APOS_STRING_MODE,{className:"string"}),_=g.inherit(g.QUOTE_STRING_MODE,{className:"string"}),x={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[k,_,A,B,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[k,B,_,A]}]}]},g.COMMENT(//,{relevance:10}),{begin://,relevance:10},N,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[_]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[x],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[x],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:w.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:O,relevance:0,starts:x}]},{className:"tag",begin:w.concat(/<\//,w.lookahead(w.concat(O,/>/))),contains:[{className:"name",begin:O,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},917:G=>{G.exports=function $(g){const w="true false yes no null",O="[\\w#;/?:@&=+$,.~*'()[\\]]+",k={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[g.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},B=g.inherit(k,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),j={end:",",endsWithParent:!0,excludeEnd:!0,keywords:w,relevance:0},Z=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+O},{className:"type",begin:"!<"+O+">"},{className:"type",begin:"!"+O},{className:"type",begin:"!!"+O},{className:"meta",begin:"&"+g.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+g.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},g.HASH_COMMENT_MODE,{beginKeywords:w,keywords:{literal:w}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:g.C_NUMBER_RE+"\\b",relevance:0},{begin:/\{/,end:/\}/,contains:[j],illegal:"\\n",relevance:0},{begin:"\\[",end:"\\]",contains:[j],illegal:"\\n",relevance:0},k],X=[...Z];return X.pop(),X.push(B),j.contains=X,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:Z}}}},G=>{G(G.s=818)}]); \ No newline at end of file diff --git a/docs/polyfills.4edb73e961118241.js b/docs/polyfills.4edb73e961118241.js deleted file mode 100644 index a203954..0000000 --- a/docs/polyfills.4edb73e961118241.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdevnet=self.webpackChunkdevnet||[]).push([[461],{50:(ce,Ee,de)=>{de(935)},935:()=>{!function(t){const n=t.performance;function i(L){n&&n.mark&&n.mark(L)}function o(L,T){n&&n.measure&&n.measure(L,T)}i("Zone");const c=t.__Zone_symbol_prefix||"__zone_symbol__";function a(L){return c+L}const y=!0===t[a("forceDuplicateZoneCheck")];if(t.Zone){if(y||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}let d=(()=>{class L{static#e=this.__symbol__=a;static assertZonePatched(){if(t.Promise!==se.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let e=L.current;for(;e.parent;)e=e.parent;return e}static get current(){return U.zone}static get currentTask(){return oe}static __load_patch(e,r,k=!1){if(se.hasOwnProperty(e)){if(!k&&y)throw Error("Already loaded patch: "+e)}else if(!t["__Zone_disable_"+e]){const C="Zone:"+e;i(C),se[e]=r(t,L,X),o(C,C)}}get parent(){return this._parent}get name(){return this._name}constructor(e,r){this._parent=e,this._name=r?r.name||"unnamed":"",this._properties=r&&r.properties||{},this._zoneDelegate=new v(this,this._parent&&this._parent._zoneDelegate,r)}get(e){const r=this.getZoneWith(e);if(r)return r._properties[e]}getZoneWith(e){let r=this;for(;r;){if(r._properties.hasOwnProperty(e))return r;r=r._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,r){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const k=this._zoneDelegate.intercept(this,e,r),C=this;return function(){return C.runGuarded(k,this,arguments,r)}}run(e,r,k,C){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,e,r,k,C)}finally{U=U.parent}}runGuarded(e,r=null,k,C){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,e,r,k,C)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{U=U.parent}}runTask(e,r,k){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||K).name+"; Execution: "+this.name+")");if(e.state===x&&(e.type===Q||e.type===P))return;const C=e.state!=E;C&&e._transitionTo(E,j),e.runCount++;const $=oe;oe=e,U={parent:U,zone:this};try{e.type==P&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,r,k)}catch(u){if(this._zoneDelegate.handleError(this,u))throw u}}finally{e.state!==x&&e.state!==h&&(e.type==Q||e.data&&e.data.isPeriodic?C&&e._transitionTo(j,E):(e.runCount=0,this._updateTaskCount(e,-1),C&&e._transitionTo(x,E,x))),U=U.parent,oe=$}}scheduleTask(e){if(e.zone&&e.zone!==this){let k=this;for(;k;){if(k===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);k=k.parent}}e._transitionTo(z,x);const r=[];e._zoneDelegates=r,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(k){throw e._transitionTo(h,z,x),this._zoneDelegate.handleError(this,k),k}return e._zoneDelegates===r&&this._updateTaskCount(e,1),e.state==z&&e._transitionTo(j,z),e}scheduleMicroTask(e,r,k,C){return this.scheduleTask(new p(I,e,r,k,C,void 0))}scheduleMacroTask(e,r,k,C,$){return this.scheduleTask(new p(P,e,r,k,C,$))}scheduleEventTask(e,r,k,C,$){return this.scheduleTask(new p(Q,e,r,k,C,$))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||K).name+"; Execution: "+this.name+")");if(e.state===j||e.state===E){e._transitionTo(G,j,E);try{this._zoneDelegate.cancelTask(this,e)}catch(r){throw e._transitionTo(h,G),this._zoneDelegate.handleError(this,r),r}return this._updateTaskCount(e,-1),e._transitionTo(x,G),e.runCount=0,e}}_updateTaskCount(e,r){const k=e._zoneDelegates;-1==r&&(e._zoneDelegates=null);for(let C=0;CL.hasTask(e,r),onScheduleTask:(L,T,e,r)=>L.scheduleTask(e,r),onInvokeTask:(L,T,e,r,k,C)=>L.invokeTask(e,r,k,C),onCancelTask:(L,T,e,r)=>L.cancelTask(e,r)};class v{constructor(T,e,r){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=T,this._parentDelegate=e,this._forkZS=r&&(r&&r.onFork?r:e._forkZS),this._forkDlgt=r&&(r.onFork?e:e._forkDlgt),this._forkCurrZone=r&&(r.onFork?this.zone:e._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:e._interceptZS),this._interceptDlgt=r&&(r.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this.zone:e._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:e._invokeZS),this._invokeDlgt=r&&(r.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this.zone:e._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:e._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this.zone:e._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:e._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this.zone:e._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:e._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this.zone:e._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:e._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this.zone:e._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const k=r&&r.onHasTask;(k||e&&e._hasTaskZS)&&(this._hasTaskZS=k?r:b,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=T,r.onScheduleTask||(this._scheduleTaskZS=b,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this.zone),r.onInvokeTask||(this._invokeTaskZS=b,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this.zone),r.onCancelTask||(this._cancelTaskZS=b,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this.zone))}fork(T,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,T,e):new d(T,e)}intercept(T,e,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,T,e,r):e}invoke(T,e,r,k,C){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,T,e,r,k,C):e.apply(r,k)}handleError(T,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,T,e)}scheduleTask(T,e){let r=e;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,T,e),r||(r=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=I)throw new Error("Task is missing scheduleFn.");R(e)}return r}invokeTask(T,e,r,k){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,T,e,r,k):e.callback.apply(r,k)}cancelTask(T,e){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,T,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");r=e.cancelFn(e)}return r}hasTask(T,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,T,e)}catch(r){this.handleError(T,r)}}_updateTaskCount(T,e){const r=this._taskCounts,k=r[T],C=r[T]=k+e;if(C<0)throw new Error("More tasks executed then were scheduled.");0!=k&&0!=C||this.hasTask(this.zone,{microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:T})}}class p{constructor(T,e,r,k,C,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=T,this.source=e,this.data=k,this.scheduleFn=C,this.cancelFn=$,!r)throw new Error("callback is not defined");this.callback=r;const u=this;this.invoke=T===Q&&k&&k.useG?p.invokeTask:function(){return p.invokeTask.call(t,u,this,arguments)}}static invokeTask(T,e,r){T||(T=this),te++;try{return T.runCount++,T.zone.runTask(T,e,r)}finally{1==te&&_(),te--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(x,z)}_transitionTo(T,e,r){if(this._state!==e&&this._state!==r)throw new Error(`${this.type} '${this.source}': can not transition to '${T}', expecting state '${e}'${r?" or '"+r+"'":""}, was '${this._state}'.`);this._state=T,T==x&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const M=a("setTimeout"),Z=a("Promise"),N=a("then");let J,B=[],H=!1;function q(L){if(J||t[Z]&&(J=t[Z].resolve(0)),J){let T=J[N];T||(T=J.then),T.call(J,L)}else t[M](L,0)}function R(L){0===te&&0===B.length&&q(_),L&&B.push(L)}function _(){if(!H){for(H=!0;B.length;){const L=B;B=[];for(let T=0;TU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!d[a("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q};let U={parent:null,zone:new d(null,null)},oe=null,te=0;function W(){}o("Zone","Zone"),t.Zone=d}(globalThis);const ce=Object.getOwnPropertyDescriptor,Ee=Object.defineProperty,de=Object.getPrototypeOf,ge=Object.create,Fe=Array.prototype.slice,Oe="addEventListener",Ze="removeEventListener",Ne=Zone.__symbol__(Oe),Ie=Zone.__symbol__(Ze),ae="true",le="false",ke=Zone.__symbol__("");function Me(t,n){return Zone.current.wrap(t,n)}function Le(t,n,i,o,c){return Zone.current.scheduleMacroTask(t,n,i,o,c)}const A=Zone.__symbol__,we=typeof window<"u",Te=we?window:void 0,Y=we&&Te||globalThis,at="removeAttribute";function je(t,n){for(let i=t.length-1;i>=0;i--)"function"==typeof t[i]&&(t[i]=Me(t[i],n+"_"+i));return t}function Be(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&typeof t.set>"u")}const Ue=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Re=!("nw"in Y)&&typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process),Ae=!Re&&!Ue&&!(!we||!Te.HTMLElement),We=typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process)&&!Ue&&!(!we||!Te.HTMLElement),Ce={},qe=function(t){if(!(t=t||Y.event))return;let n=Ce[t.type];n||(n=Ce[t.type]=A("ON_PROPERTY"+t.type));const i=this||t.target||Y,o=i[n];let c;return Ae&&i===Te&&"error"===t.type?(c=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===c&&t.preventDefault()):(c=o&&o.apply(this,arguments),null!=c&&!c&&t.preventDefault()),c};function ze(t,n,i){let o=ce(t,n);if(!o&&i&&ce(i,n)&&(o={enumerable:!0,configurable:!0}),!o||!o.configurable)return;const c=A("on"+n+"patched");if(t.hasOwnProperty(c)&&t[c])return;delete o.writable,delete o.value;const a=o.get,y=o.set,d=n.slice(2);let b=Ce[d];b||(b=Ce[d]=A("ON_PROPERTY"+d)),o.set=function(v){let p=this;!p&&t===Y&&(p=Y),p&&("function"==typeof p[b]&&p.removeEventListener(d,qe),y&&y.call(p,null),p[b]=v,"function"==typeof v&&p.addEventListener(d,qe,!1))},o.get=function(){let v=this;if(!v&&t===Y&&(v=Y),!v)return null;const p=v[b];if(p)return p;if(a){let M=a.call(this);if(M)return o.set.call(this,M),"function"==typeof v[at]&&v.removeAttribute(n),M}return null},Ee(t,n,o),t[c]=!0}function Xe(t,n,i){if(n)for(let o=0;ofunction(y,d){const b=i(y,d);return b.cbIdx>=0&&"function"==typeof d[b.cbIdx]?Le(b.name,d[b.cbIdx],b,c):a.apply(y,d)})}function fe(t,n){t[A("OriginalDelegate")]=n}let Ye=!1,He=!1;function ht(){if(Ye)return He;Ye=!0;try{const t=Te.navigator.userAgent;(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/")||-1!==t.indexOf("Edge/"))&&(He=!0)}catch{}return He}Zone.__load_patch("ZoneAwarePromise",(t,n,i)=>{const o=Object.getOwnPropertyDescriptor,c=Object.defineProperty,y=i.symbol,d=[],b=!1!==t[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],v=y("Promise"),p=y("then"),M="__creationTrace__";i.onUnhandledError=u=>{if(i.showUncaughtError()){const l=u&&u.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",u.zone.name,"; Task:",u.task&&u.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(u)}},i.microtaskDrainDone=()=>{for(;d.length;){const u=d.shift();try{u.zone.runGuarded(()=>{throw u.throwOriginal?u.rejection:u})}catch(l){N(l)}}};const Z=y("unhandledPromiseRejectionHandler");function N(u){i.onUnhandledError(u);try{const l=n[Z];"function"==typeof l&&l.call(this,u)}catch{}}function B(u){return u&&u.then}function H(u){return u}function J(u){return e.reject(u)}const q=y("state"),R=y("value"),_=y("finally"),K=y("parentPromiseValue"),x=y("parentPromiseState"),z="Promise.then",j=null,E=!0,G=!1,h=0;function I(u,l){return s=>{try{X(u,l,s)}catch(f){X(u,!1,f)}}}const P=function(){let u=!1;return function(s){return function(){u||(u=!0,s.apply(null,arguments))}}},Q="Promise resolved with itself",se=y("currentTaskTrace");function X(u,l,s){const f=P();if(u===s)throw new TypeError(Q);if(u[q]===j){let g=null;try{("object"==typeof s||"function"==typeof s)&&(g=s&&s.then)}catch(w){return f(()=>{X(u,!1,w)})(),u}if(l!==G&&s instanceof e&&s.hasOwnProperty(q)&&s.hasOwnProperty(R)&&s[q]!==j)oe(s),X(u,s[q],s[R]);else if(l!==G&&"function"==typeof g)try{g.call(s,f(I(u,l)),f(I(u,!1)))}catch(w){f(()=>{X(u,!1,w)})()}else{u[q]=l;const w=u[R];if(u[R]=s,u[_]===_&&l===E&&(u[q]=u[x],u[R]=u[K]),l===G&&s instanceof Error){const m=n.currentTask&&n.currentTask.data&&n.currentTask.data[M];m&&c(s,se,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{const D=u[R],S=!!s&&_===s[_];S&&(s[K]=D,s[x]=w);const O=l.run(m,void 0,S&&m!==J&&m!==H?[]:[D]);X(s,!0,O)}catch(D){X(s,!1,D)}},s)}const L=function(){},T=t.AggregateError;class e{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(l){return l instanceof e?l:X(new this(null),E,l)}static reject(l){return X(new this(null),G,l)}static withResolvers(){const l={};return l.promise=new e((s,f)=>{l.resolve=s,l.reject=f}),l}static any(l){if(!l||"function"!=typeof l[Symbol.iterator])return Promise.reject(new T([],"All promises were rejected"));const s=[];let f=0;try{for(let m of l)f++,s.push(e.resolve(m))}catch{return Promise.reject(new T([],"All promises were rejected"))}if(0===f)return Promise.reject(new T([],"All promises were rejected"));let g=!1;const w=[];return new e((m,D)=>{for(let S=0;S{g||(g=!0,m(O))},O=>{w.push(O),f--,0===f&&(g=!0,D(new T(w,"All promises were rejected")))})})}static race(l){let s,f,g=new this((D,S)=>{s=D,f=S});function w(D){s(D)}function m(D){f(D)}for(let D of l)B(D)||(D=this.resolve(D)),D.then(w,m);return g}static all(l){return e.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof e?this:e).allWithCallback(l,{thenCallback:f=>({status:"fulfilled",value:f}),errorCallback:f=>({status:"rejected",reason:f})})}static allWithCallback(l,s){let f,g,w=new this((O,V)=>{f=O,g=V}),m=2,D=0;const S=[];for(let O of l){B(O)||(O=this.resolve(O));const V=D;try{O.then(F=>{S[V]=s?s.thenCallback(F):F,m--,0===m&&f(S)},F=>{s?(S[V]=s.errorCallback(F),m--,0===m&&f(S)):g(F)})}catch(F){g(F)}m++,D++}return m-=2,0===m&&f(S),w}constructor(l){const s=this;if(!(s instanceof e))throw new Error("Must be an instanceof Promise.");s[q]=j,s[R]=[];try{const f=P();l&&l(f(I(s,E)),f(I(s,G)))}catch(f){X(s,!1,f)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return e}then(l,s){let f=this.constructor?.[Symbol.species];(!f||"function"!=typeof f)&&(f=this.constructor||e);const g=new f(L),w=n.current;return this[q]==j?this[R].push(w,g,l,s):te(this,w,g,l,s),g}catch(l){return this.then(null,l)}finally(l){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=e);const f=new s(L);f[_]=_;const g=n.current;return this[q]==j?this[R].push(g,f,l,l):te(this,g,f,l,l),f}}e.resolve=e.resolve,e.reject=e.reject,e.race=e.race,e.all=e.all;const r=t[v]=t.Promise;t.Promise=e;const k=y("thenPatched");function C(u){const l=u.prototype,s=o(l,"then");if(s&&(!1===s.writable||!s.configurable))return;const f=l.then;l[p]=f,u.prototype.then=function(g,w){return new e((D,S)=>{f.call(this,D,S)}).then(g,w)},u[k]=!0}return i.patchThen=C,r&&(C(r),ue(t,"fetch",u=>function $(u){return function(l,s){let f=u.apply(l,s);if(f instanceof e)return f;let g=f.constructor;return g[k]||C(g),f}}(u))),Promise[n.__symbol__("uncaughtPromiseErrors")]=d,e}),Zone.__load_patch("toString",t=>{const n=Function.prototype.toString,i=A("OriginalDelegate"),o=A("Promise"),c=A("Error"),a=function(){if("function"==typeof this){const v=this[i];if(v)return"function"==typeof v?n.call(v):Object.prototype.toString.call(v);if(this===Promise){const p=t[o];if(p)return n.call(p)}if(this===Error){const p=t[c];if(p)return n.call(p)}}return n.call(this)};a[i]=n,Function.prototype.toString=a;const y=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":y.call(this)}});let ye=!1;if(typeof window<"u")try{const t=Object.defineProperty({},"passive",{get:function(){ye=!0}});window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch{ye=!1}const dt={useG:!0},ne={},$e={},Ke=new RegExp("^"+ke+"(\\w+)(true|false)$"),Je=A("propagationStopped");function Qe(t,n){const i=(n?n(t):t)+le,o=(n?n(t):t)+ae,c=ke+i,a=ke+o;ne[t]={},ne[t][le]=c,ne[t][ae]=a}function _t(t,n,i,o){const c=o&&o.add||Oe,a=o&&o.rm||Ze,y=o&&o.listeners||"eventListeners",d=o&&o.rmAll||"removeAllListeners",b=A(c),v="."+c+":",p="prependListener",M="."+p+":",Z=function(R,_,K){if(R.isRemoved)return;const x=R.callback;let z;"object"==typeof x&&x.handleEvent&&(R.callback=E=>x.handleEvent(E),R.originalDelegate=x);try{R.invoke(R,_,[K])}catch(E){z=E}const j=R.options;return j&&"object"==typeof j&&j.once&&_[a].call(_,K.type,R.originalDelegate?R.originalDelegate:R.callback,j),z};function N(R,_,K){if(!(_=_||t.event))return;const x=R||_.target||t,z=x[ne[_.type][K?ae:le]];if(z){const j=[];if(1===z.length){const E=Z(z[0],x,_);E&&j.push(E)}else{const E=z.slice();for(let G=0;G{throw G})}}}const B=function(R){return N(this,R,!1)},H=function(R){return N(this,R,!0)};function J(R,_){if(!R)return!1;let K=!0;_&&void 0!==_.useG&&(K=_.useG);const x=_&&_.vh;let z=!0;_&&void 0!==_.chkDup&&(z=_.chkDup);let j=!1;_&&void 0!==_.rt&&(j=_.rt);let E=R;for(;E&&!E.hasOwnProperty(c);)E=de(E);if(!E&&R[c]&&(E=R),!E||E[b])return!1;const G=_&&_.eventNameToString,h={},I=E[b]=E[c],P=E[A(a)]=E[a],Q=E[A(y)]=E[y],se=E[A(d)]=E[d];let X;_&&_.prepend&&(X=E[A(_.prepend)]=E[_.prepend]);const e=K?function(s){if(!h.isExisting)return I.call(h.target,h.eventName,h.capture?H:B,h.options)}:function(s){return I.call(h.target,h.eventName,s.invoke,h.options)},r=K?function(s){if(!s.isRemoved){const f=ne[s.eventName];let g;f&&(g=f[s.capture?ae:le]);const w=g&&s.target[g];if(w)for(let m=0;m{ie.zone.cancelTask(ie)},{once:!0})),h.target=null,Pe&&(Pe.taskData=null),rt&&(ee.once=!0),!ye&&"boolean"==typeof ie.options||(ie.options=ee),ie.target=S,ie.capture=Ge,ie.eventName=O,F&&(ie.originalDelegate=V),D?me.unshift(ie):me.push(ie),m?S:void 0}};return E[c]=l(I,v,e,r,j),X&&(E[p]=l(X,M,function(s){return X.call(h.target,h.eventName,s.invoke,h.options)},r,j,!0)),E[a]=function(){const s=this||t;let f=arguments[0];_&&_.transferEventName&&(f=_.transferEventName(f));const g=arguments[2],w=!!g&&("boolean"==typeof g||g.capture),m=arguments[1];if(!m)return P.apply(this,arguments);if(x&&!x(P,m,s,arguments))return;const D=ne[f];let S;D&&(S=D[w?ae:le]);const O=S&&s[S];if(O)for(let V=0;Vfunction(c,a){c[Je]=!0,o&&o.apply(c,a)})}function Tt(t,n,i,o,c){const a=Zone.__symbol__(o);if(n[a])return;const y=n[a]=n[o];n[o]=function(d,b,v){return b&&b.prototype&&c.forEach(function(p){const M=`${i}.${o}::`+p,Z=b.prototype;try{if(Z.hasOwnProperty(p)){const N=t.ObjectGetOwnPropertyDescriptor(Z,p);N&&N.value?(N.value=t.wrapWithCurrentZone(N.value,M),t._redefineProperty(b.prototype,p,N)):Z[p]&&(Z[p]=t.wrapWithCurrentZone(Z[p],M))}else Z[p]&&(Z[p]=t.wrapWithCurrentZone(Z[p],M))}catch{}}),y.call(n,d,b,v)},t.attachOriginToPatched(n[o],y)}function tt(t,n,i){if(!i||0===i.length)return n;const o=i.filter(a=>a.target===t);if(!o||0===o.length)return n;const c=o[0].ignoreProperties;return n.filter(a=>-1===c.indexOf(a))}function nt(t,n,i,o){t&&Xe(t,tt(t,n,i),o)}function xe(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}Zone.__load_patch("util",(t,n,i)=>{const o=xe(t);i.patchOnProperties=Xe,i.patchMethod=ue,i.bindArguments=je,i.patchMacroTask=ut;const c=n.__symbol__("BLACK_LISTED_EVENTS"),a=n.__symbol__("UNPATCHED_EVENTS");t[a]&&(t[c]=t[a]),t[c]&&(n[c]=n[a]=t[c]),i.patchEventPrototype=Et,i.patchEventTarget=_t,i.isIEOrEdge=ht,i.ObjectDefineProperty=Ee,i.ObjectGetOwnPropertyDescriptor=ce,i.ObjectCreate=ge,i.ArraySlice=Fe,i.patchClass=ve,i.wrapWithCurrentZone=Me,i.filterProperties=tt,i.attachOriginToPatched=fe,i._redefineProperty=Object.defineProperty,i.patchCallbacks=Tt,i.getGlobalObjects=()=>({globalSources:$e,zoneSymbolEventNames:ne,eventNames:o,isBrowser:Ae,isMix:We,isNode:Re,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:ke,ADD_EVENT_LISTENER_STR:Oe,REMOVE_EVENT_LISTENER_STR:Ze})});const De=A("zoneTask");function pe(t,n,i,o){let c=null,a=null;i+=o;const y={};function d(v){const p=v.data;return p.args[0]=function(){return v.invoke.apply(this,arguments)},p.handleId=c.apply(t,p.args),v}function b(v){return a.call(t,v.data.handleId)}c=ue(t,n+=o,v=>function(p,M){if("function"==typeof M[0]){const Z={isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?M[1]||0:void 0,args:M},N=M[0];M[0]=function(){try{return N.apply(this,arguments)}finally{Z.isPeriodic||("number"==typeof Z.handleId?delete y[Z.handleId]:Z.handleId&&(Z.handleId[De]=null))}};const B=Le(n,M[0],Z,d,b);if(!B)return B;const H=B.data.handleId;return"number"==typeof H?y[H]=B:H&&(H[De]=B),H&&H.ref&&H.unref&&"function"==typeof H.ref&&"function"==typeof H.unref&&(B.ref=H.ref.bind(H),B.unref=H.unref.bind(H)),"number"==typeof H||H?H:B}return v.apply(t,M)}),a=ue(t,i,v=>function(p,M){const Z=M[0];let N;"number"==typeof Z?N=y[Z]:(N=Z&&Z[De],N||(N=Z)),N&&"string"==typeof N.type?"notScheduled"!==N.state&&(N.cancelFn&&N.data.isPeriodic||0===N.runCount)&&("number"==typeof Z?delete y[Z]:Z&&(Z[De]=null),N.zone.cancelTask(N)):v.apply(t,M)})}Zone.__load_patch("legacy",t=>{const n=t[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("timers",t=>{const n="set",i="clear";pe(t,n,i,"Timeout"),pe(t,n,i,"Interval"),pe(t,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",t=>{pe(t,"request","cancel","AnimationFrame"),pe(t,"mozRequest","mozCancel","AnimationFrame"),pe(t,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(t,n)=>{const i=["alert","prompt","confirm"];for(let o=0;ofunction(b,v){return n.current.run(a,t,v,d)})}),Zone.__load_patch("EventTarget",(t,n,i)=>{(function kt(t,n){n.patchEventPrototype(t,n)})(t,i),function gt(t,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:o,TRUE_STR:c,FALSE_STR:a,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let b=0;b{ve("MutationObserver"),ve("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(t,n,i)=>{ve("IntersectionObserver")}),Zone.__load_patch("FileReader",(t,n,i)=>{ve("FileReader")}),Zone.__load_patch("on_property",(t,n,i)=>{!function yt(t,n){if(Re&&!We||Zone[t.symbol("patchEvents")])return;const i=n.__Zone_ignore_on_properties;let o=[];if(Ae){const c=window;o=o.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const a=function ft(){try{const t=Te.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:c,ignoreProperties:["error"]}]:[];nt(c,xe(c),i&&i.concat(a),de(c))}o=o.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{!function mt(t,n){const{isBrowser:i,isMix:o}=n.getGlobalObjects();(i||o)&&t.customElements&&"customElements"in t&&n.patchCallbacks(n,t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"])}(t,i)}),Zone.__load_patch("XHR",(t,n)=>{!function b(v){const p=v.XMLHttpRequest;if(!p)return;const M=p.prototype;let N=M[Ne],B=M[Ie];if(!N){const h=v.XMLHttpRequestEventTarget;if(h){const I=h.prototype;N=I[Ne],B=I[Ie]}}const H="readystatechange",J="scheduled";function q(h){const I=h.data,P=I.target;P[a]=!1,P[d]=!1;const Q=P[c];N||(N=P[Ne],B=P[Ie]),Q&&B.call(P,H,Q);const se=P[c]=()=>{if(P.readyState===P.DONE)if(!I.aborted&&P[a]&&h.state===J){const U=P[n.__symbol__("loadfalse")];if(0!==P.status&&U&&U.length>0){const oe=h.invoke;h.invoke=function(){const te=P[n.__symbol__("loadfalse")];for(let W=0;Wfunction(h,I){return h[o]=0==I[2],h[y]=I[1],K.apply(h,I)}),z=A("fetchTaskAborting"),j=A("fetchTaskScheduling"),E=ue(M,"send",()=>function(h,I){if(!0===n.current[j]||h[o])return E.apply(h,I);{const P={target:h,url:h[y],isPeriodic:!1,args:I,aborted:!1},Q=Le("XMLHttpRequest.send",R,P,q,_);h&&!0===h[d]&&!P.aborted&&Q.state===J&&Q.invoke()}}),G=ue(M,"abort",()=>function(h,I){const P=function Z(h){return h[i]}(h);if(P&&"string"==typeof P.type){if(null==P.cancelFn||P.data&&P.data.aborted)return;P.zone.cancelTask(P)}else if(!0===n.current[z])return G.apply(h,I)})}(t);const i=A("xhrTask"),o=A("xhrSync"),c=A("xhrListener"),a=A("xhrScheduled"),y=A("xhrURL"),d=A("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",t=>{t.navigator&&t.navigator.geolocation&&function lt(t,n){const i=t.constructor.name;for(let o=0;o{const b=function(){return d.apply(this,je(arguments,i+"."+c))};return fe(b,d),b})(a)}}}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(t,n)=>{function i(o){return function(c){et(t,o).forEach(y=>{const d=t.PromiseRejectionEvent;if(d){const b=new d(o,{promise:c.promise,reason:c.rejection});y.invoke(b)}})}}t.PromiseRejectionEvent&&(n[A("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[A("rejectionHandledHandler")]=i("rejectionhandled"))}),Zone.__load_patch("queueMicrotask",(t,n,i)=>{!function pt(t,n){n.patchMethod(t,"queueMicrotask",i=>function(o,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}(t,i)})}},ce=>{ce(ce.s=50)}]); \ No newline at end of file diff --git a/docs/polyfills.a14dbcdd2db01c6b.js b/docs/polyfills.a14dbcdd2db01c6b.js new file mode 100644 index 0000000..c965658 --- /dev/null +++ b/docs/polyfills.a14dbcdd2db01c6b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdevnet=self.webpackChunkdevnet||[]).push([[461],{50:(te,Q,ve)=>{ve(935)},935:()=>{const te=globalThis;function Q(e){return(te.__Zone_symbol_prefix||"__zone_symbol__")+e}const Te=Object.getOwnPropertyDescriptor,Le=Object.defineProperty,Ie=Object.getPrototypeOf,_t=Object.create,Et=Array.prototype.slice,Me="addEventListener",Ze="removeEventListener",Ae=Q(Me),je=Q(Ze),ae="true",le="false",Pe=Q("");function He(e,r){return Zone.current.wrap(e,r)}function xe(e,r,c,t,i){return Zone.current.scheduleMacroTask(e,r,c,t,i)}const j=Q,Ce=typeof window<"u",ge=Ce?window:void 0,$=Ce&&ge||globalThis,Tt="removeAttribute";function Ve(e,r){for(let c=e.length-1;c>=0;c--)"function"==typeof e[c]&&(e[c]=He(e[c],r+"_"+c));return e}function We(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&typeof e.set>"u")}const qe=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,De=!("nw"in $)&&typeof $.process<"u"&&"[object process]"===$.process.toString(),Ge=!De&&!qe&&!(!Ce||!ge.HTMLElement),Xe=typeof $.process<"u"&&"[object process]"===$.process.toString()&&!qe&&!(!Ce||!ge.HTMLElement),Se={},yt=j("enable_beforeunload"),Ye=function(e){if(!(e=e||$.event))return;let r=Se[e.type];r||(r=Se[e.type]=j("ON_PROPERTY"+e.type));const c=this||e.target||$,t=c[r];let i;return Ge&&c===ge&&"error"===e.type?(i=t&&t.call(this,e.message,e.filename,e.lineno,e.colno,e.error),!0===i&&e.preventDefault()):(i=t&&t.apply(this,arguments),"beforeunload"===e.type&&$[yt]&&"string"==typeof i?e.returnValue=i:null!=i&&!i&&e.preventDefault()),i};function $e(e,r,c){let t=Te(e,r);if(!t&&c&&Te(c,r)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;const i=j("on"+r+"patched");if(e.hasOwnProperty(i)&&e[i])return;delete t.writable,delete t.value;const u=t.get,E=t.set,T=r.slice(2);let m=Se[T];m||(m=Se[T]=j("ON_PROPERTY"+T)),t.set=function(D){let d=this;!d&&e===$&&(d=$),d&&("function"==typeof d[m]&&d.removeEventListener(T,Ye),E&&E.call(d,null),d[m]=D,"function"==typeof D&&d.addEventListener(T,Ye,!1))},t.get=function(){let D=this;if(!D&&e===$&&(D=$),!D)return null;const d=D[m];if(d)return d;if(u){let w=u.call(this);if(w)return t.set.call(this,w),"function"==typeof D[Tt]&&D.removeAttribute(r),w}return null},Le(e,r,t),e[i]=!0}function Ke(e,r,c){if(r)for(let t=0;tfunction(E,T){const m=c(E,T);return m.cbIdx>=0&&"function"==typeof T[m.cbIdx]?xe(m.name,T[m.cbIdx],m,i):u.apply(E,T)})}function fe(e,r){e[j("OriginalDelegate")]=r}let Je=!1,Be=!1;function kt(){if(Je)return Be;Je=!0;try{const e=ge.navigator.userAgent;(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/")||-1!==e.indexOf("Edge/"))&&(Be=!0)}catch{}return Be}function Qe(e){return"function"==typeof e}function et(e){return"number"==typeof e}let ye=!1;if(typeof window<"u")try{const e=Object.defineProperty({},"passive",{get:function(){ye=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{ye=!1}const vt={useG:!0},ne={},tt={},nt=new RegExp("^"+Pe+"(\\w+)(true|false)$"),rt=j("propagationStopped");function ot(e,r){const c=(r?r(e):e)+le,t=(r?r(e):e)+ae,i=Pe+c,u=Pe+t;ne[e]={},ne[e][le]=i,ne[e][ae]=u}function bt(e,r,c,t){const i=t&&t.add||Me,u=t&&t.rm||Ze,E=t&&t.listeners||"eventListeners",T=t&&t.rmAll||"removeAllListeners",m=j(i),D="."+i+":",d="prependListener",w="."+d+":",Z=function(k,h,H){if(k.isRemoved)return;const V=k.callback;let Y;"object"==typeof V&&V.handleEvent&&(k.callback=g=>V.handleEvent(g),k.originalDelegate=V);try{k.invoke(k,h,[H])}catch(g){Y=g}const G=k.options;return G&&"object"==typeof G&&G.once&&h[u].call(h,H.type,k.originalDelegate?k.originalDelegate:k.callback,G),Y};function x(k,h,H){if(!(h=h||e.event))return;const V=k||h.target||e,Y=V[ne[h.type][H?ae:le]];if(Y){const G=[];if(1===Y.length){const g=Z(Y[0],V,h);g&&G.push(g)}else{const g=Y.slice();for(let z=0;z{throw z})}}}const U=function(k){return x(this,k,!1)},K=function(k){return x(this,k,!0)};function J(k,h){if(!k)return!1;let H=!0;h&&void 0!==h.useG&&(H=h.useG);const V=h&&h.vh;let Y=!0;h&&void 0!==h.chkDup&&(Y=h.chkDup);let G=!1;h&&void 0!==h.rt&&(G=h.rt);let g=k;for(;g&&!g.hasOwnProperty(i);)g=Ie(g);if(!g&&k[i]&&(g=k),!g||g[m])return!1;const z=h&&h.eventNameToString,O={},R=g[m]=g[i],b=g[j(u)]=g[u],S=g[j(E)]=g[E],ee=g[j(T)]=g[T];let W;h&&h.prepend&&(W=g[j(h.prepend)]=g[h.prepend]);const q=H?function(s){if(!O.isExisting)return R.call(O.target,O.eventName,O.capture?K:U,O.options)}:function(s){return R.call(O.target,O.eventName,s.invoke,O.options)},A=H?function(s){if(!s.isRemoved){const l=ne[s.eventName];let v;l&&(v=l[s.capture?ae:le]);const C=v&&s.target[v];if(C)for(let y=0;yse.zone.cancelTask(se);s.call(pe,"abort",ce,{once:!0}),se.removeAbortListener=()=>pe.removeEventListener("abort",ce)}return O.target=null,Re&&(Re.taskData=null),lt&&(O.options.once=!0),!ye&&"boolean"==typeof se.options||(se.options=ie),se.target=I,se.capture=Ue,se.eventName=M,F&&(se.originalDelegate=B),L?ke.unshift(se):ke.push(se),y?I:void 0}};return g[i]=a(R,D,q,A,G),W&&(g[d]=a(W,w,function(s){return W.call(O.target,O.eventName,s.invoke,O.options)},A,G,!0)),g[u]=function(){const s=this||e;let l=arguments[0];h&&h.transferEventName&&(l=h.transferEventName(l));const v=arguments[2],C=!!v&&("boolean"==typeof v||v.capture),y=arguments[1];if(!y)return b.apply(this,arguments);if(V&&!V(b,y,s,arguments))return;const L=ne[l];let I;L&&(I=L[C?ae:le]);const M=I&&s[I];if(M)for(let B=0;Bfunction(i,u){i[rt]=!0,t&&t.apply(i,u)})}const Oe=j("zoneTask");function me(e,r,c,t){let i=null,u=null;c+=t;const E={};function T(D){const d=D.data;d.args[0]=function(){return D.invoke.apply(this,arguments)};const w=i.apply(e,d.args);return et(w)?d.handleId=w:(d.handle=w,d.isRefreshable=Qe(w.refresh)),D}function m(D){const{handle:d,handleId:w}=D.data;return u.call(e,d??w)}i=ue(e,r+=t,D=>function(d,w){if(Qe(w[0])){const Z={isRefreshable:!1,isPeriodic:"Interval"===t,delay:"Timeout"===t||"Interval"===t?w[1]||0:void 0,args:w},x=w[0];w[0]=function(){try{return x.apply(this,arguments)}finally{const{handle:H,handleId:V,isPeriodic:Y,isRefreshable:G}=Z;!Y&&!G&&(V?delete E[V]:H&&(H[Oe]=null))}};const U=xe(r,w[0],Z,T,m);if(!U)return U;const{handleId:K,handle:J,isRefreshable:X,isPeriodic:k}=U.data;if(K)E[K]=U;else if(J&&(J[Oe]=U,X&&!k)){const h=J.refresh;J.refresh=function(){const{zone:H,state:V}=U;return"notScheduled"===V?(U._state="scheduled",H._updateTaskCount(U,1)):"running"===V&&(U._state="scheduling"),h.call(this)}}return J??K??U}return D.apply(e,w)}),u=ue(e,c,D=>function(d,w){const Z=w[0];let x;et(Z)?(x=E[Z],delete E[Z]):(x=Z?.[Oe],x?Z[Oe]=null:x=Z),x?.type?x.cancelFn&&x.zone.cancelTask(x):D.apply(e,w)})}function it(e,r,c){if(!c||0===c.length)return r;const t=c.filter(u=>u.target===e);if(!t||0===t.length)return r;const i=t[0].ignoreProperties;return r.filter(u=>-1===i.indexOf(u))}function ct(e,r,c,t){e&&Ke(e,it(e,r,c),t)}function Fe(e){return Object.getOwnPropertyNames(e).filter(r=>r.startsWith("on")&&r.length>2).map(r=>r.substring(2))}function It(e,r,c,t,i){const u=Zone.__symbol__(t);if(r[u])return;const E=r[u]=r[t];r[t]=function(T,m,D){return m&&m.prototype&&i.forEach(function(d){const w=`${c}.${t}::`+d,Z=m.prototype;try{if(Z.hasOwnProperty(d)){const x=e.ObjectGetOwnPropertyDescriptor(Z,d);x&&x.value?(x.value=e.wrapWithCurrentZone(x.value,w),e._redefineProperty(m.prototype,d,x)):Z[d]&&(Z[d]=e.wrapWithCurrentZone(Z[d],w))}else Z[d]&&(Z[d]=e.wrapWithCurrentZone(Z[d],w))}catch{}}),E.call(r,T,m,D)},e.attachOriginToPatched(r[t],E)}const at=function be(){const e=globalThis,r=!0===e[Q("forceDuplicateZoneCheck")];if(e.Zone&&(r||"function"!=typeof e.Zone.__symbol__))throw new Error("Zone already loaded.");return e.Zone??=function ve(){const e=te.performance;function r(N){e&&e.mark&&e.mark(N)}function c(N,_){e&&e.measure&&e.measure(N,_)}r("Zone");let t=(()=>{class N{static#e=this.__symbol__=Q;static assertZonePatched(){if(te.Promise!==O.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let n=N.current;for(;n.parent;)n=n.parent;return n}static get current(){return b.zone}static get currentTask(){return S}static __load_patch(n,o,p=!1){if(O.hasOwnProperty(n)){const P=!0===te[Q("forceDuplicateZoneCheck")];if(!p&&P)throw Error("Already loaded patch: "+n)}else if(!te["__Zone_disable_"+n]){const P="Zone:"+n;r(P),O[n]=o(te,N,R),c(P,P)}}get parent(){return this._parent}get name(){return this._name}constructor(n,o){this._parent=n,this._name=o?o.name||"unnamed":"",this._properties=o&&o.properties||{},this._zoneDelegate=new u(this,this._parent&&this._parent._zoneDelegate,o)}get(n){const o=this.getZoneWith(n);if(o)return o._properties[n]}getZoneWith(n){let o=this;for(;o;){if(o._properties.hasOwnProperty(n))return o;o=o._parent}return null}fork(n){if(!n)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,n)}wrap(n,o){if("function"!=typeof n)throw new Error("Expecting function got: "+n);const p=this._zoneDelegate.intercept(this,n,o),P=this;return function(){return P.runGuarded(p,this,arguments,o)}}run(n,o,p,P){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,n,o,p,P)}finally{b=b.parent}}runGuarded(n,o=null,p,P){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,n,o,p,P)}catch(q){if(this._zoneDelegate.handleError(this,q))throw q}}finally{b=b.parent}}runTask(n,o,p){if(n.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(n.zone||J).name+"; Execution: "+this.name+")");const P=n,{type:q,data:{isPeriodic:A=!1,isRefreshable:_e=!1}={}}=n;if(n.state===X&&(q===z||q===g))return;const he=n.state!=H;he&&P._transitionTo(H,h);const de=S;S=P,b={parent:b,zone:this};try{q==g&&n.data&&!A&&!_e&&(n.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,P,o,p)}catch(oe){if(this._zoneDelegate.handleError(this,oe))throw oe}}finally{const oe=n.state;if(oe!==X&&oe!==Y)if(q==z||A||_e&&oe===k)he&&P._transitionTo(h,H,k);else{const f=P._zoneDelegates;this._updateTaskCount(P,-1),he&&P._transitionTo(X,H,X),_e&&(P._zoneDelegates=f)}b=b.parent,S=de}}scheduleTask(n){if(n.zone&&n.zone!==this){let p=this;for(;p;){if(p===n.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${n.zone.name}`);p=p.parent}}n._transitionTo(k,X);const o=[];n._zoneDelegates=o,n._zone=this;try{n=this._zoneDelegate.scheduleTask(this,n)}catch(p){throw n._transitionTo(Y,k,X),this._zoneDelegate.handleError(this,p),p}return n._zoneDelegates===o&&this._updateTaskCount(n,1),n.state==k&&n._transitionTo(h,k),n}scheduleMicroTask(n,o,p,P){return this.scheduleTask(new E(G,n,o,p,P,void 0))}scheduleMacroTask(n,o,p,P,q){return this.scheduleTask(new E(g,n,o,p,P,q))}scheduleEventTask(n,o,p,P,q){return this.scheduleTask(new E(z,n,o,p,P,q))}cancelTask(n){if(n.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(n.zone||J).name+"; Execution: "+this.name+")");if(n.state===h||n.state===H){n._transitionTo(V,h,H);try{this._zoneDelegate.cancelTask(this,n)}catch(o){throw n._transitionTo(Y,V),this._zoneDelegate.handleError(this,o),o}return this._updateTaskCount(n,-1),n._transitionTo(X,V),n.runCount=-1,n}}_updateTaskCount(n,o){const p=n._zoneDelegates;-1==o&&(n._zoneDelegates=null);for(let P=0;PN.hasTask(n,o),onScheduleTask:(N,_,n,o)=>N.scheduleTask(n,o),onInvokeTask:(N,_,n,o,p,P)=>N.invokeTask(n,o,p,P),onCancelTask:(N,_,n,o)=>N.cancelTask(n,o)};class u{get zone(){return this._zone}constructor(_,n,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=_,this._parentDelegate=n,this._forkZS=o&&(o&&o.onFork?o:n._forkZS),this._forkDlgt=o&&(o.onFork?n:n._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:n._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:n._interceptZS),this._interceptDlgt=o&&(o.onIntercept?n:n._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:n._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:n._invokeZS),this._invokeDlgt=o&&(o.onInvoke?n:n._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:n._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:n._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?n:n._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:n._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:n._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?n:n._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:n._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:n._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?n:n._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:n._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:n._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?n:n._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:n._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const p=o&&o.onHasTask;(p||n&&n._hasTaskZS)&&(this._hasTaskZS=p?o:i,this._hasTaskDlgt=n,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=n,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=n,this._invokeTaskCurrZone=this._zone),o.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=n,this._cancelTaskCurrZone=this._zone))}fork(_,n){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,_,n):new t(_,n)}intercept(_,n,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,_,n,o):n}invoke(_,n,o,p,P){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,_,n,o,p,P):n.apply(o,p)}handleError(_,n){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,_,n)}scheduleTask(_,n){let o=n;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,_,n),o||(o=n);else if(n.scheduleFn)n.scheduleFn(n);else{if(n.type!=G)throw new Error("Task is missing scheduleFn.");U(n)}return o}invokeTask(_,n,o,p){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,_,n,o,p):n.callback.apply(o,p)}cancelTask(_,n){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,_,n);else{if(!n.cancelFn)throw Error("Task is not cancelable");o=n.cancelFn(n)}return o}hasTask(_,n){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,_,n)}catch(o){this.handleError(_,o)}}_updateTaskCount(_,n){const o=this._taskCounts,p=o[_],P=o[_]=p+n;if(P<0)throw new Error("More tasks executed then were scheduled.");0!=p&&0!=P||this.hasTask(this._zone,{microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:_})}}class E{constructor(_,n,o,p,P,q){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=_,this.source=n,this.data=p,this.scheduleFn=P,this.cancelFn=q,!o)throw new Error("callback is not defined");this.callback=o;const A=this;this.invoke=_===z&&p&&p.useG?E.invokeTask:function(){return E.invokeTask.call(te,A,this,arguments)}}static invokeTask(_,n,o){_||(_=this),ee++;try{return _.runCount++,_.zone.runTask(_,n,o)}finally{1==ee&&K(),ee--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(X,k)}_transitionTo(_,n,o){if(this._state!==n&&this._state!==o)throw new Error(`${this.type} '${this.source}': can not transition to '${_}', expecting state '${n}'${o?" or '"+o+"'":""}, was '${this._state}'.`);this._state=_,_==X&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const T=Q("setTimeout"),m=Q("Promise"),D=Q("then");let Z,d=[],w=!1;function x(N){if(Z||te[m]&&(Z=te[m].resolve(0)),Z){let _=Z[D];_||(_=Z.then),_.call(Z,N)}else te[T](N,0)}function U(N){0===ee&&0===d.length&&x(K),N&&d.push(N)}function K(){if(!w){for(w=!0;d.length;){const N=d;d=[];for(let _=0;_b,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:U,showUncaughtError:()=>!t[Q("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:x};let b={parent:null,zone:new t(null,null)},S=null,ee=0;function W(){}return c("Zone","Zone"),t}(),e.Zone}();(function Zt(e){(function Nt(e){e.__load_patch("ZoneAwarePromise",(r,c,t)=>{const i=Object.getOwnPropertyDescriptor,u=Object.defineProperty,T=t.symbol,m=[],D=!1!==r[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],d=T("Promise"),w=T("then"),Z="__creationTrace__";t.onUnhandledError=f=>{if(t.showUncaughtError()){const a=f&&f.rejection;a?console.error("Unhandled Promise rejection:",a instanceof Error?a.message:a,"; Zone:",f.zone.name,"; Task:",f.task&&f.task.source,"; Value:",a,a instanceof Error?a.stack:void 0):console.error(f)}},t.microtaskDrainDone=()=>{for(;m.length;){const f=m.shift();try{f.zone.runGuarded(()=>{throw f.throwOriginal?f.rejection:f})}catch(a){U(a)}}};const x=T("unhandledPromiseRejectionHandler");function U(f){t.onUnhandledError(f);try{const a=c[x];"function"==typeof a&&a.call(this,f)}catch{}}function K(f){return f&&f.then}function J(f){return f}function X(f){return A.reject(f)}const k=T("state"),h=T("value"),H=T("finally"),V=T("parentPromiseValue"),Y=T("parentPromiseState"),G="Promise.then",g=null,z=!0,O=!1,R=0;function b(f,a){return s=>{try{N(f,a,s)}catch(l){N(f,!1,l)}}}const S=function(){let f=!1;return function(s){return function(){f||(f=!0,s.apply(null,arguments))}}},ee="Promise resolved with itself",W=T("currentTaskTrace");function N(f,a,s){const l=S();if(f===s)throw new TypeError(ee);if(f[k]===g){let v=null;try{("object"==typeof s||"function"==typeof s)&&(v=s&&s.then)}catch(C){return l(()=>{N(f,!1,C)})(),f}if(a!==O&&s instanceof A&&s.hasOwnProperty(k)&&s.hasOwnProperty(h)&&s[k]!==g)n(s),N(f,s[k],s[h]);else if(a!==O&&"function"==typeof v)try{v.call(s,l(b(f,a)),l(b(f,!1)))}catch(C){l(()=>{N(f,!1,C)})()}else{f[k]=a;const C=f[h];if(f[h]=s,f[H]===H&&a===z&&(f[k]=f[Y],f[h]=f[V]),a===O&&s instanceof Error){const y=c.currentTask&&c.currentTask.data&&c.currentTask.data[Z];y&&u(s,W,{configurable:!0,enumerable:!1,writable:!0,value:y})}for(let y=0;y{try{const L=f[h],I=!!s&&H===s[H];I&&(s[V]=L,s[Y]=C);const M=a.run(y,void 0,I&&y!==X&&y!==J?[]:[L]);N(s,!0,M)}catch(L){N(s,!1,L)}},s)}const P=function(){},q=r.AggregateError;class A{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(a){return a instanceof A?a:N(new this(null),z,a)}static reject(a){return N(new this(null),O,a)}static withResolvers(){const a={};return a.promise=new A((s,l)=>{a.resolve=s,a.reject=l}),a}static any(a){if(!a||"function"!=typeof a[Symbol.iterator])return Promise.reject(new q([],"All promises were rejected"));const s=[];let l=0;try{for(let y of a)l++,s.push(A.resolve(y))}catch{return Promise.reject(new q([],"All promises were rejected"))}if(0===l)return Promise.reject(new q([],"All promises were rejected"));let v=!1;const C=[];return new A((y,L)=>{for(let I=0;I{v||(v=!0,y(M))},M=>{C.push(M),l--,0===l&&(v=!0,L(new q(C,"All promises were rejected")))})})}static race(a){let s,l,v=new this((L,I)=>{s=L,l=I});function C(L){s(L)}function y(L){l(L)}for(let L of a)K(L)||(L=this.resolve(L)),L.then(C,y);return v}static all(a){return A.allWithCallback(a)}static allSettled(a){return(this&&this.prototype instanceof A?this:A).allWithCallback(a,{thenCallback:l=>({status:"fulfilled",value:l}),errorCallback:l=>({status:"rejected",reason:l})})}static allWithCallback(a,s){let l,v,C=new this((M,B)=>{l=M,v=B}),y=2,L=0;const I=[];for(let M of a){K(M)||(M=this.resolve(M));const B=L;try{M.then(F=>{I[B]=s?s.thenCallback(F):F,y--,0===y&&l(I)},F=>{s?(I[B]=s.errorCallback(F),y--,0===y&&l(I)):v(F)})}catch(F){v(F)}y++,L++}return y-=2,0===y&&l(I),C}constructor(a){const s=this;if(!(s instanceof A))throw new Error("Must be an instanceof Promise.");s[k]=g,s[h]=[];try{const l=S();a&&a(l(b(s,z)),l(b(s,O)))}catch(l){N(s,!1,l)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return A}then(a,s){let l=this.constructor?.[Symbol.species];(!l||"function"!=typeof l)&&(l=this.constructor||A);const v=new l(P),C=c.current;return this[k]==g?this[h].push(C,v,a,s):o(this,C,v,a,s),v}catch(a){return this.then(null,a)}finally(a){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=A);const l=new s(P);l[H]=H;const v=c.current;return this[k]==g?this[h].push(v,l,a,a):o(this,v,l,a,a),l}}A.resolve=A.resolve,A.reject=A.reject,A.race=A.race,A.all=A.all;const _e=r[d]=r.Promise;r.Promise=A;const he=T("thenPatched");function de(f){const a=f.prototype,s=i(a,"then");if(s&&(!1===s.writable||!s.configurable))return;const l=a.then;a[w]=l,f.prototype.then=function(v,C){return new A((L,I)=>{l.call(this,L,I)}).then(v,C)},f[he]=!0}return t.patchThen=de,_e&&(de(_e),ue(r,"fetch",f=>function oe(f){return function(a,s){let l=f.apply(a,s);if(l instanceof A)return l;let v=l.constructor;return v[he]||de(v),l}}(f))),Promise[c.__symbol__("uncaughtPromiseErrors")]=m,A})})(e),function Lt(e){e.__load_patch("toString",r=>{const c=Function.prototype.toString,t=j("OriginalDelegate"),i=j("Promise"),u=j("Error"),E=function(){if("function"==typeof this){const d=this[t];if(d)return"function"==typeof d?c.call(d):Object.prototype.toString.call(d);if(this===Promise){const w=r[i];if(w)return c.call(w)}if(this===Error){const w=r[u];if(w)return c.call(w)}}return c.call(this)};E[t]=c,Function.prototype.toString=E;const T=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":T.call(this)}})}(e),function Mt(e){e.__load_patch("util",(r,c,t)=>{const i=Fe(r);t.patchOnProperties=Ke,t.patchMethod=ue,t.bindArguments=Ve,t.patchMacroTask=mt;const u=c.__symbol__("BLACK_LISTED_EVENTS"),E=c.__symbol__("UNPATCHED_EVENTS");r[E]&&(r[u]=r[E]),r[u]&&(c[u]=c[E]=r[u]),t.patchEventPrototype=Pt,t.patchEventTarget=bt,t.isIEOrEdge=kt,t.ObjectDefineProperty=Le,t.ObjectGetOwnPropertyDescriptor=Te,t.ObjectCreate=_t,t.ArraySlice=Et,t.patchClass=we,t.wrapWithCurrentZone=He,t.filterProperties=it,t.attachOriginToPatched=fe,t._redefineProperty=Object.defineProperty,t.patchCallbacks=It,t.getGlobalObjects=()=>({globalSources:tt,zoneSymbolEventNames:ne,eventNames:i,isBrowser:Ge,isMix:Xe,isNode:De,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:Pe,ADD_EVENT_LISTENER_STR:Me,REMOVE_EVENT_LISTENER_STR:Ze})})}(e)})(at),function Ot(e){e.__load_patch("legacy",r=>{const c=r[e.__symbol__("legacyPatch")];c&&c()}),e.__load_patch("timers",r=>{const c="set",t="clear";me(r,c,t,"Timeout"),me(r,c,t,"Interval"),me(r,c,t,"Immediate")}),e.__load_patch("requestAnimationFrame",r=>{me(r,"request","cancel","AnimationFrame"),me(r,"mozRequest","mozCancel","AnimationFrame"),me(r,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(r,c)=>{const t=["alert","prompt","confirm"];for(let i=0;ifunction(D,d){return c.current.run(E,r,d,m)})}),e.__load_patch("EventTarget",(r,c,t)=>{(function Dt(e,r){r.patchEventPrototype(e,r)})(r,t),function Ct(e,r){if(Zone[r.symbol("patchEventTarget")])return;const{eventNames:c,zoneSymbolEventNames:t,TRUE_STR:i,FALSE_STR:u,ZONE_SYMBOL_PREFIX:E}=r.getGlobalObjects();for(let m=0;m{we("MutationObserver"),we("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(r,c,t)=>{we("IntersectionObserver")}),e.__load_patch("FileReader",(r,c,t)=>{we("FileReader")}),e.__load_patch("on_property",(r,c,t)=>{!function St(e,r){if(De&&!Xe||Zone[e.symbol("patchEvents")])return;const c=r.__Zone_ignore_on_properties;let t=[];if(Ge){const i=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const u=function pt(){try{const e=ge.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:i,ignoreProperties:["error"]}]:[];ct(i,Fe(i),c&&c.concat(u),Ie(i))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let i=0;i{!function Rt(e,r){const{isBrowser:c,isMix:t}=r.getGlobalObjects();(c||t)&&e.customElements&&"customElements"in e&&r.patchCallbacks(r,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"])}(r,t)}),e.__load_patch("XHR",(r,c)=>{!function D(d){const w=d.XMLHttpRequest;if(!w)return;const Z=w.prototype;let U=Z[Ae],K=Z[je];if(!U){const R=d.XMLHttpRequestEventTarget;if(R){const b=R.prototype;U=b[Ae],K=b[je]}}const J="readystatechange",X="scheduled";function k(R){const b=R.data,S=b.target;S[E]=!1,S[m]=!1;const ee=S[u];U||(U=S[Ae],K=S[je]),ee&&K.call(S,J,ee);const W=S[u]=()=>{if(S.readyState===S.DONE)if(!b.aborted&&S[E]&&R.state===X){const _=S[c.__symbol__("loadfalse")];if(0!==S.status&&_&&_.length>0){const n=R.invoke;R.invoke=function(){const o=S[c.__symbol__("loadfalse")];for(let p=0;pfunction(R,b){return R[i]=0==b[2],R[T]=b[1],V.apply(R,b)}),G=j("fetchTaskAborting"),g=j("fetchTaskScheduling"),z=ue(Z,"send",()=>function(R,b){if(!0===c.current[g]||R[i])return z.apply(R,b);{const S={target:R,url:R[T],isPeriodic:!1,args:b,aborted:!1},ee=xe("XMLHttpRequest.send",h,S,k,H);R&&!0===R[m]&&!S.aborted&&ee.state===X&&ee.invoke()}}),O=ue(Z,"abort",()=>function(R,b){const S=function x(R){return R[t]}(R);if(S&&"string"==typeof S.type){if(null==S.cancelFn||S.data&&S.data.aborted)return;S.zone.cancelTask(S)}else if(!0===c.current[G])return O.apply(R,b)})}(r);const t=j("xhrTask"),i=j("xhrSync"),u=j("xhrListener"),E=j("xhrScheduled"),T=j("xhrURL"),m=j("xhrErrorBeforeScheduled")}),e.__load_patch("geolocation",r=>{r.navigator&&r.navigator.geolocation&&function gt(e,r){const c=e.constructor.name;for(let t=0;t{const m=function(){return T.apply(this,Ve(arguments,c+"."+i))};return fe(m,T),m})(u)}}}(r.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(r,c)=>{function t(i){return function(u){st(r,i).forEach(T=>{const m=r.PromiseRejectionEvent;if(m){const D=new m(i,{promise:u.promise,reason:u.rejection});T.invoke(D)}})}}r.PromiseRejectionEvent&&(c[j("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),c[j("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(r,c,t)=>{!function wt(e,r){r.patchMethod(e,"queueMicrotask",c=>function(t,i){Zone.current.scheduleMicroTask("queueMicrotask",i[0])})}(r,t)})}(at)}},te=>{te(te.s=50)}]); \ No newline at end of file diff --git a/docs/styles.31ce2939ea8ebe2b.css b/docs/styles.8fdf378fc547f845.css similarity index 70% rename from docs/styles.31ce2939ea8ebe2b.css rename to docs/styles.8fdf378fc547f845.css index bec222d..ffcf310 100644 --- a/docs/styles.31ce2939ea8ebe2b.css +++ b/docs/styles.8fdf378fc547f845.css @@ -3,4 +3,4 @@ * Copyright 2011-2022 The Bootstrap Authors * Copyright 2011-2022 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) -*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, .175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, .05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, .1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, .15),0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:first-child:hover,:not(.btn-check)+.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius: calc(.375rem - 1px) ;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, .15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(0, 0, 0, .55);--bs-navbar-hover-color:rgba(0, 0, 0, .7);--bs-navbar-disabled-color:rgba(0, 0, 0, .3);--bs-navbar-active-color:rgba(0, 0, 0, .9);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, .9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, .9);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, .1);--bs-navbar-toggler-border-radius:.375rem;--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, .55);--bs-navbar-hover-color:rgba(255, 255, 255, .75);--bs-navbar-disabled-color:rgba(255, 255, 255, .25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(.375rem - 1px) ;--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:#fff;--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:.375rem;--bs-accordion-inner-border-radius: calc(.375rem - 1px) ;--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-body-color%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:.5rem}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:.25rem}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, .075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, .125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, .85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:.375rem;--bs-toast-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, .85);--bs-toast-header-border-color:rgba(0, 0, 0, .05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:.5rem;--bs-modal-box-shadow:0 .125rem .25rem rgba(0, 0, 0, .075);--bs-modal-inner-border-radius: calc(.5rem - 1px) ;--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:.375rem;--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:.5rem;--bs-popover-inner-border-radius: calc(.5rem - 1px) ;--bs-popover-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 .125rem .25rem rgba(0, 0, 0, .075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.text-justify{text-align:justify;text-justify:inter-word}.nav-page{display:table;list-style:none;width:100%;margin:20px 0;padding:20px 5px}.nav-page-item{display:table-cell}.nav-page-item:last-child{text-align:right}.nav-page-link{border:none;text-decoration:none;color:#595959}.nav-page-link:hover{color:#17a2b8!important}.chevron{padding:3px;display:inline-block;border:solid #7f7f7f;border-width:0 3px 3px 0}.chevron.right{transform:rotate(-45deg) translate(1px,-1px);-webkit-transform:rotate(-45deg) translate(1px,-1px)}.chevron.left{transform:rotate(135deg) translate(-1px,1px);-webkit-transform:rotate(135deg) translate(-1px,1px)}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:auto}} +*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, .175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, .05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, .1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3.75rem + 1.5em)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem #19875440}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3.75rem + 1.5em)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:.75rem;--bs-btn-padding-y:.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, .15),0 1px 1px rgba(0, 0, 0, .075);--bs-btn-disabled-opacity:.65;--bs-btn-focus-box-shadow:0 0 0 .25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:first-child:hover,:not(.btn-check)+.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, .125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:.25rem;--bs-btn-padding-x:.5rem;--bs-btn-font-size:.875rem;--bs-btn-border-radius:.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:.5rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius: calc(.375rem - 1px) ;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.5rem;--bs-dropdown-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, .15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:rgba(0, 0, 0, .55);--bs-navbar-hover-color:rgba(0, 0, 0, .7);--bs-navbar-disabled-color:rgba(0, 0, 0, .3);--bs-navbar-active-color:rgba(0, 0, 0, .9);--bs-navbar-brand-padding-y:.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, .9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, .9);--bs-navbar-nav-link-padding-x:.5rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, .1);--bs-navbar-toggler-border-radius:.375rem;--bs-navbar-toggler-focus-width:.25rem;--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, .55);--bs-navbar-hover-color:rgba(255, 255, 255, .75);--bs-navbar-disabled-color:rgba(255, 255, 255, .25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(.375rem - 1px) ;--bs-card-cap-padding-y:.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:#fff;--bs-accordion-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:.375rem;--bs-accordion-inner-border-radius: calc(.375rem - 1px) ;--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-body-color%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:.75rem;--bs-pagination-padding-y:.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 .25rem rgba(13, 110, 253, .25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:.5rem}.pagination-sm{--bs-pagination-padding-x:.5rem;--bs-pagination-padding-y:.25rem;--bs-pagination-font-size:.875rem;--bs-pagination-border-radius:.25rem}.badge{--bs-badge-padding-x:.65em;--bs-badge-padding-y:.35em;--bs-badge-font-size:.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, .075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, .125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, .85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:.375rem;--bs-toast-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, .85);--bs-toast-header-border-color:rgba(0, 0, 0, .05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:.5rem;--bs-modal-box-shadow:0 .125rem .25rem rgba(0, 0, 0, .075);--bs-modal-inner-border-radius: calc(.5rem - 1px) ;--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.5rem;--bs-tooltip-padding-y:.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:.375rem;--bs-tooltip-opacity:.9;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:.5rem;--bs-popover-inner-border-radius: calc(.5rem - 1px) ;--bs-popover-box-shadow:0 .5rem 1rem rgba(0, 0, 0, .15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translate(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 .125rem .25rem rgba(0, 0, 0, .075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translate(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:.1}.border-opacity-25{--bs-border-opacity:.25}.border-opacity-50{--bs-border-opacity:.5}.border-opacity-75{--bs-border-opacity:.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:#00000080!important}.text-white-50{--bs-text-opacity:1;color:#ffffff80!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:.25}.text-opacity-50{--bs-text-opacity:.5}.text-opacity-75{--bs-text-opacity:.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:.1}.bg-opacity-25{--bs-bg-opacity:.25}.bg-opacity-50{--bs-bg-opacity:.5}.bg-opacity-75{--bs-bg-opacity:.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.text-justify{text-align:justify;text-justify:inter-word}.nav-page{display:table;list-style:none;width:100%;margin:20px 0;padding:20px 5px}.nav-page-item{display:table-cell}.nav-page-item:last-child{text-align:right}.nav-page-link{border:none;text-decoration:none;color:#595959}.nav-page-link:hover{color:#17a2b8!important}.chevron{padding:3px;display:inline-block;border:solid #7f7f7f;border-width:0 3px 3px 0}.chevron.right{transform:rotate(-45deg) translate(1px,-1px);-webkit-transform:rotate(-45deg) translate(1px,-1px)}.chevron.left{transform:rotate(135deg) translate(-1px,1px);-webkit-transform:rotate(135deg) translate(-1px,1px)}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:auto}}