{"version":3,"file":"rxap-authentication.mjs","sources":["../../../../../packages/angular/authentication/src/lib/tokens.ts","../../../../../packages/angular/authentication/src/lib/authentication.service.ts","../../../../../packages/angular/authentication/src/lib/authentication-routing.service.ts","../../../../../packages/angular/authentication/src/lib/authentication.guard.ts","../../../../../packages/angular/authentication/src/lib/bearer-token.interceptor.ts","../../../../../packages/angular/authentication/src/lib/disabled-authentication.service.ts","../../../../../packages/angular/authentication/src/lib/provide.ts","../../../../../packages/angular/authentication/src/lib/register.service.ts","../../../../../packages/angular/authentication/src/lib/sign-out.directive.ts","../../../../../packages/angular/authentication/src/index.ts","../../../../../packages/angular/authentication/src/rxap-authentication.ts"],"sourcesContent":["import {\n  InjectionToken,\n  Provider,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const RXAP_AUTHENTICATION_DEACTIVATED = new InjectionToken<boolean>('rxap/authentication/deactivated');\n\nexport interface AuthenticationAccessToken extends Record<string, any> {\n  token: string;\n  valid?: boolean;\n}\n\nexport const RXAP_AUTHENTICATION_ACCESS_TOKEN = new InjectionToken<BehaviorSubject<AuthenticationAccessToken | null>>(\n  'rxap/authentication/access-token',\n  {\n    providedIn: 'root',\n    factory: () => new BehaviorSubject<AuthenticationAccessToken | null>(null),\n  },\n);\n\nexport const RXAP_INITIAL_AUTHENTICATION_STATE = new InjectionToken<boolean>('rxap/authentication/initial-state', {\n  providedIn: 'root',\n  factory: () => false,\n});\n\nexport function withDisabledAuthentication(disabled = true): Provider {\n  return {\n    provide: RXAP_AUTHENTICATION_DEACTIVATED,\n    useValue: disabled,\n  };\n}\n","import {\n  inject,\n  Injectable,\n} from '@angular/core';\nimport {\n  BehaviorSubject,\n  Observable,\n  ReplaySubject,\n} from 'rxjs';\nimport { RXAP_INITIAL_AUTHENTICATION_STATE } from './tokens';\n\nexport interface IAuthenticationService {\n  isAuthenticated$: Observable<boolean | null>;\n  events$: Observable<AuthenticationEvent>;\n  signOut(): Promise<void>;\n\n  isAuthenticated(): Promise<boolean>;\n}\n\nexport enum AuthenticationEventType {\n  OnAuthSuccess = 'on-auth-success',\n  OnAuthError = 'on-auth-error',\n  OnLogout = 'on-logout',\n}\n\nexport interface AuthenticationEvent extends Record<string, any> {\n  type: AuthenticationEventType;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RxapAuthenticationService implements IAuthenticationService {\n\n  public isAuthenticated$ = new BehaviorSubject<boolean | null>(null);\n\n  public readonly events$ = new ReplaySubject<AuthenticationEvent>();\n\n  private _authenticated = inject(RXAP_INITIAL_AUTHENTICATION_STATE);\n\n  constructor() {\n    this.isAuthenticated().then(isAuthenticated => this.isAuthenticated$.next(isAuthenticated));\n  }\n\n  public async signOut(): Promise<void> {\n    this._authenticated = false;\n    this.isAuthenticated$.next(this._authenticated);\n    this.events$.next({ type: AuthenticationEventType.OnLogout });\n  }\n\n  public isAuthenticated(): Promise<boolean> {\n    return Promise.resolve(this._authenticated);\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { RxapAuthenticationService } from './authentication.service';\nimport { RXAP_AUTHENTICATION_DEACTIVATED } from './tokens';\nimport { tap } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AuthenticationRoutingService {\n\n  constructor(\n    @Inject(Router)\n    private readonly router: Router,\n    @Inject(RxapAuthenticationService)\n    private readonly authenticationService: RxapAuthenticationService,\n    @Optional()\n    @Inject(RXAP_AUTHENTICATION_DEACTIVATED)\n    private readonly deactivated: boolean | null = null,\n  ) {\n    if (!deactivated) {\n      console.log('Authentication is enabled');\n      this.authenticationService.isAuthenticated$.pipe(\n        tap(isAuthenticated => {\n          if (isAuthenticated) {\n            return this.router.navigate([ '/' ]);\n          } else {\n            return this.router.navigate([ '/', 'authentication', 'login' ]);\n          }\n        }),\n      ).subscribe();\n    }\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  ActivatedRouteSnapshot,\n  Router,\n  RouterStateSnapshot,\n  UrlTree,\n} from '@angular/router';\nimport { RxapAuthenticationService } from './authentication.service';\nimport { RXAP_AUTHENTICATION_DEACTIVATED } from './tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class RxapAuthenticationGuard {\n\n  public lastUrl: string | null = null;\n\n  constructor(\n    @Inject(RxapAuthenticationService)\n    public authentication: RxapAuthenticationService,\n    @Inject(Router)\n    public router: Router,\n    @Optional()\n    @Inject(RXAP_AUTHENTICATION_DEACTIVATED)\n    private readonly deactivated: boolean | null = null,\n  ) {\n  }\n\n  public canActivate(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot,\n  ): Promise<UrlTree | boolean> {\n    console.debug('[RxapAuthenticationGuard] can activate', state.url);\n    return this.checkAuthStatus(route, state);\n  }\n\n  public canActivateChild(\n    childRoute: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot,\n  ): Promise<UrlTree | boolean> {\n    console.debug('[RxapAuthenticationGuard] can activate child', state.url);\n    return this.checkAuthStatus(childRoute, state);\n  }\n\n  private async checkAuthStatus(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot,\n  ): Promise<UrlTree | boolean> {\n\n    if (this.deactivated) {\n      return true;\n    }\n\n    const authenticated = await this.authentication.isAuthenticated();\n\n    if (authenticated === null) {\n      if (!this.lastUrl || (state.url !== '/' && !state.url.match(/authentication\\/login/))) {\n        this.lastUrl = state.url;\n      }\n      return this.router.createUrlTree([ '/', 'authentication', 'loading' ]);\n    }\n    if (authenticated) {\n      if (this.lastUrl && (state.url/*?*/ === '/' || state.url.match(/authentication\\/login/))) {\n        const lastUrl = this.lastUrl;\n        this.lastUrl = null;\n        return this.createUrlTreeToLastUrl(lastUrl);\n      } else {\n        if (state.url.match(/authentication/)) {\n          if (state.url.match(/authentication\\/reset-password/)) {\n            return true;\n          }\n          return this.router.createUrlTree([ '/' ]);\n        } else {\n          this.lastUrl = null;\n          return true;\n        }\n      }\n    } else {\n      if (!state.url.match(/^\\/?authentication/)) {\n        this.lastUrl = state.url;\n      }\n      if (state.url.match(/^\\/?authentication/)) {\n        if (this.lastUrl && this.lastUrl.match(/^\\/?authentication/)) {\n          const lastUrl = this.lastUrl;\n          this.lastUrl = null;\n          return this.createUrlTreeToLastUrl(lastUrl);\n        }\n        return true;\n      } else {\n        return this.router.createUrlTree([ '/', 'authentication', 'login' ]);\n      }\n    }\n\n  }\n\n  private createUrlTreeToLastUrl(lastUrl: string): UrlTree {\n\n    const urlMatch = lastUrl.match(/^([^?#]+)(\\?([^#]+))?(#(.+))?$/);\n\n    if (urlMatch) {\n\n      let queryParams: Record<string, string> = {};\n\n      if (urlMatch[3]) {\n        const queryParamsString = urlMatch[3];\n        queryParams = queryParamsString.split('&').map(param => {\n          const split = param.split('=');\n          return { [split[0]]: split[1] };\n        }).reduce((params, param) => ({ ...params, ...param }), {});\n      }\n\n      let fragment: string | undefined = undefined;\n\n      if (urlMatch[5]) {\n        fragment = urlMatch[5];\n      }\n\n      return this.router.createUrlTree([ urlMatch[1] ], {\n        queryParams,\n        fragment,\n      });\n\n    }\n\n    return this.router.createUrlTree([ lastUrl ]);\n\n  }\n\n}\n","import { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport {\n  Observable,\n  switchMap,\n  take,\n} from 'rxjs';\nimport { RXAP_AUTHENTICATION_ACCESS_TOKEN } from './tokens';\n\nexport function BearerTokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n\n  const accessToken$ = inject(RXAP_AUTHENTICATION_ACCESS_TOKEN);\n\n  if (req.url.match(/https?:\\/\\/[^/]+\\/api/)) {\n    return accessToken$.pipe(\n      take(1),\n      switchMap(accessToken => {\n        if (accessToken && (accessToken.valid === undefined || accessToken.valid)) {\n          console.debug('Add access token to request', req.url);\n          return next(req.clone({\n            setHeaders: {\n              Authorization: `Bearer ${ accessToken.token }`,\n            },\n          }));\n        } else {\n          console.debug('No valid access token found!', req.url);\n        }\n        return next(req);\n      }),\n    );\n  } else {\n    console.debug('Skip adding access token to request', req.url);\n  }\n\n  return next(req);\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n  EMPTY,\n  of,\n} from 'rxjs';\nimport { IAuthenticationService } from './authentication.service';\n\n@Injectable()\nexport class DisabledAuthenticationService implements IAuthenticationService {\n\n  public readonly isAuthenticated$ = of(true);\n  public readonly events$ = EMPTY;\n\n  async signOut() {\n    console.log('Authentication is disabled. No sign out possible');\n  }\n\n  async isAuthenticated() {\n    return true;\n  }\n\n}\n","import { Provider } from '@angular/core';\nimport { RXAP_INITIAL_AUTHENTICATION_STATE } from './tokens';\nimport {\n  IAuthenticationService,\n  RxapAuthenticationService,\n} from './authentication.service';\nimport { Constructor } from '@rxap/utilities';\n\nexport function provideAuthentication(\n  service: Constructor<IAuthenticationService>,\n  ...additionalProviders: Provider[]\n): Provider[] {\n  return [\n    {\n      provide: RxapAuthenticationService,\n      useClass: service,\n    },\n    ...additionalProviders,\n  ];\n}\n\nexport function withInitialAuthenticationState(\n  state: boolean\n): Provider {\n  return {\n    provide: RXAP_INITIAL_AUTHENTICATION_STATE,\n    useValue: state,\n  };\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\n/* ignore coverage */\nexport class RegisterService {\n\n  constructor() {\n    console.warn('The default RegisterService implementation should only be used in a development environment!');\n  }\n\n  public register(email: string, password: string): Promise<boolean> {\n    return Promise.resolve(true);\n  }\n\n}\n","import {\n  Directive,\n  EventEmitter,\n  HostListener,\n  Output,\n} from '@angular/core';\nimport { RxapAuthenticationService } from './authentication.service';\n\n@Directive({\n  selector: '[rxapSignOut]',\n  standalone: true,\n})\nexport class SignOutDirective {\n\n  @Output()\n  public successful = new EventEmitter<void>();\n\n  @Output()\n  public failure = new EventEmitter<Error>();\n\n  constructor(private readonly auth: RxapAuthenticationService) {\n  }\n\n  @HostListener('click')\n  public async onClick() {\n    try {\n      await this.auth.signOut();\n      this.successful.emit();\n    } catch (e: any) {\n      this.failure.emit(e);\n    }\n  }\n\n}\n\n\n","// region \nexport * from './lib/authentication-routing.service';\nexport * from './lib/authentication.guard';\nexport * from './lib/authentication.service';\nexport * from './lib/bearer-token.interceptor';\nexport * from './lib/disabled-authentication.service';\nexport * from './lib/provide';\nexport * from './lib/register.service';\nexport * from './lib/sign-out.directive';\nexport * from './lib/tokens';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RxapAuthenticationService"],"mappings":";;;;;;;MAMa,+BAA+B,GAAG,IAAI,cAAc,CAAU,iCAAiC;MAO/F,gCAAgC,GAAG,IAAI,cAAc,CAChE,kCAAkC,EAClC;AACE,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM,IAAI,eAAe,CAAmC,IAAI,CAAC;AAC3E,CAAA;MAGU,iCAAiC,GAAG,IAAI,cAAc,CAAU,mCAAmC,EAAE;AAChH,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,KAAK;AACrB,CAAA;AAEe,SAAA,0BAA0B,CAAC,QAAQ,GAAG,IAAI,EAAA;IACxD,OAAO;AACL,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,QAAQ,EAAE,QAAQ;KACnB;AACH;;ICZY;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,eAAA,CAAA,GAAA,iBAAiC;AACjC,IAAA,uBAAA,CAAA,aAAA,CAAA,GAAA,eAA6B;AAC7B,IAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,WAAsB;AACxB,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,GAIlC,EAAA,CAAA,CAAA;MAOY,yBAAyB,CAAA;AAQpC,IAAA,WAAA,GAAA;AANO,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,aAAa,EAAuB;AAE1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iCAAiC,CAAC;AAGhE,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;AAGtF,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC;;IAGxD,eAAe,GAAA;QACpB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;;8GAnBlC,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MChBrB,4BAA4B,CAAA;AAEvC,IAAA,WAAA,CAEmB,MAAc,EAEd,qBAAgD,EAGhD,cAA8B,IAAI,EAAA;QALlC,IAAM,CAAA,MAAA,GAAN,MAAM;QAEN,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QAGrB,IAAW,CAAA,WAAA,GAAX,WAAW;QAE5B,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YACxC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAC9C,GAAG,CAAC,eAAe,IAAG;gBACpB,IAAI,eAAe,EAAE;oBACnB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAE,GAAG,CAAE,CAAC;;qBAC/B;AACL,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAE,CAAC;;AAEnE,aAAC,CAAC,CACH,CAAC,SAAS,EAAE;;;AArBN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAG7B,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,MAAM,EAEN,EAAA,EAAA,KAAA,EAAA,yBAAyB,aAGzB,+BAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAR9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA,CAAA;;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAII,MAAM;2BAAC,MAAM;;0BAEb,MAAM;2BAAC,yBAAyB;;0BAEhC;;0BACA,MAAM;2BAAC,+BAA+B;;;MCN9B,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAES,cAAyC,EAEzC,MAAc,EAGJ,cAA8B,IAAI,EAAA;QAL5C,IAAc,CAAA,cAAA,GAAd,cAAc;QAEd,IAAM,CAAA,MAAA,GAAN,MAAM;QAGI,IAAW,CAAA,WAAA,GAAX,WAAW;QATvB,IAAO,CAAA,OAAA,GAAkB,IAAI;;IAa7B,WAAW,CAChB,KAA6B,EAC7B,KAA0B,EAAA;QAE1B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,GAAG,CAAC;QAClE,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;;IAGpC,gBAAgB,CACrB,UAAkC,EAClC,KAA0B,EAAA;QAE1B,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,GAAG,CAAC;QACxE,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;;AAGxC,IAAA,MAAM,eAAe,CAC3B,KAA6B,EAC7B,KAA0B,EAAA;AAG1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,IAAI;;QAGb,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AAEjE,QAAA,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE;AACrF,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG;;AAE1B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,CAAE,CAAC;;QAExE,IAAI,aAAa,EAAE;YACjB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,WAAU,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EAAE;AACxF,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,gBAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;;iBACtC;gBACL,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;oBACrC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;AACrD,wBAAA,OAAO,IAAI;;oBAEb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,GAAG,CAAE,CAAC;;qBACpC;AACL,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,oBAAA,OAAO,IAAI;;;;aAGV;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG;;YAE1B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;AAC5D,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,oBAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;;AAE7C,gBAAA,OAAO,IAAI;;iBACN;AACL,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAE,CAAC;;;;AAMlE,IAAA,sBAAsB,CAAC,OAAe,EAAA;QAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC;QAEhE,IAAI,QAAQ,EAAE;YAEZ,IAAI,WAAW,GAA2B,EAAE;AAE5C,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,CAAC,CAAC;AACrC,gBAAA,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAG;oBACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,oBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;iBAChC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;;YAG7D,IAAI,QAAQ,GAAuB,SAAS;AAE5C,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;;AAGxB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,EAAE;gBAChD,WAAW;gBACX,QAAQ;AACT,aAAA,CAAC;;QAIJ,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,OAAO,CAAE,CAAC;;AA/GpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAKxB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,yBAAyB,EAEzB,EAAA,EAAA,KAAA,EAAA,MAAM,aAGN,+BAA+B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAV9B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAM7B,MAAM;2BAAC,yBAAyB;;0BAEhC,MAAM;2BAAC,MAAM;;0BAEb;;0BACA,MAAM;2BAAC,+BAA+B;;;AChB3B,SAAA,sBAAsB,CAAC,GAAyB,EAAE,IAAmB,EAAA;AAEnF,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,gCAAgC,CAAC;IAE7D,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE;AAC1C,QAAA,OAAO,YAAY,CAAC,IAAI,CACtB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,WAAW,IAAG;AACtB,YAAA,IAAI,WAAW,KAAK,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;gBACzE,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,CAAC;AACrD,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,oBAAA,UAAU,EAAE;AACV,wBAAA,aAAa,EAAE,CAAA,OAAA,EAAW,WAAW,CAAC,KAAM,CAAE,CAAA;AAC/C,qBAAA;AACF,iBAAA,CAAC,CAAC;;iBACE;gBACL,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,GAAG,CAAC;;AAExD,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB,CAAC,CACH;;SACI;QACL,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,GAAG,CAAC;;AAG/D,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAElB;;MC5Ba,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;AAGkB,QAAA,IAAA,CAAA,gBAAgB,GAAG,EAAE,CAAC,IAAI,CAAC;QAC3B,IAAO,CAAA,OAAA,GAAG,KAAK;AAUhC;AARC,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;;AAGjE,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,OAAO,IAAI;;8GAVF,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;SCCe,qBAAqB,CACnC,OAA4C,EAC5C,GAAG,mBAA+B,EAAA;IAElC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA;AACD,QAAA,GAAG,mBAAmB;KACvB;AACH;AAEM,SAAU,8BAA8B,CAC5C,KAAc,EAAA;IAEd,OAAO;AACL,QAAA,OAAO,EAAE,iCAAiC;AAC1C,QAAA,QAAQ,EAAE,KAAK;KAChB;AACH;;ACzBA;MACa,eAAe,CAAA;AAE1B,IAAA,WAAA,GAAA;AACE,QAAA,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC;;IAGvG,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAA;AAC7C,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;;8GAPnB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFF,MAAM,EAAA,CAAA,CAAA;;2FAEnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAF3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCUrB,gBAAgB,CAAA;AAQ3B,IAAA,WAAA,CAA6B,IAA+B,EAAA;QAA/B,IAAI,CAAA,IAAA,GAAJ,IAAI;AAL1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AAGrC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAS;;AAMnC,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;QACtB,OAAO,CAAM,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;8GAjBb,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;2FAIQ,UAAU,EAAA,CAAA;sBADhB;gBAIM,OAAO,EAAA,CAAA;sBADb;gBAOY,OAAO,EAAA,CAAA;sBADnB,YAAY;uBAAC,OAAO;;;ACvBvB;AAUA;;ACVA;;AAEG;;;;"}