@hahnpro/ai-sdk 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, inject, isDevMode, NgModule, Directive, DestroyRef, Input, ViewChild, Component, Pipe, Inject, InjectionToken, ViewContainerRef, Injector, importProvidersFrom } from '@angular/core';
4
+ import { Injectable, inject, isDevMode, NgModule, Directive, DestroyRef, Input, ViewChild, Component, Pipe, Inject, InjectionToken, ViewContainerRef, Injector, ViewEncapsulation, importProvidersFrom } from '@angular/core';
5
5
  import * as i2$1 from '@angular/material/button';
6
6
  import { MatButtonModule } from '@angular/material/button';
7
7
  import * as i3$1 from '@angular/material/dialog';
@@ -46,9 +46,9 @@ import { pdfDefaultOptions, NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-
46
46
  import { HttpClient as HttpClient$1, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
47
47
 
48
48
  class ApiService {
49
- _baseUrl = 'https://testing.hahnpro.com';
49
+ _baseUrl = 'https://adam.hahnpro.com';
50
50
  apiPath = '/api';
51
- realm = 'testing';
51
+ realm = 'adam';
52
52
  httpClient = new HttpClient();
53
53
  get baseUrl() {
54
54
  return this._baseUrl;
@@ -59,7 +59,9 @@ class ApiService {
59
59
  get user() {
60
60
  return this.httpClient.user;
61
61
  }
62
- init(clientId, clientSecret) {
62
+ init(clientId, clientSecret, baseUrl, realm) {
63
+ this._baseUrl = baseUrl || 'https://adam.hahnpro.com';
64
+ this.realm = realm || 'adam';
63
65
  return this.httpClient.init(`${this.baseUrl}/auth/realms/${this.realm}`, clientId, clientSecret);
64
66
  }
65
67
  getAccessToken() {
@@ -113,10 +115,10 @@ class ApiService {
113
115
  return [];
114
116
  }
115
117
  }
116
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
117
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApiService, providedIn: 'root' });
118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
119
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, providedIn: 'root' });
118
120
  }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApiService, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, decorators: [{
120
122
  type: Injectable,
121
123
  args: [{ providedIn: 'root' }]
122
124
  }] });
@@ -280,10 +282,10 @@ class OwnerResolverService {
280
282
  console.error(error);
281
283
  }
282
284
  }
283
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: OwnerResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
284
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: OwnerResolverService, providedIn: 'root' });
285
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
286
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, providedIn: 'root' });
285
287
  }
286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: OwnerResolverService, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, decorators: [{
287
289
  type: Injectable,
288
290
  args: [{ providedIn: 'root' }]
289
291
  }] });
@@ -472,10 +474,10 @@ class ContextService {
472
474
  return null;
473
475
  }
474
476
  }
475
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
476
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ContextService });
477
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
478
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService });
477
479
  }
478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ContextService, decorators: [{
480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService, decorators: [{
479
481
  type: Injectable
480
482
  }] });
481
483
 
@@ -573,6 +575,7 @@ const translations = {
573
575
  },
574
576
  prompts: {
575
577
  asset: "I have a question related to the Asset '{{assetName}}' with ID {{assetId}}",
578
+ 'ext-asset': "I have a question related to the Asset '{{assetName}}' with external Key {{assetKey}}",
576
579
  help: "Please help me solve this task for the asset '{{assetName}}' (ID: {{assetId}}): {{task}}",
577
580
  incident: "Please create a new incident for the asset '{{assetName}}' (ID: {{assetId}}) of type '{{assetTypeName}}' (ID: {{assetTypeId}}')",
578
581
  report: "I have completed the following task for asset '{{assetName}}' (ID: {{assetId}}). Please create a report about it: {{task}}",
@@ -1179,6 +1182,7 @@ const translations = {
1179
1182
  },
1180
1183
  prompts: {
1181
1184
  asset: "Ich habe eine Frage zu dem Asset '{{assetName}}' mit der ID {{assetId}}",
1185
+ 'ext-asset': "Ich habe eine Frage zu dem Asset '{{assetName}}' mit der externen ID {{assetKey}}",
1182
1186
  help: "Bitte hilf mir bei der Lösung dieser Aufgabe für das Asset '{{assetName}}' (ID: {{assetId}}): {{task}}",
1183
1187
  incident: "Bitte erstelle eine neue Meldung für das Asset '{{assetName}}' (ID: {{assetId}}) vom Typ '{{assetTypeName}}' (ID: {{assetTypeId}}')",
1184
1188
  report: "Ich habe folgende Aufgabe für das Asset '{{assetName}}' (ID: {{assetId}}) abgeschlossen. Bitte erstelle einen Bericht dazu: {{task}}",
@@ -1685,17 +1689,17 @@ class AiTranslocoLoader {
1685
1689
  getTranslation(lang) {
1686
1690
  return of(translations[lang] || {});
1687
1691
  }
1688
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1689
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoLoader, providedIn: 'root' });
1692
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1693
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, providedIn: 'root' });
1690
1694
  }
1691
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoLoader, decorators: [{
1695
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, decorators: [{
1692
1696
  type: Injectable,
1693
1697
  args: [{ providedIn: 'root' }]
1694
1698
  }] });
1695
1699
  class AiTranslocoModule {
1696
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1697
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoModule, imports: [TranslocoModule], exports: [TranslocoModule] });
1698
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoModule, providers: [
1700
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1701
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, imports: [TranslocoModule], exports: [TranslocoModule] });
1702
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, providers: [
1699
1703
  { provide: TRANSLOCO_TRANSPILER, useClass: DefaultTranspiler },
1700
1704
  { provide: TRANSLOCO_LOADER, useClass: AiTranslocoLoader },
1701
1705
  provideTransloco({
@@ -1709,7 +1713,7 @@ class AiTranslocoModule {
1709
1713
  }),
1710
1714
  ], imports: [TranslocoModule, TranslocoModule] });
1711
1715
  }
1712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiTranslocoModule, decorators: [{
1716
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, decorators: [{
1713
1717
  type: NgModule,
1714
1718
  args: [{
1715
1719
  imports: [TranslocoModule],
@@ -1768,10 +1772,10 @@ class ChatScrollDirective {
1768
1772
  this.zone.runOutsideAngular(() => (this.el.nativeElement.scrollTop = this.el.nativeElement.scrollHeight));
1769
1773
  }
1770
1774
  }
1771
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ChatScrollDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1772
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: ChatScrollDirective, isStandalone: true, selector: "[aiChatScroll]", ngImport: i0 });
1775
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatScrollDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1776
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: ChatScrollDirective, isStandalone: true, selector: "[aiChatScroll]", ngImport: i0 });
1773
1777
  }
1774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ChatScrollDirective, decorators: [{
1778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatScrollDirective, decorators: [{
1775
1779
  type: Directive,
1776
1780
  args: [{
1777
1781
  selector: '[aiChatScroll]',
@@ -1833,10 +1837,10 @@ class WebsocketService {
1833
1837
  }
1834
1838
  return this.eventObservables$[eventName];
1835
1839
  }
1836
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: WebsocketService, deps: [{ token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1837
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: WebsocketService });
1840
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService, deps: [{ token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1841
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService });
1838
1842
  }
1839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: WebsocketService, decorators: [{
1843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService, decorators: [{
1840
1844
  type: Injectable
1841
1845
  }], ctorParameters: () => [{ type: ApiService }] });
1842
1846
 
@@ -2127,13 +2131,15 @@ class ChatService {
2127
2131
  if (!this._activeAssistant) {
2128
2132
  throw new Error(`Assistant ${assistantId} not found`);
2129
2133
  }
2130
- // this._activeThread = await this.apiService.createThread(assistantId);
2131
- this._activeThread = await this.apiService.getThread('67ed93d38361957d6811b944');
2134
+ this._activeThread = await this.apiService.createThread(assistantId);
2135
+ // this._activeThread = await this.apiService.getThread(
2136
+ // '67ed93d38361957d6811b944',
2137
+ // );
2132
2138
  await this.getMessages();
2133
2139
  this.setupWebsockets();
2134
- // if (initialMessage) {
2135
- // await this.sendMessage(initialMessage, hidden);
2136
- // }
2140
+ if (initialMessage) {
2141
+ await this.sendMessage(initialMessage, hidden);
2142
+ }
2137
2143
  }
2138
2144
  catch (err) {
2139
2145
  console.error(err);
@@ -2365,10 +2371,10 @@ class ChatService {
2365
2371
  this._messages.push(newMessage || message); // add message
2366
2372
  }
2367
2373
  }
2368
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2369
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ChatService });
2374
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2375
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService });
2370
2376
  }
2371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ChatService, decorators: [{
2377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService, decorators: [{
2372
2378
  type: Injectable
2373
2379
  }], ctorParameters: () => [] });
2374
2380
  var WebSocketMessageType;
@@ -2479,10 +2485,10 @@ class VoiceRecognitionService {
2479
2485
  this._isListening = false;
2480
2486
  };
2481
2487
  }
2482
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2483
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, providedIn: 'root' });
2488
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: VoiceRecognitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2489
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: VoiceRecognitionService, providedIn: 'root' });
2484
2490
  }
2485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, decorators: [{
2491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: VoiceRecognitionService, decorators: [{
2486
2492
  type: Injectable,
2487
2493
  args: [{ providedIn: 'root' }]
2488
2494
  }] });
@@ -2539,10 +2545,10 @@ class MessageInputComponent {
2539
2545
  stopVoice() {
2540
2546
  this.voiceRecognitionService.stop();
2541
2547
  }
2542
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
2543
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: MessageInputComponent, isStandalone: true, selector: "ai-message-input", inputs: { startConversation: "startConversation" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["messageInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.use_microphone')\"\n matTooltipPosition=\"above\"\n (click)=\"toggleVoice()\"\n >\n <mat-icon\n class=\"icon-md\"\n [ngClass]=\"{ 'text-red-600': voiceRecognitionService.isListening }\"\n [svgIcon]=\"voiceRecognitionService.isListening ? 'mic_record' : 'mic'\"\n ></mat-icon>\n </button>\n @if (!voiceRecognitionService.isListening) {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.send_message')\"\n matTooltipPosition=\"above\"\n (click)=\"sendMessage()\"\n >\n <mat-icon svgIcon=\"send\" class=\"icon-md\"></mat-icon>\n </button>\n } @else {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.stop_recording')\"\n matTooltipPosition=\"above\"\n (click)=\"stopVoice()\"\n >\n <mat-icon svgIcon=\"record_stop\" class=\"icon-md\"></mat-icon>\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
2548
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
2549
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: MessageInputComponent, isStandalone: true, selector: "ai-message-input", inputs: { startConversation: "startConversation" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["messageInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.use_microphone')\"\n matTooltipPosition=\"above\"\n (click)=\"toggleVoice()\"\n >\n <mat-icon\n class=\"icon-md\"\n [ngClass]=\"{ 'text-red-600': voiceRecognitionService.isListening }\"\n [svgIcon]=\"voiceRecognitionService.isListening ? 'mic_record' : 'mic'\"\n ></mat-icon>\n </button>\n @if (!voiceRecognitionService.isListening) {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.send_message')\"\n matTooltipPosition=\"above\"\n (click)=\"sendMessage()\"\n >\n <mat-icon svgIcon=\"send\" class=\"icon-md\"></mat-icon>\n </button>\n } @else {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.stop_recording')\"\n matTooltipPosition=\"above\"\n (click)=\"stopVoice()\"\n >\n <mat-icon svgIcon=\"record_stop\" class=\"icon-md\"></mat-icon>\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
2544
2550
  }
2545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: MessageInputComponent, decorators: [{
2551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageInputComponent, decorators: [{
2546
2552
  type: Component,
2547
2553
  args: [{ imports: [
2548
2554
  CdkTextareaAutosize,
@@ -2575,10 +2581,10 @@ class BytesPipe {
2575
2581
  }
2576
2582
  return prettyBytes(input);
2577
2583
  }
2578
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: BytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2579
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: BytesPipe, isStandalone: false, name: "bytes" });
2584
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2585
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, isStandalone: false, name: "bytes" });
2580
2586
  }
2581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: BytesPipe, decorators: [{
2587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, decorators: [{
2582
2588
  type: Pipe,
2583
2589
  args: [{
2584
2590
  name: 'bytes',
@@ -2615,10 +2621,10 @@ class ColorLevelPipe {
2615
2621
  }
2616
2622
  return color;
2617
2623
  }
2618
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ColorLevelPipe, deps: [{ token: i1$1.NGXLogger }], target: i0.ɵɵFactoryTarget.Pipe });
2619
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: ColorLevelPipe, isStandalone: false, name: "colorLevel" });
2624
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, deps: [{ token: i1$1.NGXLogger }], target: i0.ɵɵFactoryTarget.Pipe });
2625
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, isStandalone: false, name: "colorLevel" });
2620
2626
  }
2621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ColorLevelPipe, decorators: [{
2627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, decorators: [{
2622
2628
  type: Pipe,
2623
2629
  args: [{
2624
2630
  name: 'colorLevel',
@@ -2630,10 +2636,10 @@ class DateAgoPipe {
2630
2636
  transform(value) {
2631
2637
  return formatDistanceToNow(value);
2632
2638
  }
2633
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2634
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: DateAgoPipe, isStandalone: false, name: "dateAgo", pure: false });
2639
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2640
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, isStandalone: false, name: "dateAgo", pure: false });
2635
2641
  }
2636
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DateAgoPipe, decorators: [{
2642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, decorators: [{
2637
2643
  type: Pipe,
2638
2644
  args: [{
2639
2645
  name: 'dateAgo',
@@ -2643,11 +2649,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
2643
2649
  }] });
2644
2650
 
2645
2651
  class UiPipesModule {
2646
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2647
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: UiPipesModule, declarations: [BytesPipe, ColorLevelPipe, DateAgoPipe], imports: [CommonModule], exports: [BytesPipe, ColorLevelPipe, DateAgoPipe] });
2648
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiPipesModule, imports: [CommonModule] });
2652
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2653
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, declarations: [BytesPipe, ColorLevelPipe, DateAgoPipe], imports: [CommonModule], exports: [BytesPipe, ColorLevelPipe, DateAgoPipe] });
2654
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, imports: [CommonModule] });
2649
2655
  }
2650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiPipesModule, decorators: [{
2656
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, decorators: [{
2651
2657
  type: NgModule,
2652
2658
  args: [{
2653
2659
  imports: [CommonModule],
@@ -2823,10 +2829,10 @@ class PreviewComponent {
2823
2829
  this.isLoading = false;
2824
2830
  });
2825
2831
  }
2826
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PreviewComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
2827
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: PreviewComponent, isStandalone: true, selector: "ai-content-preview", ngImport: i0, template: "<ng-container>\n <div mat-dialog-title class=\"relative\">\n <div class=\"truncate pr-10\">{{ content.filename }}</div>\n <button\n mat-icon-button\n matDialogClose\n class=\"small absolute right-4 top-4 bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div mat-dialog-content class=\"flex grow flex-col\">\n @if (markdown) {\n <div class=\"w-full overflow-y-auto rounded-xl bg-white p-4\">\n <markdown class=\"markdown-body\" [data]=\"markdown\"></markdown>\n </div>\n } @else if (content.mimetype === 'application/pdf') {\n <div class=\"mx-auto w-[50rem] sm:h-[65vh]\">\n <ngx-extended-pdf-viewer\n [authorization]=\"token\"\n [src]=\"pdfSrc\"\n [disableHistory]=\"true\"\n [showBorders]=\"false\"\n [showDownloadButton]=\"false\"\n [showDrawEditor]=\"false\"\n [showEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"false\"\n [showRotateButton]=\"false\"\n [showSecondaryToolbarButton]=\"false\"\n [showSidebarButton]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [useBrowserLocale]=\"true\"\n [zoom]=\"auto\"\n [page]=\"pageNumber\"\n ></ngx-extended-pdf-viewer>\n </div>\n } @else if (previewUrl) {\n <div\n class=\"group relative w-full overflow-hidden rounded-2xl border border-zinc-300/40 bg-zinc-300/30 p-4 dark:border-zinc-700/40 dark:bg-zinc-700/30\"\n >\n <div class=\"w-full overflow-hidden rounded-lg\">\n <img class=\"w-full\" [src]=\"previewUrl\" alt=\"\" />\n </div>\n </div>\n }\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i5.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] });
2832
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
2833
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: PreviewComponent, isStandalone: true, selector: "ai-content-preview", ngImport: i0, template: "<ng-container>\n <div mat-dialog-title class=\"relative\">\n <div class=\"truncate pr-10\">{{ content.filename }}</div>\n <button\n mat-icon-button\n matDialogClose\n class=\"small absolute right-4 top-4 bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div mat-dialog-content class=\"flex grow flex-col\">\n @if (markdown) {\n <div class=\"w-full overflow-y-auto rounded-xl bg-white p-4\">\n <markdown class=\"markdown-body\" [data]=\"markdown\"></markdown>\n </div>\n } @else if (content.mimetype === 'application/pdf') {\n <div class=\"mx-auto w-[50rem] sm:h-[65vh]\">\n <ngx-extended-pdf-viewer\n [authorization]=\"token\"\n [src]=\"pdfSrc\"\n [disableHistory]=\"true\"\n [showBorders]=\"false\"\n [showDownloadButton]=\"false\"\n [showDrawEditor]=\"false\"\n [showEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"false\"\n [showRotateButton]=\"false\"\n [showSecondaryToolbarButton]=\"false\"\n [showSidebarButton]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [useBrowserLocale]=\"true\"\n [zoom]=\"auto\"\n [page]=\"pageNumber\"\n ></ngx-extended-pdf-viewer>\n </div>\n } @else if (previewUrl) {\n <div\n class=\"group relative w-full overflow-hidden rounded-2xl border border-zinc-300/40 bg-zinc-300/30 p-4 dark:border-zinc-700/40 dark:bg-zinc-700/30\"\n >\n <div class=\"w-full overflow-hidden rounded-lg\">\n <img class=\"w-full\" [src]=\"previewUrl\" alt=\"\" />\n </div>\n </div>\n }\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i5.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] });
2828
2834
  }
2829
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PreviewComponent, decorators: [{
2835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewComponent, decorators: [{
2830
2836
  type: Component,
2831
2837
  args: [{ imports: [
2832
2838
  CommonModule,
@@ -2911,10 +2917,10 @@ class ContextOverlayComponent {
2911
2917
  return false;
2912
2918
  }
2913
2919
  }
2914
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ContextOverlayComponent, deps: [{ token: OVERLAY_RESOURCE_ID }, { token: OVERLAY_RESOURCE_TYPE }, { token: OVERLAY_PAGE_NUMBER }], target: i0.ɵɵFactoryTarget.Component });
2915
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: ContextOverlayComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"relative min-w-48 max-w-md rounded-2xl border border-zinc-400/50 bg-zinc-100/60 p-4 shadow-md backdrop-blur-md dark:border-zinc-600/50 dark:bg-zinc-800/60\"\n *transloco=\"let t\"\n>\n @if (resource) {\n @if (pageNumber) {\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n <div class=\"flex items-center gap-x-1 text-lg\">\n <span>{{ t('ai.source') }}:</span>\n <button\n class=\"text-blue-700 underline hover:text-blue-500 dark:text-blue-100 dark:hover:text-blue-400\"\n (click)=\"previewContent(pageNumber)\"\n >\n {{ t('page') }} {{ pageNumber }}\n </button>\n <span>{{ t('ai.of_document') }}</span>\n </div>\n <div class=\"mx-2 h-0.5 bg-zinc-200 dark:bg-zinc-700\"></div>\n <div class=\"flex items-center gap-x-3\">\n <mat-icon [svgIcon]=\"iconForMimeType()\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ resource?.filename }}\n </div>\n </div>\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ asset.name }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div\n class=\"flex w-full flex-col items-center justify-center gap-x-3 pb-4 sm:flex-row sm:justify-start\"\n >\n <div\n class=\"flex rounded-xl border border-zinc-300/50 bg-zinc-300/40 p-2 dark:border-zinc-700/50 dark:bg-zinc-700/30\"\n >\n <mat-icon class=\"icon-md\" [svgIcon]=\"iconForMimeType()\"></mat-icon>\n </div>\n <div class=\"w-full overflow-hidden\">\n <div class=\"flex w-full flex-col items-center pr-8 sm:items-start\">\n <div\n class=\"w-full truncate text-md font-semibold text-zinc-950 dark:text-zinc-50\"\n >\n {{ resource?.name || resource?.filename }}\n </div>\n <div\n class=\"flex flex-col gap-x-2 text-sm text-zinc-900/70 sm:flex-row sm:items-center dark:text-zinc-100/70\"\n >\n <span>{{ t(labelForType()) }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n @if (resource?.owner?.name) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"shield_person\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ t('owner.managed_by') }} <b>{{ resource.owner.name }}</b>\n </div>\n </div>\n }\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>{{ asset.name }} ({{ asset.type$name }})</div>\n </div>\n }\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"history\" class=\"icon-sm\"></mat-icon>\n <div class=\"flex flex-col gap-x-2 sm:flex-row sm:items-center\">\n @if (\n resource?.updatedAt && resource?.updatedAt !== resource?.createdAt\n ) {\n <span>\n {{ t('last_updated') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.updatedAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.updatedAt | dateAgo }}\n </span>\n </span>\n } @else {\n <span>\n {{ t('created') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.createdAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.createdAt | dateAgo }}\n </span>\n </span>\n }\n </div>\n </div>\n @if (resource?.description) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"slide_text\" class=\"icon-sm\"></mat-icon>\n <div class=\"line-clamp-3\">{{ resource?.description }}</div>\n </div>\n }\n @if (resource?.size) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"drive\" class=\"icon-sm\"></mat-icon>\n <div>{{ resource?.size | bytes }}</div>\n </div>\n }\n @if (isPreviewSupported()) {\n <div class=\"w-full px-4 pt-4\">\n <button\n mat-raised-button\n color=\"primary\"\n class=\"w-full\"\n (click)=\"previewContent()\"\n >\n {{ t('show_preview') }}\n </button>\n </div>\n }\n </div>\n }\n } @else if (status?.isLoading) {\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex flex-col gap-y-1 px-2 py-1\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', { item: t(resourceType) })\n }}</span>\n <span class=\"text-xs\">{{ resourceId }}</span>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: ClipboardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: DateAgoPipe, name: "dateAgo" }] });
2920
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextOverlayComponent, deps: [{ token: OVERLAY_RESOURCE_ID }, { token: OVERLAY_RESOURCE_TYPE }, { token: OVERLAY_PAGE_NUMBER }], target: i0.ɵɵFactoryTarget.Component });
2921
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ContextOverlayComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"relative min-w-48 max-w-md rounded-2xl border border-zinc-400/50 bg-zinc-100/60 p-4 shadow-md backdrop-blur-md dark:border-zinc-600/50 dark:bg-zinc-800/60\"\n *transloco=\"let t\"\n>\n @if (resource) {\n @if (pageNumber) {\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n <div class=\"flex items-center gap-x-1 text-lg\">\n <span>{{ t('ai.source') }}:</span>\n <button\n class=\"text-blue-700 underline hover:text-blue-500 dark:text-blue-100 dark:hover:text-blue-400\"\n (click)=\"previewContent(pageNumber)\"\n >\n {{ t('page') }} {{ pageNumber }}\n </button>\n <span>{{ t('ai.of_document') }}</span>\n </div>\n <div class=\"mx-2 h-0.5 bg-zinc-200 dark:bg-zinc-700\"></div>\n <div class=\"flex items-center gap-x-3\">\n <mat-icon [svgIcon]=\"iconForMimeType()\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ resource?.filename }}\n </div>\n </div>\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ asset.name }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div\n class=\"flex w-full flex-col items-center justify-center gap-x-3 pb-4 sm:flex-row sm:justify-start\"\n >\n <div\n class=\"flex rounded-xl border border-zinc-300/50 bg-zinc-300/40 p-2 dark:border-zinc-700/50 dark:bg-zinc-700/30\"\n >\n <mat-icon class=\"icon-md\" [svgIcon]=\"iconForMimeType()\"></mat-icon>\n </div>\n <div class=\"w-full overflow-hidden\">\n <div class=\"flex w-full flex-col items-center pr-8 sm:items-start\">\n <div\n class=\"w-full truncate text-md font-semibold text-zinc-950 dark:text-zinc-50\"\n >\n {{ resource?.name || resource?.filename }}\n </div>\n <div\n class=\"flex flex-col gap-x-2 text-sm text-zinc-900/70 sm:flex-row sm:items-center dark:text-zinc-100/70\"\n >\n <span>{{ t(labelForType()) }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n @if (resource?.owner?.name) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"shield_person\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ t('owner.managed_by') }} <b>{{ resource.owner.name }}</b>\n </div>\n </div>\n }\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>{{ asset.name }} ({{ asset.type$name }})</div>\n </div>\n }\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"history\" class=\"icon-sm\"></mat-icon>\n <div class=\"flex flex-col gap-x-2 sm:flex-row sm:items-center\">\n @if (\n resource?.updatedAt && resource?.updatedAt !== resource?.createdAt\n ) {\n <span>\n {{ t('last_updated') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.updatedAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.updatedAt | dateAgo }}\n </span>\n </span>\n } @else {\n <span>\n {{ t('created') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.createdAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.createdAt | dateAgo }}\n </span>\n </span>\n }\n </div>\n </div>\n @if (resource?.description) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"slide_text\" class=\"icon-sm\"></mat-icon>\n <div class=\"line-clamp-3\">{{ resource?.description }}</div>\n </div>\n }\n @if (resource?.size) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"drive\" class=\"icon-sm\"></mat-icon>\n <div>{{ resource?.size | bytes }}</div>\n </div>\n }\n @if (isPreviewSupported()) {\n <div class=\"w-full px-4 pt-4\">\n <button\n mat-raised-button\n color=\"primary\"\n class=\"w-full\"\n (click)=\"previewContent()\"\n >\n {{ t('show_preview') }}\n </button>\n </div>\n }\n </div>\n }\n } @else if (status?.isLoading) {\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex flex-col gap-y-1 px-2 py-1\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', { item: t(resourceType) })\n }}</span>\n <span class=\"text-xs\">{{ resourceId }}</span>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: ClipboardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: DateAgoPipe, name: "dateAgo" }] });
2916
2922
  }
2917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ContextOverlayComponent, decorators: [{
2923
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextOverlayComponent, decorators: [{
2918
2924
  type: Component,
2919
2925
  args: [{ imports: [
2920
2926
  CommonModule,
@@ -2980,10 +2986,10 @@ class MessageContextComponent {
2980
2986
  this.overlayRef.attach(portal);
2981
2987
  this.overlayRef.backdropClick().subscribe(() => this.overlayRef?.detach());
2982
2988
  }
2983
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: MessageContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2984
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: MessageContextComponent, isStandalone: true, selector: "ai-message-context", inputs: { isLastMessage: "isLastMessage", message: "message" }, ngImport: i0, template: "<cdk-accordion *transloco=\"let t\">\n <cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [expanded]=\"isLastMessage\"\n >\n <div\n class=\"flex min-w-80 max-w-full flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\"\n >\n @if (message?.parsedContent?.references?.length) {\n <div\n class=\"flex cursor-pointer items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\"\n (click)=\"accordionItem.toggle()\"\n (keyup.enter)=\"accordionItem.toggle()\"\n tabindex=\"0\"\n >\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-bold\">{{ t('ai.context') }}</span>\n </div>\n @if (accordionItem.expanded) {\n <div class=\"flex flex-nowrap gap-x-3 overflow-x-auto px-5 pb-3\">\n @for (\n ref of message?.parsedContent?.references;\n track ref.reference_id\n ) {\n @if (contextService.getContext(ref.id); as resource) {\n @if (\n ref.resourceType === 'asset' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (resource.type$name) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{\n resource.type$name\n }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (ref.resourceType === 'content') {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon\n [svgIcon]=\"iconForMimeType(resource.mimetype)\"\n ></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.filename\n }}</span>\n @if (\n contextService.assetForContent(resource.id);\n as asset\n ) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (\n ref.resourceType === 'event' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"calendar_clock\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (contextService.assetForEvent(resource); as asset) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n } @else if (contextService.status.get(ref.id)?.isLoading) {\n <div\n class=\"flex rounded-2xl border border-zinc-400/40 bg-zinc-400/20 px-2 py-1 dark:border-black/50 dark:bg-black/20\"\n >\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n </div>\n } @else {\n <div\n class=\"min-w-40 rounded-2xl border border-zinc-400/40 bg-zinc-400/20 dark:border-black/50 dark:bg-black/20\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-red-300 bg-red-100 text-red-700 dark:border-red-900 dark:bg-red-950/80 dark:text-red-400\"\n >\n <mat-icon svgIcon=\"error_circle\"></mat-icon>\n </div>\n <div class=\"flex h-full flex-col pr-4\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', {\n item: t(ref.resourceType),\n })\n }}</span>\n <span class=\"text-xs\">{{ ref.id }}</span>\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n </cdk-accordion-item>\n</cdk-accordion>\n", styles: ["@keyframes flash{0%,to{background:transparent}50%{background:#06b6d44d}}.animate-highlight{animation:flash .75s linear;animation-fill-mode:backwards;animation-iteration-count:2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "directive", type: i1$3.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }, { kind: "directive", type: i1$3.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
2989
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2990
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: MessageContextComponent, isStandalone: true, selector: "ai-message-context", inputs: { isLastMessage: "isLastMessage", message: "message" }, ngImport: i0, template: "<cdk-accordion *transloco=\"let t\">\n <cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [expanded]=\"isLastMessage\"\n >\n <div\n class=\"flex min-w-80 max-w-full flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\"\n >\n @if (message?.parsedContent?.references?.length) {\n <div\n class=\"flex cursor-pointer items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\"\n (click)=\"accordionItem.toggle()\"\n (keyup.enter)=\"accordionItem.toggle()\"\n tabindex=\"0\"\n >\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-bold\">{{ t('ai.context') }}</span>\n </div>\n @if (accordionItem.expanded) {\n <div class=\"flex flex-nowrap gap-x-3 overflow-x-auto px-5 pb-3\">\n @for (\n ref of message?.parsedContent?.references;\n track ref.reference_id\n ) {\n @if (contextService.getContext(ref.id); as resource) {\n @if (\n ref.resourceType === 'asset' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (resource.type$name) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{\n resource.type$name\n }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (ref.resourceType === 'content') {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon\n [svgIcon]=\"iconForMimeType(resource.mimetype)\"\n ></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.filename\n }}</span>\n @if (\n contextService.assetForContent(resource.id);\n as asset\n ) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (\n ref.resourceType === 'event' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"calendar_clock\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (contextService.assetForEvent(resource); as asset) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n } @else if (contextService.status.get(ref.id)?.isLoading) {\n <div\n class=\"flex rounded-2xl border border-zinc-400/40 bg-zinc-400/20 px-2 py-1 dark:border-black/50 dark:bg-black/20\"\n >\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n </div>\n } @else {\n <div\n class=\"min-w-40 rounded-2xl border border-zinc-400/40 bg-zinc-400/20 dark:border-black/50 dark:bg-black/20\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-red-300 bg-red-100 text-red-700 dark:border-red-900 dark:bg-red-950/80 dark:text-red-400\"\n >\n <mat-icon svgIcon=\"error_circle\"></mat-icon>\n </div>\n <div class=\"flex h-full flex-col pr-4\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', {\n item: t(ref.resourceType),\n })\n }}</span>\n <span class=\"text-xs\">{{ ref.id }}</span>\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n </cdk-accordion-item>\n</cdk-accordion>\n", styles: ["@keyframes flash{0%,to{background:transparent}50%{background:#06b6d44d}}.animate-highlight{animation:flash .75s linear;animation-fill-mode:backwards;animation-iteration-count:2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "directive", type: i1$3.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }, { kind: "directive", type: i1$3.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
2985
2991
  }
2986
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: MessageContextComponent, decorators: [{
2992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageContextComponent, decorators: [{
2987
2993
  type: Component,
2988
2994
  args: [{ imports: [
2989
2995
  CommonModule,
@@ -3099,10 +3105,10 @@ class ThreadComponent {
3099
3105
  selectChoice(selection, toolMessage) {
3100
3106
  this.chatService.selectChoice(selection, toolMessage);
3101
3107
  }
3102
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThreadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3103
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: ThreadComponent, isStandalone: true, selector: "ai-thread", ngImport: i0, template: "<div class=\"relative flex h-full w-full flex-col gap-1 px-6 py-4\" *transloco=\"let t\">\n @if (chatService.isLoading) {\n <div class=\"absolute inset-0 z-100 flex items-center justify-center backdrop-blur-lg\">\n <mat-spinner diameter=\"28\"></mat-spinner>\n </div>\n }\n @for (item of chatService.messages; track item.id; let idx = $index) {\n @if (item.role === 'assistant' && item.parsedContent) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <markdown class=\"markdown-body\" [data]=\"getMarkdownContent(item)\" (click)=\"interceptClick($event)\"></markdown>\n @if (item.parsedContent.references?.length) {\n <ai-message-context [message]=\"item\" [isLastMessage]=\"idx === chatService.messages.length - 1\" class=\"mt-2\"></ai-message-context>\n }\n </div>\n } @else if (item.role === 'assistant' && item.status === 'failed' && getFailReason(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex items-center gap-x-2 rounded-2xl bg-red-400/10 px-4 py-2 dark:bg-red-600/10\">\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-600/80 icon-sm dark:text-red-400/80\"></mat-icon>\n <span>{{ getFailReason(item) }}</span>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'action' && item.status && getToolStatus(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-1 text-lg md:text-xl\">\n <div\n class=\"flex w-fit items-center gap-x-2 rounded-2xl bg-zinc-300/20 px-4 py-1 text-md text-zinc-800/90 dark:bg-black/70 dark:text-zinc-100/90\"\n >\n @if (item.status === 'completed') {\n <mat-icon svgIcon=\"checkmark_circle\" class=\"text-green-500/80 icon-sm dark:text-green-400/80\"></mat-icon>\n } @else if (item.status === 'failed') {\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-500/80 icon-sm dark:text-red-400/80\"></mat-icon>\n } @else if (item.status === 'pending') {\n <mat-icon svgIcon=\"hourglass_quarter\" class=\"text-zinc-700/60 icon-sm dark:text-zinc-300/40\"></mat-icon>\n } @else if (item.status === 'processing') {\n <mat-spinner diameter=\"16\"></mat-spinner>\n }\n <i>{{ getToolStatus(item) }}</i>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'choice' && item.status === 'processing' && item.args?.choices) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\">\n @if (item.args.message) {\n <div class=\"flex items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\">\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-semibold\">{{ item.args.message }}</span>\n </div>\n }\n <div class=\"flex flex-wrap gap-x-3 gap-y-2 overflow-x-auto px-5 pb-3\">\n @for (choice of item.args.choices; track choice.id) {\n <div\n class=\"min-w-48 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"selectChoice(choice, item)\"\n (keyup.enter)=\"selectChoice(choice, item)\"\n tabindex=\"0\"\n >\n <div class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\">\n <div class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\">\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div class=\"flex h-full grow flex-col overflow-hidden pr-4\">\n <span class=\"truncate text-md font-semibold\">{{ choice.name }}</span>\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ choice.typeName }}</span>\n @if (choice.location) {\n <span class=\"truncate\">{{ choice.location }}</span>\n }\n @if (choice.factory) {\n <span class=\"truncate\">{{ choice.factory }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (item.role === 'user' && !item.hidden) {\n <div class=\"flex max-w-[90%] flex-col self-end py-4 md:max-w-[80%]\">\n <div class=\"rounded-2xl bg-zinc-300/30 px-6 py-4 text-md md:text-lg dark:bg-black/20\">\n <markdown class=\"markdown-body\" [data]=\"item.content\"></markdown>\n </div>\n </div>\n }\n }\n\n @if (chatService.isProcessing) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center rounded-2xl text-lg md:text-xl\">\n <div class=\"flex flex-col gap-y-2 px-2 py-4\">\n <div class=\"pulse-loader flex items-center gap-x-1 text-zinc-700/50 dark:text-zinc-300/30\"> <div></div><div></div><div></div> </div>\n </div>\n </div>\n }\n</div>\n", styles: [".pulse-loader>div{background-color:currentColor;width:8px;height:8px;border-radius:100%;animation:pulse 1s ease infinite}.pulse-loader>div:nth-child(2){animation-delay:.1s!important}.pulse-loader>div:nth-child(3){animation-delay:.2s!important}@keyframes pulse{0%,60%,to{opacity:1;transform:scale(1)}30%{opacity:.1;transform:scale(.01)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: MessageContextComponent, selector: "ai-message-context", inputs: ["isLastMessage", "message"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
3108
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThreadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3109
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ThreadComponent, isStandalone: true, selector: "ai-thread", ngImport: i0, template: "<div class=\"relative flex h-full w-full flex-col gap-1 px-6 py-4\" *transloco=\"let t\">\n @if (chatService.isLoading) {\n <div class=\"absolute inset-0 z-100 flex items-center justify-center backdrop-blur-lg\">\n <mat-spinner diameter=\"28\"></mat-spinner>\n </div>\n }\n @for (item of chatService.messages; track item.id; let idx = $index) {\n @if (item.role === 'assistant' && item.parsedContent) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <markdown class=\"markdown-body\" [data]=\"getMarkdownContent(item)\" (click)=\"interceptClick($event)\"></markdown>\n @if (item.parsedContent.references?.length) {\n <ai-message-context [message]=\"item\" [isLastMessage]=\"idx === chatService.messages.length - 1\" class=\"mt-2\"></ai-message-context>\n }\n </div>\n } @else if (item.role === 'assistant' && item.status === 'failed' && getFailReason(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex items-center gap-x-2 rounded-2xl bg-red-400/10 px-4 py-2 dark:bg-red-600/10\">\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-600/80 icon-sm dark:text-red-400/80\"></mat-icon>\n <span>{{ getFailReason(item) }}</span>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'action' && item.status && getToolStatus(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-1 text-lg md:text-xl\">\n <div\n class=\"flex w-fit items-center gap-x-2 rounded-2xl bg-zinc-300/20 px-4 py-1 text-md text-zinc-800/90 dark:bg-black/70 dark:text-zinc-100/90\"\n >\n @if (item.status === 'completed') {\n <mat-icon svgIcon=\"checkmark_circle\" class=\"text-green-500/80 icon-sm dark:text-green-400/80\"></mat-icon>\n } @else if (item.status === 'failed') {\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-500/80 icon-sm dark:text-red-400/80\"></mat-icon>\n } @else if (item.status === 'pending') {\n <mat-icon svgIcon=\"hourglass_quarter\" class=\"text-zinc-700/60 icon-sm dark:text-zinc-300/40\"></mat-icon>\n } @else if (item.status === 'processing') {\n <mat-spinner diameter=\"16\"></mat-spinner>\n }\n <i>{{ getToolStatus(item) }}</i>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'choice' && item.status === 'processing' && item.args?.choices) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\">\n @if (item.args.message) {\n <div class=\"flex items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\">\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-semibold\">{{ item.args.message }}</span>\n </div>\n }\n <div class=\"flex flex-wrap gap-x-3 gap-y-2 overflow-x-auto px-5 pb-3\">\n @for (choice of item.args.choices; track choice.id) {\n <div\n class=\"min-w-48 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"selectChoice(choice, item)\"\n (keyup.enter)=\"selectChoice(choice, item)\"\n tabindex=\"0\"\n >\n <div class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\">\n <div class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\">\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div class=\"flex h-full grow flex-col overflow-hidden pr-4\">\n <span class=\"truncate text-md font-semibold\">{{ choice.name }}</span>\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ choice.typeName }}</span>\n @if (choice.location) {\n <span class=\"truncate\">{{ choice.location }}</span>\n }\n @if (choice.factory) {\n <span class=\"truncate\">{{ choice.factory }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (item.role === 'user' && !item.hidden) {\n <div class=\"flex max-w-[90%] flex-col self-end py-4 md:max-w-[80%]\">\n <div class=\"rounded-2xl bg-zinc-300/30 px-6 py-4 text-md md:text-lg dark:bg-black/20\">\n <markdown class=\"markdown-body\" [data]=\"item.content\"></markdown>\n </div>\n </div>\n }\n }\n\n @if (chatService.isProcessing) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center rounded-2xl text-lg md:text-xl\">\n <div class=\"flex flex-col gap-y-2 px-2 py-4\">\n <div class=\"pulse-loader flex items-center gap-x-1 text-zinc-700/50 dark:text-zinc-300/30\"> <div></div><div></div><div></div> </div>\n </div>\n </div>\n }\n</div>\n", styles: [".pulse-loader>div{background-color:currentColor;width:8px;height:8px;border-radius:100%;animation:pulse 1s ease infinite}.pulse-loader>div:nth-child(2){animation-delay:.1s!important}.pulse-loader>div:nth-child(3){animation-delay:.2s!important}@keyframes pulse{0%,60%,to{opacity:1;transform:scale(1)}30%{opacity:.1;transform:scale(.01)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: MessageContextComponent, selector: "ai-message-context", inputs: ["isLastMessage", "message"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
3104
3110
  }
3105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThreadComponent, decorators: [{
3111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThreadComponent, decorators: [{
3106
3112
  type: Component,
3107
3113
  args: [{ imports: [
3108
3114
  CommonModule,
@@ -3328,47 +3334,31 @@ class AiChatDialogComponent {
3328
3334
  data;
3329
3335
  matDialogRef;
3330
3336
  chatService = inject(ChatService);
3331
- confirm;
3332
3337
  type = 'asset';
3333
3338
  asset;
3334
- event;
3335
- task;
3336
3339
  logger = inject(NGXLogger);
3337
3340
  translocoService = inject(TranslocoService);
3338
3341
  constructor(data, matDialogRef, matIconRegistry, domSanitizer) {
3339
3342
  this.data = data;
3340
3343
  this.matDialogRef = matDialogRef;
3341
3344
  this.asset = data.asset;
3342
- this.confirm = !!data.confirm;
3343
- this.event = data.event;
3344
- this.task = data.task;
3345
- this.type = data.type || 'asset';
3345
+ if (this.asset.externalKey && !this.asset.id) {
3346
+ this.type = 'ext-asset';
3347
+ }
3346
3348
  const blob = new Blob([svgString], { type: 'image/svg+xml' });
3347
3349
  const url = URL.createObjectURL(blob);
3348
3350
  matIconRegistry.addSvgIconSet(domSanitizer.bypassSecurityTrustResourceUrl(url));
3349
3351
  }
3350
3352
  ngOnInit() {
3351
- let task = {};
3352
- if (this.task) {
3353
- task = {
3354
- name: this.task.name,
3355
- reason: this.task.reason,
3356
- description: this.task.description,
3357
- priority: this.task.priority,
3358
- };
3359
- }
3360
3353
  this.chatService
3361
3354
  .init()
3362
3355
  .then(async () => {
3363
3356
  const initialMessage = this.translocoService.translate('ai.prompts.' + this.type, {
3364
3357
  assetId: this.asset?.id,
3365
3358
  assetName: this.asset?.name,
3366
- assetTypeId: this.asset?.type?.id,
3367
- assetTypeName: this.asset?.type?.name,
3368
- task: JSON.stringify(task),
3359
+ assetKey: this.asset?.externalKey,
3369
3360
  });
3370
- const type = this.type === 'help' ? 'asset' : this.type;
3371
- const assistantId = type + '-assistant';
3361
+ const assistantId = 'asset-assistant';
3372
3362
  await this.chatService.createThreadForModal(assistantId, initialMessage);
3373
3363
  })
3374
3364
  .catch((err) => {
@@ -3379,10 +3369,10 @@ class AiChatDialogComponent {
3379
3369
  close(message) {
3380
3370
  this.matDialogRef.close(message);
3381
3371
  }
3382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiChatDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i3$1.MatDialogRef }, { token: i2$2.MatIconRegistry }, { token: i3$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
3383
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: AiChatDialogComponent, isStandalone: true, selector: "ng-component", providers: [ChatService, ContextService, WebsocketService], ngImport: i0, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n @if (confirm) {\n <div class=\"flex w-full justify-center px-6 pt-8\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"close('confirmed')\"\n class=\"w-full sm:w-auto\"\n >\n {{ t('solve') }}\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: AiTranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: ChatScrollDirective, selector: "[aiChatScroll]" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LoggerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: MessageInputComponent, selector: "ai-message-input", inputs: ["startConversation"] }, { kind: "component", type: ThreadComponent, selector: "ai-thread" }] });
3372
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiChatDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i3$1.MatDialogRef }, { token: i2$2.MatIconRegistry }, { token: i3$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
3373
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: AiChatDialogComponent, isStandalone: true, selector: "ng-component", providers: [ChatService, ContextService, WebsocketService], ngImport: i0, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n", styles: ["*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{inset:0!important}.right-4{right:1rem!important}.top-4{top:1rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mt-2{margin-top:.5rem!important}.line-clamp-3{display:-webkit-box!important;overflow:hidden!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important}.flex{display:flex!important}.contents{display:contents!important}.hidden{display:none!important}.h-0\\.5{height:.125rem!important}.h-10{height:2.5rem!important}.h-full{height:100%!important}.w-10{width:2.5rem!important}.w-\\[50rem\\]{width:50rem!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.min-w-40{min-width:10rem!important}.min-w-48{min-width:12rem!important}.min-w-80{min-width:20rem!important}.max-w-80{max-width:20rem!important}.max-w-\\[85\\%\\]{max-width:85%!important}.max-w-\\[90\\%\\]{max-width:90%!important}.max-w-full{max-width:100%!important}.max-w-md{max-width:28rem!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-pointer{cursor:pointer!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.gap-1{gap:.25rem!important}.gap-x-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.gap-x-3{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.gap-y-1{row-gap:.25rem!important}.gap-y-2{row-gap:.5rem!important}.self-end{align-self:flex-end!important}.self-center{align-self:center!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.rounded-2xl{border-radius:1rem!important}.rounded-lg{border-radius:.5rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity,1))!important}.border-zinc-300\\/40{border-color:#d4d4d866!important}.border-zinc-300\\/50{border-color:#d4d4d880!important}.border-zinc-400\\/30{border-color:#a1a1aa4d!important}.border-zinc-400\\/40{border-color:#a1a1aa66!important}.border-zinc-400\\/50{border-color:#a1a1aa80!important}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity,1))!important}.bg-blue-600,.bg-gray-600{--tw-bg-opacity:1!important}.bg-gray-600{background-color:rgb(75 85 99/var(--tw-bg-opacity,1))!important}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity,1))!important}.bg-green-600,.bg-red-100{--tw-bg-opacity:1!important}.bg-red-100{background-color:rgb(254 226 226/var(--tw-bg-opacity,1))!important}.bg-red-400\\/10{background-color:#f872721a!important}.bg-red-600{background-color:rgb(220 38 38/var(--tw-bg-opacity,1))!important}.bg-red-600,.bg-white{--tw-bg-opacity:1!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.bg-yellow-600{--tw-bg-opacity:1!important;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))!important}.bg-zinc-100\\/60{background-color:#f4f4f599!important}.bg-zinc-200{--tw-bg-opacity:1!important;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))!important}.bg-zinc-300\\/20{background-color:#d4d4d833!important}.bg-zinc-300\\/30{background-color:#d4d4d84d!important}.bg-zinc-300\\/40{background-color:#d4d4d866!important}.bg-zinc-400\\/20{background-color:#a1a1aa33!important}.bg-zinc-50{--tw-bg-opacity:1!important;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))!important}.p-2{padding:.5rem!important}.p-4{padding:1rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-4{padding-bottom:1rem!important;padding-top:1rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:.75rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.pr-10{padding-right:2.5rem!important}.pr-2{padding-right:.5rem!important}.pr-4{padding-right:1rem!important}.pr-8{padding-right:2rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-semibold{font-weight:600!important}.lowercase{text-transform:lowercase!important}.text-amber-600{--tw-text-opacity:1!important;color:rgb(217 119 6/var(--tw-text-opacity,1))!important}.text-blue-600{--tw-text-opacity:1!important;color:rgb(37 99 235/var(--tw-text-opacity,1))!important}.text-blue-700{--tw-text-opacity:1!important;color:rgb(29 78 216/var(--tw-text-opacity,1))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity,1))!important}.text-green-500\\/80{color:#22c55ecc!important}.text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity,1))!important}.text-red-500\\/80{color:#ef4444cc!important}.text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity,1))!important}.text-red-600\\/80{color:#dc2626cc!important}.text-red-700{--tw-text-opacity:1!important;color:rgb(185 28 28/var(--tw-text-opacity,1))!important}.text-zinc-500{--tw-text-opacity:1!important;color:rgb(113 113 122/var(--tw-text-opacity,1))!important}.text-zinc-700\\/50{color:#3f3f4680!important}.text-zinc-700\\/60{color:#3f3f4699!important}.text-zinc-800{--tw-text-opacity:1!important;color:rgb(39 39 42/var(--tw-text-opacity,1))!important}.text-zinc-800\\/90{color:#27272ae6!important}.text-zinc-900\\/70{color:#18181bb3!important}.text-zinc-950{--tw-text-opacity:1!important;color:rgb(9 9 11/var(--tw-text-opacity,1))!important}.underline{text-decoration-line:underline!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)!important}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important;backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)!important}:root{--black:#000;--white:#fff;--white-rgb:255,255,255;--blue-slate-950-rgb:2,6,23;--blue-slate-900-rgb:15,23,42;--blue-slate-800-rgb:30,41,59;--blue-slate-700-rgb:51,65,85;--blue-slate-400-rgb:148,163,184;--blue-slate-300-rgb:203,213,225;--blue-slate-100-rgb:241,245,249;--blue-slate-050-rgb:248,250,252;--gray-800-rgb:31,41,55;--gray-700-rgb:55,65,81;--gray-600-rgb:75,85,99;--gray-200-rgb:229,231,235;--zinc-950-rgb:9,9,11;--zinc-900-rgb:24,24,27;--zinc-800-rgb:39,39,42;--zinc-700-rgb:63,63,70;--zinc-600-rgb:82,82,91;--zinc-500-rgb:113,113,122;--zinc-400-rgb:161,161,170;--zinc-300-rgb:212,212,216;--zinc-200-rgb:228,228,231;--zinc-100-rgb:244,244,245;--zinc-050-rgb:250,250,250;--red-700-rgb:185,28,28;--red-600-rgb:220,38,38;--red-500-rgb:239,68,68;--red-400-rgb:248,113,113;--red-300-rgb:252,165,165;--blue-gray-900-10:rgba(15,23,42,.1);--blue-gray-900-20:rgba(15,23,42,.2);--blue-gray-900:#0f172a;--blue-gray-800:#1e293b;--blue-gray-800-rgb:30,41,59;--blue-gray-700:#334155;--blue-gray-600:#475569;--blue-gray-500:#64748b;--blue-gray-400:#94a3b8;--blue-gray-300:#cbd5e1;--blue-gray-200:#e2e8f0;--blue-gray-100:#f1f5f9;--blue-gray-50:#f8fafc;--blue-gray-light-2:#141b2e;--blue-gray-light-4:#182032;--blue-gray-light-8:#21293b;--blue-gray-light-8-rgb:33,41,59;--blue-gray-light-16:#333b4b;--blue-gray-light-32:#575e6c;--blue-gray-light-64:#a0a5ae;--blue-gray-light-100:#f1f5f9;--blue-gray-dark-2:#e8ecf1;--blue-gray-dark-4:#e8ecf1;--blue-gray-dark-8:#dfe3e8;--blue-gray-dark-16:#cdd1d8;--blue-gray-dark-32:#a9aeb7;--blue-gray-dark-64:#606775;--blue-gray-dark-100:#0f172a;--blue-700:#1d4ed8;--blue-50:#eff6ff;--green-500:#10b981;--green-50:#ecfdf5;--yellow-50:#fffbeb;--yellow-500:#d97706;--red-700:#b91c1c;--red-50:#fef2f2;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--teal-500:#14b8a6;--teal-600:#0d9488;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--hp-light-blue:#13cae6;--hp-gradient-light:#3f8efe;--hp-gradient-highlight:#3ffbda;--hp-gradient-dark:#2b64ff;--font-family:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-chip-container-height:30px;--mdc-chip-container-shape-radius:12px;--mdc-fab-container-shape:12px;--mdc-icon-button-icon-size:24px;--mdc-icon-button-state-layer-size:40px;--mdc-icon-button-icon-color:currentColor;--mdc-linear-progress-active-indicator-color:#020617;--mdc-linear-progress-active-indicator-height:10px;--mdc-linear-progress-track-color:#f4f4f5;--mdc-linear-progress-track-height:10px;--mdc-linear-progress-track-shape:10px;--mdc-plain-tooltip-container-shape:8px;--mdc-protected-button-container-shape:9999px;--mdc-protected-button-keep-touch-target:false;--mat-protected-button-horizontal-padding:24px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-dialog-actions-padding:16px;--mat-dialog-actions-alignment:normal;--mdc-dialog-container-shape:16px;--mdc-dialog-supporting-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-outlined-button-container-height:40px;--mdc-outlined-button-container-shape:9999px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:24px;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-text-button-container-height:40px;--mdc-text-button-container-shape:9999px;--mat-text-button-horizontal-padding:24px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mdc-text-button-keep-touch-target:false;--mat-text-button-with-icon-horizontal-padding:8px;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-menu-container-shape:16px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px;--mat-stepper-container-color:transparent;--mdc-switch-track-height:28px;--mat-switch-track-outline-color:#52525b;--mat-switch-label-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mat-switch-label-text-color:#09090b;--mat-switch-label-text-tracking:0;--mat-switch-label-text-weight:600;--mdc-switch-unselected-handle-color:#52525b;--mdc-switch-unselected-track-color:#d4d4d8;--mdc-switch-unselected-focus-track-color:#cbd5e1;--mdc-switch-unselected-hover-track-color:#cbd5e1;--mdc-switch-unselected-pressed-track-color:#cbd5e1;--mdc-switch-selected-track-color:#1e293b;--mdc-switch-selected-focus-track-color:#334155;--mdc-switch-selected-hover-track-color:#334155;--mdc-switch-selected-pressed-track-color:#334155;--mat-switch-selected-track-outline-color:#020617;--mdc-switch-selected-handle-color:#cbd5e1;--mdc-switch-selected-focus-handle-color:#3ffbda;--mdc-switch-selected-hover-handle-color:#3ffbda;--mdc-switch-selected-pressed-handle-color:#3ffbda;--mdc-switch-selected-focus-state-layer-color:#3ffbda;--mdc-switch-selected-hover-state-layer-color:#3ffbda;--mdc-switch-selected-pressed-state-layer-color:#3ffbda;--mdc-switch-unselected-focus-state-layer-color:#020617;--mdc-switch-unselected-hover-state-layer-color:#020617;--mdc-switch-unselected-pressed-state-layer-color:#020617;--mdc-switch-selected-icon-color:#020617;--mat-switch-with-icon-handle-size:22px;--hot-toast-border-radius:16px;--hot-toast-padding:14px 20px;--hot-toast-info-icon-background-color:#1d4ed8;--hot-toast-checkmark-icon-background-color:#10b981;--hot-toast-warning-icon-background-color:#d97706;--hot-toast-error-icon-background-color:#b91c1c;--color-primary:#020617;--color-primary-inverted:#f8fafc;--color-on-primary:#f8fafc;--color-danger:#fca5a5;--color-on-danger:#dc2626;--menu_container-color:#020617;--menu_text-color:#f8fafc;--color-surface:#fff;--color-on-surface:#1e293b;--color-on-surface-lighter:#64748b;--color-base:#f1f5f9;--color-base-900:#f1f5f9;--color-base-800:#e2e8f0;--color-base-700:#cbd5e1;--color-base-600:#94a3b8;--color-base-500:#64748b;--color-base-400:#475569;--color-base-300:#334155;--color-base-200:#1e293b;--color-base-100:#0f172a;--color-border-around-base:#e2e8f0;--color-alternate:#f1f5f9;--color-alternate-lighter:#f8fafc;--color-active:#e2e8f0;--color-active-lighter:#f1f5f9;--color-on-active:#0f172a;--color-interactive:#cbd5e1;--color-on-interactive:#0f172a;--color-disabled:#fff;--color-highlight:#3f8efe;--color-highlight-hover:#06b6d4;--color-hint:#606775;--color-info:#eff6ff;--color-on-info:#1d4ed8;--color-success:#ecfdf5;--color-on-success:#10b981;--color-warning:#fffbeb;--color-on-warning:#d97706;--color-error:#fef2f2;--color-on-error:#b91c1c;--color-bg-primary:#fff;--color-bg-secondary:rgba(239,254,252,.3);--color-hover:#e2e8f0;--card_background-color:#fff;--card_background-color-rgb:255,255,255;--dialog_background-color:#fff;--query-sender_background-color:#f5f5ef;--query-sender_text-color:#000;--sidebar_text-color:#fff;--sidebar_border-color:#1e293b;--sidebar-title_font-size:1.7rem;--sidebar-title-letter-spacing:-1px;--sidebar-button_background-color:transparent;--sidebar-button_text-color:#94a3b8;--sidebar-button_font-weight:500;--sidebar-button_active_text-color:#f8fafc;--radio_background-color:#e2e8f0;--radio_border-color:#334155;--radio_active_background-color:#cbd5e1;--radio_active_border-color:#0f172a;--mdc-radio-selected-icon-color:#0f172a;--mdc-radio-selected-pressed-icon-color:#3f8efe;--mdc-radio-selected-hover-icon-color:#06b6d4;--mdc-radio-unselected-icon-color:#0f172a;--mdc-radio-unselected-pressed-icon-color:#3f8efe;--mdc-radio-unselected-hover-icon-color:#06b6d4;--checkbox_background-color:#f1f5f9;--mdc-checkbox-state-layer-size:36px;--mdc-checkbox-selected-icon-color:#0f172a;--mdc-checkbox-selected-hover-icon-color:#0f172a;--mdc-checkbox-selected-pressed-icon-color:#0f172a;--mdc-checkbox-selected-focus-icon-color:#0f172a;--mdc-checkbox-unselected-icon-color:#475569;--mdc-checkbox-unselected-hover-icon-color:#0f172a;--mdc-checkbox-unselected-pressed-icon-color:#0f172a;--mdc-checkbox-unselected-focus-icon-color:#0f172a;--mdc-checkbox-selected-checkmark-color:#f1f5f9;--mat-mdc-button-persistent-ripple-color:#0f172a;--mat-mdc-button-ripple-color:rgba(15,23,42,.2);--toggle-bar_color:#cbd5e1;--toggle-bar_active_color:#94a3b8;--toggle-bar-thumb_color:#64748b;--toggle-bar-thumb_active_color:#0f172a;--toggle-button_text-color:#000;--toggle-button_background-color:#f8fafc;--toggle-button_hover_background-color:#e2e8f0;--toggle-button_checked_text-color:#fff;--toggle-button_checked_background-color:#10b981;--tag_background-color:#e2e8f0;--tag_text-color:#475569;--tag_border-color:#e2e8f0;--tag_hover_background-color:#475569;--tag_hover_text-color:#e2e8f0;--tag_hover_border-color:#475569;--tag_disabled_background-color:#f8fafc;--tag_disabled_text-color:#cbd5e1;--tag_disabled_border-color:#f8fafc;--tag_system_background-color:#a5f3fc;--tag_border-radius:.75rem;--input_text-color:#1e293b;--input_border-color:#cbd5e1;--input_placeholder-color:#64748b;--input_xfix-color:#64748b;--input_caret-color:#1e293b;--input_border-radius:.5rem;--input_active_border-color:#334155;--form-field-label_text-color:#f1f5f9;--form-field-required_color:#b91c1c;--color-button-primary:#475569;--color-button-primary-text:#fff;--color-button-secondary:#cbd5e1;--color-button-secondary-text:#0f172a;--color-disabled-button:hsla(0,0%,100%,.5);--color-text-primary:#0f172a;--color-text-secondary:#0f172a;--color-text-accent:red;--color-text-disabled:#606775;--color-text-disabled-button:#606775;--color-text-hint:#606775;--color-dividers:#cbd5e1;--color-icons:#0f172a;--light-primary-text:#fff;--dark-primary-text:#000;--primary-color:#fff;--primary-lighter-color:#b3b6e8;--primary-darker-color:#010798;--text-primary-color:#0f172a;--text-primary-lighter-color:#000;--text-primary-darker-color:#fff;--accent-color:#475569;--accent-lighter-color:#94a3b8;--accent-darker-color:#1e293b;--text-accent-color:#fff;--text-accent-lighter-color:#000;--text-accent-darker-color:#fff;--white-color:#fff;--text-white-color:#000;--success-color:#6ee7b7;--text-success-color:#000;--warn-color:#be123c;--warn-lighter-color:#fef2f2;--warn-darker-color:#b91c1c;--text-warn-color:#fff;--text-warn-lighter-color:#000;--text-warn-darker-color:#fff;--text-primary:#0f172a;--form-filed-bg:#fff;--fab-button-bg:#fff;--fab-button-text:#0f172a;--fab-button-disabled-bg:hsla(0,0%,100%,.6);--fab-button-disabled-text:rgba(0,0,0,.3);--button-text-color:#0f172a;--button-bg-color:#cbd5e1;--button-hover-color:#94a3b8;--mdc-filled-button-label-text-color:#0f172a;--mdc-filled-button-container-color:#cbd5e1;--mdc-protected-button-label-text-color:#0f172a;--mdc-protected-button-container-color:#cbd5e1}html{--hp-dark-blue:#131d56;--hp-light-blue:#13cae6;--hp-gradient-light:63,142,254;--hp-gradient-highlight:63,251,218;--hp-gradient-dark:43,100,255;--hp-color-text-highlight:19,202,230;--hpc-highlight-color-light:6 182 212;--hpc-highlight-color-dark:19 202 230;--hpc-highlight-color:6 182 212;--mdc-chip-elevated-container-color:#e2e8f0;--mdc-plain-tooltip-container-color:#020617;--mdc-plain-tooltip-supporting-text-color:#fff;--mat-menu-container-color:hsla(0,0%,100%,.5);--mat-select-panel-background-color:hsla(0,0%,100%,.4);--mat-paginator-container-background-color:#fafafa;--mat-paginator-container-border-color:#f4f4f5;--mat-paginator-container-border-top-color:#e4e4e7;--mat-sidenav-container-divider-color:#e2e8f0;--mat-stepper-line-color:#f1f5f9;--sidebar_background-color:#020617;--sidebar-submenu_hover_background-color:hsla(240,4%,46%,.7);--scrollbar-thumb-color:rgba(2,6,23,.25);--scrollbar-track-color:rgba(2,6,23,.1)}input,textarea{background:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:#d4d4d8}input::placeholder,textarea::placeholder{color:#d4d4d8}.dark input::-moz-placeholder,.dark textarea::-moz-placeholder{color:#52525b}.dark input::placeholder,.dark textarea::placeholder{color:#52525b}input::-moz-placeholder,textarea::-moz-placeholder{color:#606775}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#606775}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#606775}input:-webkit-autofill,input:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}input:-webkit-autofill:active,input:-webkit-autofill:focus,textarea:-webkit-autofill:active,textarea:-webkit-autofill:focus{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}[data-autocompleted]{background-color:transparent!important}input:focus,textarea:focus{box-shadow:none!important;outline:none!important}.mdc-elevation--z4{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}.mat-mdc-raised-button.mat-primary{background-color:#020617!important;color:#f8fafc!important;font-weight:600!important;line-height:1.375!important;padding-left:1rem!important;padding-right:1rem!important}.dark .mat-mdc-raised-button.mat-primary{background-color:#e4e4e7!important;color:#020617!important}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.05}.mat-mdc-outlined-button.mat-primary{background:linear-gradient(to bottom right,#3ffbdae6,#2b64ffe6)!important;border:none!important;color:#fff!important;font-weight:600!important}.mat-mdc-outlined-button.mat-primary:hover{background:linear-gradient(to bottom right,#3ffbda,#2b64ff)!important}.mat-mdc-outlined-button:not([disabled=true]){border-color:#27272a!important}.dark .mat-mdc-outlined-button:not([disabled=true]){border-color:#d4d4d8!important}.mat-mdc-outlined-button[disabled=true]{border-color:#e5e7eb!important}.dark .mat-mdc-outlined-button[disabled=true]{border-color:#4b5563!important}.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-raised-button:not(.mat-primary,.mat-accent),.mat-mdc-raised-button:not(.mat-primary,.mat-accent):hover,.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent),.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent):hover{background-color:#cbd5e1!important;color:#0f172a!important}.mat-mdc-raised-button.mat-white:not([disabled]),.mat-mdc-unelevated-button.mat-white:not([disabled]){background-color:#fff!important;color:#000!important}.mat-mdc-raised-button.mat-success:not([disabled]),.mat-mdc-unelevated-button.mat-success:not([disabled]){background-color:#6ee7b7!important;color:#000!important}.mat-mdc-raised-button.mat-accent:not([disabled]),.mat-mdc-unelevated-button.mat-accent:not([disabled]){background-color:#475569!important;color:#fff!important}.mat-mdc-raised-button.mat-warn:not([disabled]),.mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#ef4444!important;color:#fef2f2!important}.mat-mdc-raised-button.mat-warn:not([disabled]):hover,.mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#dc2626!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]),.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#b91c1ccc!important;color:#ef4444!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]):hover,.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#b91c1c!important}.mat-mdc-raised-button.mat-info:not([disabled]),.mat-mdc-unelevated-button.mat-info:not([disabled]){background-color:#3b82f6!important;color:#fff!important}.mdc-button--raised{padding-left:1.5rem!important;padding-right:1.5rem!important}.mat-mdc-dialog-container .mdc-dialog__content{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{letter-spacing:inherit!important;line-height:inherit!important}.mat-mdc-dialog-title:before{display:none!important}.mat-mdc-tooltip .mdc-tooltip__surface{font-size:.875rem!important;padding:.5rem .75rem!important}.mat-expansion-panel{background-color:#fff!important;border-radius:.375rem!important;box-shadow:none!important;padding:.25rem!important}.mat-expansion-panel .mat-expansion-panel-header{background-color:#f8fafc!important;border:1px solid #f1f5f9!important;border-radius:.375rem!important;transition:padding .2s ease-in-out}.mat-expansion-panel .mat-expansion-panel-header:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded{background-color:#fff!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header .mat-content{justify-content:space-between}.mat-expansion-panel .mat-expansion-panel-header-description,.mat-expansion-panel .mat-expansion-panel-header-title{flex-basis:auto!important;margin:0!important}.mat-expansion-panel .mat-expansion-panel-header-description{flex-grow:0!important}.mat-expansion-panel .mat-expansion-panel-content{border-bottom:1px solid #f1f5f9!important;border-bottom-left-radius:.375rem!important;border-bottom-right-radius:.375rem!important;border-left:1px solid #f1f5f9!important;border-right:1px solid #f1f5f9!important}.mat-expansion-panel .mat-expansion-panel-content,.mat-expansion-panel .mat-expansion-panel-header{font-size:.875rem}.mat-expansion-panel .mat-expansion-panel-header-title,.mat-expansion-panel .mat-panel-title{font-size:1rem;font-weight:600}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{margin-right:1.75rem}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{background-color:#d4d4d8!important;border-radius:9999px!important;display:inline-block!important;height:1.5rem!important;padding:3px;width:1.5rem!important;fill:currentColor!important;color:#18181b!important}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator:after{border:none;content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='3.5'><path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z' /></svg>\");height:100%;padding:0;transform:rotate(0);width:100%}.mat-accordion .mat-expansion-panel .mat-expansion-panel-body{color:#0f172a!important;line-height:1.625!important;padding:1rem!important}.mat-tree{background-color:#fff!important;border-radius:.5rem!important;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a!important}.mat-tree .mat-tree-node{color:#0f172a;padding:.25rem}.mat-mdc-button,.mat-mdc-fab,.mat-mdc-icon-button,.mat-mdc-raised-button,.mat-mdc-unelevated-button{height:40px;line-height:1!important;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-small,.mat-mdc-fab.hpc-mat-button-small,.mat-mdc-icon-button.hpc-mat-button-small,.mat-mdc-raised-button.hpc-mat-button-small,.mat-mdc-unelevated-button.hpc-mat-button-small{height:32px;max-height:32px;min-height:32px}.mat-mdc-button.hpc-mat-button-medium,.mat-mdc-fab.hpc-mat-button-medium,.mat-mdc-icon-button.hpc-mat-button-medium,.mat-mdc-raised-button.hpc-mat-button-medium,.mat-mdc-unelevated-button.hpc-mat-button-medium{height:40px;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-large,.mat-mdc-fab.hpc-mat-button-large,.mat-mdc-icon-button.hpc-mat-button-large,.mat-mdc-raised-button.hpc-mat-button-large,.mat-mdc-unelevated-button.hpc-mat-button-large{height:48px;max-height:48px;min-height:48px;width:48px}.mat-mdc-button[disabled=true] .mat-icon,.mat-mdc-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-fab[disabled=true] .mat-icon,.mat-mdc-fab[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-icon-button[disabled=true] .mat-icon,.mat-mdc-icon-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-raised-button[disabled=true] .mat-icon,.mat-mdc-raised-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-unelevated-button[disabled=true] .mat-icon,.mat-mdc-unelevated-button[disabled=true] .mat-mdc-paginator-icon{opacity:.38!important}.mat-mdc-icon-button{border-radius:1rem!important}.mat-mdc-icon-button .mat-icon{color:#020617e6}.mat-mdc-icon-button.small{border-radius:.75rem!important;height:32px;max-height:32px;min-height:32px;padding:6px;width:32px}.mat-mdc-icon-button.small .mat-icon{font-size:20px;height:20px;line-height:20px;min-height:20px;min-width:20px;width:20px}.mat-mdc-icon-button.small .mat-icon svg{height:20px;width:20px}.mat-mdc-icon-button.large{height:44px;max-height:44px;min-height:44px;width:44px}.mat-mdc-icon-button.large .mat-icon{font-size:28px;height:28px;line-height:28px;min-height:28px;min-width:28px;width:28px}.mat-mdc-icon-button.large .mat-icon svg{height:28px;width:28px}.mat-mdc-icon-button.inverted .mat-icon{color:#f8fafccc}.mat-mdc-icon-button:hover{background-color:#02061726}.mat-mdc-icon-button:hover .mat-icon{color:#020617}.mat-mdc-icon-button:hover.danger{background-color:#fca6a633}.mat-mdc-icon-button:hover.danger .mat-icon{color:#dc2626}.mat-mdc-icon-button:hover.inverted{background-color:#f8fafc33}.mat-mdc-icon-button:hover.inverted .mat-icon{color:#f8fafc}.mat-mdc-button .mat-ripple-element{background-color:#0f172a1a!important}.mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#0206170d!important}.dark .mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#fafafa26!important}.mat-mdc-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon{margin-left:0!important}mat-icon,mat-icon.mat-primary{color:#18181b}.dark mat-icon,.dark mat-icon.mat-primary{color:#fafafa}.mdc-linear-progress__buffer-bar{background-color:#d4d4d8b3!important}.dark .mdc-linear-progress__buffer-bar{background-color:#52525bb3!important}.mdc-linear-progress__bar-inner{border-color:#3f8efe!important}.mat-mdc-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-fab .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-icon-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-raised-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-unelevated-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle{stroke:currentColor!important;animation-duration:6s}.mat-mdc-fab .mat-icon,.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-fab .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element{background-color:#0000001a!important}.mat-mdc-button:not([disabled=true]).mat-primary .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-primary .mat-icon{color:#020617!important}.mat-mdc-button:not([disabled=true]).mat-accent .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-accent .mat-icon{color:#475569!important}.mat-mdc-button:not([disabled=true]).mat-warn .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-warn .mat-icon{color:#fffbeb!important}.mdc-button .mdc-button__label{font-weight:600;white-space:nowrap}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:#fff!important;border-radius:0!important;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;padding:24px}@media (min-width:640px){.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:1.5rem!important;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}}.dark .mat-mdc-dialog-container .mdc-dialog__surface{background-color:#000!important;border:1px solid #3f3f46!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{color:#1e293b!important}.mat-icon{align-items:center;-webkit-appearance:none!important;display:inline-flex!important;font-size:24px;height:24px;justify-content:center;line-height:24px;width:24px}.mat-mdc-input-element::-moz-placeholder{color:#d4d4d8!important}.mat-mdc-input-element::placeholder{color:#d4d4d8!important;transition:none!important}.dark .mat-mdc-input-element::-moz-placeholder{color:#52525b!important}.dark .mat-mdc-input-element::placeholder{color:#52525b!important}.mat-mdc-input-element::-moz-placeholder{color:#606775!important;-moz-transition:none!important;transition:none!important}.mat-mdc-input-element::placeholder,.mat-mdc-select .mat-mdc-select-placeholder{color:#64748b}html{--color-prettylights-syntax-comment:#57606a;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#1f2328;--color-fg-muted:#656d76;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-success-fg:#1a7f37;--color-success-emphasis:#1f883d;--color-attention-fg:#9a6700;--color-attention-emphasis:#9a6700;--color-attention-subtle:#fff8c5;--color-danger-fg:#d1242f;--color-danger-emphasis:#cf222e;--color-done-fg:#8250df;--color-done-emphasis:#8250df}.markdown-body{color:var(--color-fg-default)}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{background-color:currentColor;content:\" \";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');width:16px}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold,600)}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:after,.markdown-body hr:before{content:\"\";display:table}.markdown-body hr:after{clear:both}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}.markdown-body [role=button]:focus-visible,.markdown-body a:focus-visible,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h2{border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}.markdown-body h2,.markdown-body h3{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h4,.markdown-body h5{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h5{font-size:.875em}.markdown-body h6{color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0;word-wrap:normal}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .mr-2{margin-right:var(--base-size-8,8px)!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{list-style-type:none;padding:0}.markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}.markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}.markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}.markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}.markdown-body div>ol:not([type]),.markdown-body ol[type=\"1\"]{list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table td,.markdown-body table th{border:1px solid var(--color-border-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{background-color:transparent;max-width:none;vertical-align:text-top}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid var(--color-border-default);display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:var(--color-canvas-subtle);border-radius:6px;color:var(--color-fg-default);font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code,.markdown-body pre tt{display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}.markdown-body [data-footnote-ref]:before{content:\"[\"}.markdown-body [data-footnote-ref]:after{content:\"]\"}.markdown-body .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;content:\"\";inset:-8px -8px -8px -24px;pointer-events:none;position:absolute}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-smw,.markdown-body .pl-v{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}.markdown-body .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}.markdown-body .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}.markdown-body .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}.markdown-body .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}.markdown-body .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}.markdown-body .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}.markdown-body .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}.markdown-body .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}.markdown-body .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}.markdown-body g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}.markdown-body g-emoji img{height:1em;width:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal,400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{display:block;height:24px;overflow:visible;width:auto;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.hover\\:bg-zinc-100:hover{--tw-bg-opacity:1!important;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))!important}.hover\\:bg-zinc-400\\/30:hover{background-color:#a1a1aa4d!important}.hover\\:text-blue-500:hover{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity,1))!important}.hover\\:text-zinc-900:hover{--tw-text-opacity:1!important;color:rgb(24 24 27/var(--tw-text-opacity,1))!important}@media (min-width:640px){.sm\\:h-\\[65vh\\]{height:65vh!important}.sm\\:flex-row{flex-direction:row!important}.sm\\:items-start{align-items:flex-start!important}.sm\\:items-center{align-items:center!important}.sm\\:justify-start{justify-content:flex-start!important}}@media (min-width:768px){.md\\:max-w-\\[80\\%\\]{max-width:80%!important}.md\\:flex-col{flex-direction:column!important}.md\\:gap-2{gap:.5rem!important}.md\\:gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.md\\:rounded-2xl{border-radius:1rem!important}.md\\:py-4{padding-bottom:1rem!important;padding-top:1rem!important}.md\\:pr-4{padding-right:1rem!important}.md\\:text-lg{font-size:1.125rem!important}.md\\:text-lg,.md\\:text-xl{line-height:1.75rem!important}.md\\:text-xl{font-size:1.25rem!important}.md\\:font-semibold{font-weight:600!important}}@media (min-width:1024px){.lg\\:max-w-screen-md{max-width:768px!important}}@media (min-width:1280px){.xl\\:max-w-screen-lg{max-width:1024px!important}}.dark\\:border:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-width:1px!important}.dark\\:border-black\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#00000080!important}.dark\\:border-red-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-border-opacity:1!important;border-color:rgb(127 29 29/var(--tw-border-opacity,1))!important}.dark\\:border-zinc-600\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b4d!important}.dark\\:border-zinc-600\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b80!important}.dark\\:border-zinc-700\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4666!important}.dark\\:border-zinc-700\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4680!important}.dark\\:bg-black:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))!important}.dark\\:bg-black\\/20:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#0003!important}.dark\\:bg-black\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#000000b3!important}.dark\\:bg-red-600\\/10:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#dc26261a!important}.dark\\:bg-red-950\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#450a0acc!important}.dark\\:bg-zinc-700:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))!important}.dark\\:bg-zinc-700\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#3f3f464d!important}.dark\\:bg-zinc-800\\/60:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#27272a99!important}.dark\\:bg-zinc-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))!important}.dark\\:text-blue-100:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(219 234 254/var(--tw-text-opacity,1))!important}.dark\\:text-green-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#4ade80cc!important}.dark\\:text-red-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(248 113 113/var(--tw-text-opacity,1))!important}.dark\\:text-red-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f87272cc!important}.dark\\:text-zinc-100\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5b3!important}.dark\\:text-zinc-100\\/90:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5e6!important}.dark\\:text-zinc-300:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(212 212 216/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-300\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d84d!important}.dark\\:text-zinc-300\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d866!important}.dark\\:text-zinc-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(161 161 170/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:bg-zinc-800:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))!important}.dark\\:hover\\:text-blue-400:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(96 165 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:text-zinc-50:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}\n/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "ngmodule", type: AiTranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: ChatScrollDirective, selector: "[aiChatScroll]" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LoggerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: MessageInputComponent, selector: "ai-message-input", inputs: ["startConversation"] }, { kind: "component", type: ThreadComponent, selector: "ai-thread" }], encapsulation: i0.ViewEncapsulation.None });
3384
3374
  }
3385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiChatDialogComponent, decorators: [{
3375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiChatDialogComponent, decorators: [{
3386
3376
  type: Component,
3387
3377
  args: [{ imports: [
3388
3378
  AiTranslocoModule,
@@ -3399,22 +3389,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
3399
3389
  MatProgressSpinnerModule,
3400
3390
  MessageInputComponent,
3401
3391
  ThreadComponent,
3402
- ], providers: [ChatService, ContextService, WebsocketService], template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n @if (confirm) {\n <div class=\"flex w-full justify-center px-6 pt-8\">\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"close('confirmed')\"\n class=\"w-full sm:w-auto\"\n >\n {{ t('solve') }}\n </button>\n </div>\n }\n</div>\n" }]
3392
+ ], providers: [ChatService, ContextService, WebsocketService], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n", styles: ["*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{inset:0!important}.right-4{right:1rem!important}.top-4{top:1rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mt-2{margin-top:.5rem!important}.line-clamp-3{display:-webkit-box!important;overflow:hidden!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important}.flex{display:flex!important}.contents{display:contents!important}.hidden{display:none!important}.h-0\\.5{height:.125rem!important}.h-10{height:2.5rem!important}.h-full{height:100%!important}.w-10{width:2.5rem!important}.w-\\[50rem\\]{width:50rem!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.min-w-40{min-width:10rem!important}.min-w-48{min-width:12rem!important}.min-w-80{min-width:20rem!important}.max-w-80{max-width:20rem!important}.max-w-\\[85\\%\\]{max-width:85%!important}.max-w-\\[90\\%\\]{max-width:90%!important}.max-w-full{max-width:100%!important}.max-w-md{max-width:28rem!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-pointer{cursor:pointer!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.gap-1{gap:.25rem!important}.gap-x-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.gap-x-3{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.gap-y-1{row-gap:.25rem!important}.gap-y-2{row-gap:.5rem!important}.self-end{align-self:flex-end!important}.self-center{align-self:center!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.rounded-2xl{border-radius:1rem!important}.rounded-lg{border-radius:.5rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity,1))!important}.border-zinc-300\\/40{border-color:#d4d4d866!important}.border-zinc-300\\/50{border-color:#d4d4d880!important}.border-zinc-400\\/30{border-color:#a1a1aa4d!important}.border-zinc-400\\/40{border-color:#a1a1aa66!important}.border-zinc-400\\/50{border-color:#a1a1aa80!important}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity,1))!important}.bg-blue-600,.bg-gray-600{--tw-bg-opacity:1!important}.bg-gray-600{background-color:rgb(75 85 99/var(--tw-bg-opacity,1))!important}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity,1))!important}.bg-green-600,.bg-red-100{--tw-bg-opacity:1!important}.bg-red-100{background-color:rgb(254 226 226/var(--tw-bg-opacity,1))!important}.bg-red-400\\/10{background-color:#f872721a!important}.bg-red-600{background-color:rgb(220 38 38/var(--tw-bg-opacity,1))!important}.bg-red-600,.bg-white{--tw-bg-opacity:1!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.bg-yellow-600{--tw-bg-opacity:1!important;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))!important}.bg-zinc-100\\/60{background-color:#f4f4f599!important}.bg-zinc-200{--tw-bg-opacity:1!important;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))!important}.bg-zinc-300\\/20{background-color:#d4d4d833!important}.bg-zinc-300\\/30{background-color:#d4d4d84d!important}.bg-zinc-300\\/40{background-color:#d4d4d866!important}.bg-zinc-400\\/20{background-color:#a1a1aa33!important}.bg-zinc-50{--tw-bg-opacity:1!important;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))!important}.p-2{padding:.5rem!important}.p-4{padding:1rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-4{padding-bottom:1rem!important;padding-top:1rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:.75rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.pr-10{padding-right:2.5rem!important}.pr-2{padding-right:.5rem!important}.pr-4{padding-right:1rem!important}.pr-8{padding-right:2rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-semibold{font-weight:600!important}.lowercase{text-transform:lowercase!important}.text-amber-600{--tw-text-opacity:1!important;color:rgb(217 119 6/var(--tw-text-opacity,1))!important}.text-blue-600{--tw-text-opacity:1!important;color:rgb(37 99 235/var(--tw-text-opacity,1))!important}.text-blue-700{--tw-text-opacity:1!important;color:rgb(29 78 216/var(--tw-text-opacity,1))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity,1))!important}.text-green-500\\/80{color:#22c55ecc!important}.text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity,1))!important}.text-red-500\\/80{color:#ef4444cc!important}.text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity,1))!important}.text-red-600\\/80{color:#dc2626cc!important}.text-red-700{--tw-text-opacity:1!important;color:rgb(185 28 28/var(--tw-text-opacity,1))!important}.text-zinc-500{--tw-text-opacity:1!important;color:rgb(113 113 122/var(--tw-text-opacity,1))!important}.text-zinc-700\\/50{color:#3f3f4680!important}.text-zinc-700\\/60{color:#3f3f4699!important}.text-zinc-800{--tw-text-opacity:1!important;color:rgb(39 39 42/var(--tw-text-opacity,1))!important}.text-zinc-800\\/90{color:#27272ae6!important}.text-zinc-900\\/70{color:#18181bb3!important}.text-zinc-950{--tw-text-opacity:1!important;color:rgb(9 9 11/var(--tw-text-opacity,1))!important}.underline{text-decoration-line:underline!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)!important}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important;backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)!important}:root{--black:#000;--white:#fff;--white-rgb:255,255,255;--blue-slate-950-rgb:2,6,23;--blue-slate-900-rgb:15,23,42;--blue-slate-800-rgb:30,41,59;--blue-slate-700-rgb:51,65,85;--blue-slate-400-rgb:148,163,184;--blue-slate-300-rgb:203,213,225;--blue-slate-100-rgb:241,245,249;--blue-slate-050-rgb:248,250,252;--gray-800-rgb:31,41,55;--gray-700-rgb:55,65,81;--gray-600-rgb:75,85,99;--gray-200-rgb:229,231,235;--zinc-950-rgb:9,9,11;--zinc-900-rgb:24,24,27;--zinc-800-rgb:39,39,42;--zinc-700-rgb:63,63,70;--zinc-600-rgb:82,82,91;--zinc-500-rgb:113,113,122;--zinc-400-rgb:161,161,170;--zinc-300-rgb:212,212,216;--zinc-200-rgb:228,228,231;--zinc-100-rgb:244,244,245;--zinc-050-rgb:250,250,250;--red-700-rgb:185,28,28;--red-600-rgb:220,38,38;--red-500-rgb:239,68,68;--red-400-rgb:248,113,113;--red-300-rgb:252,165,165;--blue-gray-900-10:rgba(15,23,42,.1);--blue-gray-900-20:rgba(15,23,42,.2);--blue-gray-900:#0f172a;--blue-gray-800:#1e293b;--blue-gray-800-rgb:30,41,59;--blue-gray-700:#334155;--blue-gray-600:#475569;--blue-gray-500:#64748b;--blue-gray-400:#94a3b8;--blue-gray-300:#cbd5e1;--blue-gray-200:#e2e8f0;--blue-gray-100:#f1f5f9;--blue-gray-50:#f8fafc;--blue-gray-light-2:#141b2e;--blue-gray-light-4:#182032;--blue-gray-light-8:#21293b;--blue-gray-light-8-rgb:33,41,59;--blue-gray-light-16:#333b4b;--blue-gray-light-32:#575e6c;--blue-gray-light-64:#a0a5ae;--blue-gray-light-100:#f1f5f9;--blue-gray-dark-2:#e8ecf1;--blue-gray-dark-4:#e8ecf1;--blue-gray-dark-8:#dfe3e8;--blue-gray-dark-16:#cdd1d8;--blue-gray-dark-32:#a9aeb7;--blue-gray-dark-64:#606775;--blue-gray-dark-100:#0f172a;--blue-700:#1d4ed8;--blue-50:#eff6ff;--green-500:#10b981;--green-50:#ecfdf5;--yellow-50:#fffbeb;--yellow-500:#d97706;--red-700:#b91c1c;--red-50:#fef2f2;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--teal-500:#14b8a6;--teal-600:#0d9488;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--hp-light-blue:#13cae6;--hp-gradient-light:#3f8efe;--hp-gradient-highlight:#3ffbda;--hp-gradient-dark:#2b64ff;--font-family:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-chip-container-height:30px;--mdc-chip-container-shape-radius:12px;--mdc-fab-container-shape:12px;--mdc-icon-button-icon-size:24px;--mdc-icon-button-state-layer-size:40px;--mdc-icon-button-icon-color:currentColor;--mdc-linear-progress-active-indicator-color:#020617;--mdc-linear-progress-active-indicator-height:10px;--mdc-linear-progress-track-color:#f4f4f5;--mdc-linear-progress-track-height:10px;--mdc-linear-progress-track-shape:10px;--mdc-plain-tooltip-container-shape:8px;--mdc-protected-button-container-shape:9999px;--mdc-protected-button-keep-touch-target:false;--mat-protected-button-horizontal-padding:24px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-dialog-actions-padding:16px;--mat-dialog-actions-alignment:normal;--mdc-dialog-container-shape:16px;--mdc-dialog-supporting-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-outlined-button-container-height:40px;--mdc-outlined-button-container-shape:9999px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:24px;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-text-button-container-height:40px;--mdc-text-button-container-shape:9999px;--mat-text-button-horizontal-padding:24px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mdc-text-button-keep-touch-target:false;--mat-text-button-with-icon-horizontal-padding:8px;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-menu-container-shape:16px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px;--mat-stepper-container-color:transparent;--mdc-switch-track-height:28px;--mat-switch-track-outline-color:#52525b;--mat-switch-label-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mat-switch-label-text-color:#09090b;--mat-switch-label-text-tracking:0;--mat-switch-label-text-weight:600;--mdc-switch-unselected-handle-color:#52525b;--mdc-switch-unselected-track-color:#d4d4d8;--mdc-switch-unselected-focus-track-color:#cbd5e1;--mdc-switch-unselected-hover-track-color:#cbd5e1;--mdc-switch-unselected-pressed-track-color:#cbd5e1;--mdc-switch-selected-track-color:#1e293b;--mdc-switch-selected-focus-track-color:#334155;--mdc-switch-selected-hover-track-color:#334155;--mdc-switch-selected-pressed-track-color:#334155;--mat-switch-selected-track-outline-color:#020617;--mdc-switch-selected-handle-color:#cbd5e1;--mdc-switch-selected-focus-handle-color:#3ffbda;--mdc-switch-selected-hover-handle-color:#3ffbda;--mdc-switch-selected-pressed-handle-color:#3ffbda;--mdc-switch-selected-focus-state-layer-color:#3ffbda;--mdc-switch-selected-hover-state-layer-color:#3ffbda;--mdc-switch-selected-pressed-state-layer-color:#3ffbda;--mdc-switch-unselected-focus-state-layer-color:#020617;--mdc-switch-unselected-hover-state-layer-color:#020617;--mdc-switch-unselected-pressed-state-layer-color:#020617;--mdc-switch-selected-icon-color:#020617;--mat-switch-with-icon-handle-size:22px;--hot-toast-border-radius:16px;--hot-toast-padding:14px 20px;--hot-toast-info-icon-background-color:#1d4ed8;--hot-toast-checkmark-icon-background-color:#10b981;--hot-toast-warning-icon-background-color:#d97706;--hot-toast-error-icon-background-color:#b91c1c;--color-primary:#020617;--color-primary-inverted:#f8fafc;--color-on-primary:#f8fafc;--color-danger:#fca5a5;--color-on-danger:#dc2626;--menu_container-color:#020617;--menu_text-color:#f8fafc;--color-surface:#fff;--color-on-surface:#1e293b;--color-on-surface-lighter:#64748b;--color-base:#f1f5f9;--color-base-900:#f1f5f9;--color-base-800:#e2e8f0;--color-base-700:#cbd5e1;--color-base-600:#94a3b8;--color-base-500:#64748b;--color-base-400:#475569;--color-base-300:#334155;--color-base-200:#1e293b;--color-base-100:#0f172a;--color-border-around-base:#e2e8f0;--color-alternate:#f1f5f9;--color-alternate-lighter:#f8fafc;--color-active:#e2e8f0;--color-active-lighter:#f1f5f9;--color-on-active:#0f172a;--color-interactive:#cbd5e1;--color-on-interactive:#0f172a;--color-disabled:#fff;--color-highlight:#3f8efe;--color-highlight-hover:#06b6d4;--color-hint:#606775;--color-info:#eff6ff;--color-on-info:#1d4ed8;--color-success:#ecfdf5;--color-on-success:#10b981;--color-warning:#fffbeb;--color-on-warning:#d97706;--color-error:#fef2f2;--color-on-error:#b91c1c;--color-bg-primary:#fff;--color-bg-secondary:rgba(239,254,252,.3);--color-hover:#e2e8f0;--card_background-color:#fff;--card_background-color-rgb:255,255,255;--dialog_background-color:#fff;--query-sender_background-color:#f5f5ef;--query-sender_text-color:#000;--sidebar_text-color:#fff;--sidebar_border-color:#1e293b;--sidebar-title_font-size:1.7rem;--sidebar-title-letter-spacing:-1px;--sidebar-button_background-color:transparent;--sidebar-button_text-color:#94a3b8;--sidebar-button_font-weight:500;--sidebar-button_active_text-color:#f8fafc;--radio_background-color:#e2e8f0;--radio_border-color:#334155;--radio_active_background-color:#cbd5e1;--radio_active_border-color:#0f172a;--mdc-radio-selected-icon-color:#0f172a;--mdc-radio-selected-pressed-icon-color:#3f8efe;--mdc-radio-selected-hover-icon-color:#06b6d4;--mdc-radio-unselected-icon-color:#0f172a;--mdc-radio-unselected-pressed-icon-color:#3f8efe;--mdc-radio-unselected-hover-icon-color:#06b6d4;--checkbox_background-color:#f1f5f9;--mdc-checkbox-state-layer-size:36px;--mdc-checkbox-selected-icon-color:#0f172a;--mdc-checkbox-selected-hover-icon-color:#0f172a;--mdc-checkbox-selected-pressed-icon-color:#0f172a;--mdc-checkbox-selected-focus-icon-color:#0f172a;--mdc-checkbox-unselected-icon-color:#475569;--mdc-checkbox-unselected-hover-icon-color:#0f172a;--mdc-checkbox-unselected-pressed-icon-color:#0f172a;--mdc-checkbox-unselected-focus-icon-color:#0f172a;--mdc-checkbox-selected-checkmark-color:#f1f5f9;--mat-mdc-button-persistent-ripple-color:#0f172a;--mat-mdc-button-ripple-color:rgba(15,23,42,.2);--toggle-bar_color:#cbd5e1;--toggle-bar_active_color:#94a3b8;--toggle-bar-thumb_color:#64748b;--toggle-bar-thumb_active_color:#0f172a;--toggle-button_text-color:#000;--toggle-button_background-color:#f8fafc;--toggle-button_hover_background-color:#e2e8f0;--toggle-button_checked_text-color:#fff;--toggle-button_checked_background-color:#10b981;--tag_background-color:#e2e8f0;--tag_text-color:#475569;--tag_border-color:#e2e8f0;--tag_hover_background-color:#475569;--tag_hover_text-color:#e2e8f0;--tag_hover_border-color:#475569;--tag_disabled_background-color:#f8fafc;--tag_disabled_text-color:#cbd5e1;--tag_disabled_border-color:#f8fafc;--tag_system_background-color:#a5f3fc;--tag_border-radius:.75rem;--input_text-color:#1e293b;--input_border-color:#cbd5e1;--input_placeholder-color:#64748b;--input_xfix-color:#64748b;--input_caret-color:#1e293b;--input_border-radius:.5rem;--input_active_border-color:#334155;--form-field-label_text-color:#f1f5f9;--form-field-required_color:#b91c1c;--color-button-primary:#475569;--color-button-primary-text:#fff;--color-button-secondary:#cbd5e1;--color-button-secondary-text:#0f172a;--color-disabled-button:hsla(0,0%,100%,.5);--color-text-primary:#0f172a;--color-text-secondary:#0f172a;--color-text-accent:red;--color-text-disabled:#606775;--color-text-disabled-button:#606775;--color-text-hint:#606775;--color-dividers:#cbd5e1;--color-icons:#0f172a;--light-primary-text:#fff;--dark-primary-text:#000;--primary-color:#fff;--primary-lighter-color:#b3b6e8;--primary-darker-color:#010798;--text-primary-color:#0f172a;--text-primary-lighter-color:#000;--text-primary-darker-color:#fff;--accent-color:#475569;--accent-lighter-color:#94a3b8;--accent-darker-color:#1e293b;--text-accent-color:#fff;--text-accent-lighter-color:#000;--text-accent-darker-color:#fff;--white-color:#fff;--text-white-color:#000;--success-color:#6ee7b7;--text-success-color:#000;--warn-color:#be123c;--warn-lighter-color:#fef2f2;--warn-darker-color:#b91c1c;--text-warn-color:#fff;--text-warn-lighter-color:#000;--text-warn-darker-color:#fff;--text-primary:#0f172a;--form-filed-bg:#fff;--fab-button-bg:#fff;--fab-button-text:#0f172a;--fab-button-disabled-bg:hsla(0,0%,100%,.6);--fab-button-disabled-text:rgba(0,0,0,.3);--button-text-color:#0f172a;--button-bg-color:#cbd5e1;--button-hover-color:#94a3b8;--mdc-filled-button-label-text-color:#0f172a;--mdc-filled-button-container-color:#cbd5e1;--mdc-protected-button-label-text-color:#0f172a;--mdc-protected-button-container-color:#cbd5e1}html{--hp-dark-blue:#131d56;--hp-light-blue:#13cae6;--hp-gradient-light:63,142,254;--hp-gradient-highlight:63,251,218;--hp-gradient-dark:43,100,255;--hp-color-text-highlight:19,202,230;--hpc-highlight-color-light:6 182 212;--hpc-highlight-color-dark:19 202 230;--hpc-highlight-color:6 182 212;--mdc-chip-elevated-container-color:#e2e8f0;--mdc-plain-tooltip-container-color:#020617;--mdc-plain-tooltip-supporting-text-color:#fff;--mat-menu-container-color:hsla(0,0%,100%,.5);--mat-select-panel-background-color:hsla(0,0%,100%,.4);--mat-paginator-container-background-color:#fafafa;--mat-paginator-container-border-color:#f4f4f5;--mat-paginator-container-border-top-color:#e4e4e7;--mat-sidenav-container-divider-color:#e2e8f0;--mat-stepper-line-color:#f1f5f9;--sidebar_background-color:#020617;--sidebar-submenu_hover_background-color:hsla(240,4%,46%,.7);--scrollbar-thumb-color:rgba(2,6,23,.25);--scrollbar-track-color:rgba(2,6,23,.1)}input,textarea{background:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:#d4d4d8}input::placeholder,textarea::placeholder{color:#d4d4d8}.dark input::-moz-placeholder,.dark textarea::-moz-placeholder{color:#52525b}.dark input::placeholder,.dark textarea::placeholder{color:#52525b}input::-moz-placeholder,textarea::-moz-placeholder{color:#606775}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#606775}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#606775}input:-webkit-autofill,input:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}input:-webkit-autofill:active,input:-webkit-autofill:focus,textarea:-webkit-autofill:active,textarea:-webkit-autofill:focus{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}[data-autocompleted]{background-color:transparent!important}input:focus,textarea:focus{box-shadow:none!important;outline:none!important}.mdc-elevation--z4{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}.mat-mdc-raised-button.mat-primary{background-color:#020617!important;color:#f8fafc!important;font-weight:600!important;line-height:1.375!important;padding-left:1rem!important;padding-right:1rem!important}.dark .mat-mdc-raised-button.mat-primary{background-color:#e4e4e7!important;color:#020617!important}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.05}.mat-mdc-outlined-button.mat-primary{background:linear-gradient(to bottom right,#3ffbdae6,#2b64ffe6)!important;border:none!important;color:#fff!important;font-weight:600!important}.mat-mdc-outlined-button.mat-primary:hover{background:linear-gradient(to bottom right,#3ffbda,#2b64ff)!important}.mat-mdc-outlined-button:not([disabled=true]){border-color:#27272a!important}.dark .mat-mdc-outlined-button:not([disabled=true]){border-color:#d4d4d8!important}.mat-mdc-outlined-button[disabled=true]{border-color:#e5e7eb!important}.dark .mat-mdc-outlined-button[disabled=true]{border-color:#4b5563!important}.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-raised-button:not(.mat-primary,.mat-accent),.mat-mdc-raised-button:not(.mat-primary,.mat-accent):hover,.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent),.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent):hover{background-color:#cbd5e1!important;color:#0f172a!important}.mat-mdc-raised-button.mat-white:not([disabled]),.mat-mdc-unelevated-button.mat-white:not([disabled]){background-color:#fff!important;color:#000!important}.mat-mdc-raised-button.mat-success:not([disabled]),.mat-mdc-unelevated-button.mat-success:not([disabled]){background-color:#6ee7b7!important;color:#000!important}.mat-mdc-raised-button.mat-accent:not([disabled]),.mat-mdc-unelevated-button.mat-accent:not([disabled]){background-color:#475569!important;color:#fff!important}.mat-mdc-raised-button.mat-warn:not([disabled]),.mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#ef4444!important;color:#fef2f2!important}.mat-mdc-raised-button.mat-warn:not([disabled]):hover,.mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#dc2626!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]),.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#b91c1ccc!important;color:#ef4444!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]):hover,.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#b91c1c!important}.mat-mdc-raised-button.mat-info:not([disabled]),.mat-mdc-unelevated-button.mat-info:not([disabled]){background-color:#3b82f6!important;color:#fff!important}.mdc-button--raised{padding-left:1.5rem!important;padding-right:1.5rem!important}.mat-mdc-dialog-container .mdc-dialog__content{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{letter-spacing:inherit!important;line-height:inherit!important}.mat-mdc-dialog-title:before{display:none!important}.mat-mdc-tooltip .mdc-tooltip__surface{font-size:.875rem!important;padding:.5rem .75rem!important}.mat-expansion-panel{background-color:#fff!important;border-radius:.375rem!important;box-shadow:none!important;padding:.25rem!important}.mat-expansion-panel .mat-expansion-panel-header{background-color:#f8fafc!important;border:1px solid #f1f5f9!important;border-radius:.375rem!important;transition:padding .2s ease-in-out}.mat-expansion-panel .mat-expansion-panel-header:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded{background-color:#fff!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header .mat-content{justify-content:space-between}.mat-expansion-panel .mat-expansion-panel-header-description,.mat-expansion-panel .mat-expansion-panel-header-title{flex-basis:auto!important;margin:0!important}.mat-expansion-panel .mat-expansion-panel-header-description{flex-grow:0!important}.mat-expansion-panel .mat-expansion-panel-content{border-bottom:1px solid #f1f5f9!important;border-bottom-left-radius:.375rem!important;border-bottom-right-radius:.375rem!important;border-left:1px solid #f1f5f9!important;border-right:1px solid #f1f5f9!important}.mat-expansion-panel .mat-expansion-panel-content,.mat-expansion-panel .mat-expansion-panel-header{font-size:.875rem}.mat-expansion-panel .mat-expansion-panel-header-title,.mat-expansion-panel .mat-panel-title{font-size:1rem;font-weight:600}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{margin-right:1.75rem}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{background-color:#d4d4d8!important;border-radius:9999px!important;display:inline-block!important;height:1.5rem!important;padding:3px;width:1.5rem!important;fill:currentColor!important;color:#18181b!important}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator:after{border:none;content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='3.5'><path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z' /></svg>\");height:100%;padding:0;transform:rotate(0);width:100%}.mat-accordion .mat-expansion-panel .mat-expansion-panel-body{color:#0f172a!important;line-height:1.625!important;padding:1rem!important}.mat-tree{background-color:#fff!important;border-radius:.5rem!important;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a!important}.mat-tree .mat-tree-node{color:#0f172a;padding:.25rem}.mat-mdc-button,.mat-mdc-fab,.mat-mdc-icon-button,.mat-mdc-raised-button,.mat-mdc-unelevated-button{height:40px;line-height:1!important;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-small,.mat-mdc-fab.hpc-mat-button-small,.mat-mdc-icon-button.hpc-mat-button-small,.mat-mdc-raised-button.hpc-mat-button-small,.mat-mdc-unelevated-button.hpc-mat-button-small{height:32px;max-height:32px;min-height:32px}.mat-mdc-button.hpc-mat-button-medium,.mat-mdc-fab.hpc-mat-button-medium,.mat-mdc-icon-button.hpc-mat-button-medium,.mat-mdc-raised-button.hpc-mat-button-medium,.mat-mdc-unelevated-button.hpc-mat-button-medium{height:40px;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-large,.mat-mdc-fab.hpc-mat-button-large,.mat-mdc-icon-button.hpc-mat-button-large,.mat-mdc-raised-button.hpc-mat-button-large,.mat-mdc-unelevated-button.hpc-mat-button-large{height:48px;max-height:48px;min-height:48px;width:48px}.mat-mdc-button[disabled=true] .mat-icon,.mat-mdc-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-fab[disabled=true] .mat-icon,.mat-mdc-fab[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-icon-button[disabled=true] .mat-icon,.mat-mdc-icon-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-raised-button[disabled=true] .mat-icon,.mat-mdc-raised-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-unelevated-button[disabled=true] .mat-icon,.mat-mdc-unelevated-button[disabled=true] .mat-mdc-paginator-icon{opacity:.38!important}.mat-mdc-icon-button{border-radius:1rem!important}.mat-mdc-icon-button .mat-icon{color:#020617e6}.mat-mdc-icon-button.small{border-radius:.75rem!important;height:32px;max-height:32px;min-height:32px;padding:6px;width:32px}.mat-mdc-icon-button.small .mat-icon{font-size:20px;height:20px;line-height:20px;min-height:20px;min-width:20px;width:20px}.mat-mdc-icon-button.small .mat-icon svg{height:20px;width:20px}.mat-mdc-icon-button.large{height:44px;max-height:44px;min-height:44px;width:44px}.mat-mdc-icon-button.large .mat-icon{font-size:28px;height:28px;line-height:28px;min-height:28px;min-width:28px;width:28px}.mat-mdc-icon-button.large .mat-icon svg{height:28px;width:28px}.mat-mdc-icon-button.inverted .mat-icon{color:#f8fafccc}.mat-mdc-icon-button:hover{background-color:#02061726}.mat-mdc-icon-button:hover .mat-icon{color:#020617}.mat-mdc-icon-button:hover.danger{background-color:#fca6a633}.mat-mdc-icon-button:hover.danger .mat-icon{color:#dc2626}.mat-mdc-icon-button:hover.inverted{background-color:#f8fafc33}.mat-mdc-icon-button:hover.inverted .mat-icon{color:#f8fafc}.mat-mdc-button .mat-ripple-element{background-color:#0f172a1a!important}.mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#0206170d!important}.dark .mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#fafafa26!important}.mat-mdc-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon{margin-left:0!important}mat-icon,mat-icon.mat-primary{color:#18181b}.dark mat-icon,.dark mat-icon.mat-primary{color:#fafafa}.mdc-linear-progress__buffer-bar{background-color:#d4d4d8b3!important}.dark .mdc-linear-progress__buffer-bar{background-color:#52525bb3!important}.mdc-linear-progress__bar-inner{border-color:#3f8efe!important}.mat-mdc-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-fab .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-icon-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-raised-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-unelevated-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle{stroke:currentColor!important;animation-duration:6s}.mat-mdc-fab .mat-icon,.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-fab .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element{background-color:#0000001a!important}.mat-mdc-button:not([disabled=true]).mat-primary .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-primary .mat-icon{color:#020617!important}.mat-mdc-button:not([disabled=true]).mat-accent .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-accent .mat-icon{color:#475569!important}.mat-mdc-button:not([disabled=true]).mat-warn .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-warn .mat-icon{color:#fffbeb!important}.mdc-button .mdc-button__label{font-weight:600;white-space:nowrap}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:#fff!important;border-radius:0!important;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;padding:24px}@media (min-width:640px){.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:1.5rem!important;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}}.dark .mat-mdc-dialog-container .mdc-dialog__surface{background-color:#000!important;border:1px solid #3f3f46!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{color:#1e293b!important}.mat-icon{align-items:center;-webkit-appearance:none!important;display:inline-flex!important;font-size:24px;height:24px;justify-content:center;line-height:24px;width:24px}.mat-mdc-input-element::-moz-placeholder{color:#d4d4d8!important}.mat-mdc-input-element::placeholder{color:#d4d4d8!important;transition:none!important}.dark .mat-mdc-input-element::-moz-placeholder{color:#52525b!important}.dark .mat-mdc-input-element::placeholder{color:#52525b!important}.mat-mdc-input-element::-moz-placeholder{color:#606775!important;-moz-transition:none!important;transition:none!important}.mat-mdc-input-element::placeholder,.mat-mdc-select .mat-mdc-select-placeholder{color:#64748b}html{--color-prettylights-syntax-comment:#57606a;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#1f2328;--color-fg-muted:#656d76;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-success-fg:#1a7f37;--color-success-emphasis:#1f883d;--color-attention-fg:#9a6700;--color-attention-emphasis:#9a6700;--color-attention-subtle:#fff8c5;--color-danger-fg:#d1242f;--color-danger-emphasis:#cf222e;--color-done-fg:#8250df;--color-done-emphasis:#8250df}.markdown-body{color:var(--color-fg-default)}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{background-color:currentColor;content:\" \";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');width:16px}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold,600)}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:after,.markdown-body hr:before{content:\"\";display:table}.markdown-body hr:after{clear:both}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}.markdown-body [role=button]:focus-visible,.markdown-body a:focus-visible,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h2{border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}.markdown-body h2,.markdown-body h3{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h4,.markdown-body h5{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h5{font-size:.875em}.markdown-body h6{color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0;word-wrap:normal}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .mr-2{margin-right:var(--base-size-8,8px)!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{list-style-type:none;padding:0}.markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}.markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}.markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}.markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}.markdown-body div>ol:not([type]),.markdown-body ol[type=\"1\"]{list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table td,.markdown-body table th{border:1px solid var(--color-border-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{background-color:transparent;max-width:none;vertical-align:text-top}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid var(--color-border-default);display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:var(--color-canvas-subtle);border-radius:6px;color:var(--color-fg-default);font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code,.markdown-body pre tt{display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}.markdown-body [data-footnote-ref]:before{content:\"[\"}.markdown-body [data-footnote-ref]:after{content:\"]\"}.markdown-body .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;content:\"\";inset:-8px -8px -8px -24px;pointer-events:none;position:absolute}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-smw,.markdown-body .pl-v{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}.markdown-body .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}.markdown-body .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}.markdown-body .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}.markdown-body .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}.markdown-body .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}.markdown-body .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}.markdown-body .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}.markdown-body .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}.markdown-body .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}.markdown-body g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}.markdown-body g-emoji img{height:1em;width:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal,400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{display:block;height:24px;overflow:visible;width:auto;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.hover\\:bg-zinc-100:hover{--tw-bg-opacity:1!important;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))!important}.hover\\:bg-zinc-400\\/30:hover{background-color:#a1a1aa4d!important}.hover\\:text-blue-500:hover{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity,1))!important}.hover\\:text-zinc-900:hover{--tw-text-opacity:1!important;color:rgb(24 24 27/var(--tw-text-opacity,1))!important}@media (min-width:640px){.sm\\:h-\\[65vh\\]{height:65vh!important}.sm\\:flex-row{flex-direction:row!important}.sm\\:items-start{align-items:flex-start!important}.sm\\:items-center{align-items:center!important}.sm\\:justify-start{justify-content:flex-start!important}}@media (min-width:768px){.md\\:max-w-\\[80\\%\\]{max-width:80%!important}.md\\:flex-col{flex-direction:column!important}.md\\:gap-2{gap:.5rem!important}.md\\:gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.md\\:rounded-2xl{border-radius:1rem!important}.md\\:py-4{padding-bottom:1rem!important;padding-top:1rem!important}.md\\:pr-4{padding-right:1rem!important}.md\\:text-lg{font-size:1.125rem!important}.md\\:text-lg,.md\\:text-xl{line-height:1.75rem!important}.md\\:text-xl{font-size:1.25rem!important}.md\\:font-semibold{font-weight:600!important}}@media (min-width:1024px){.lg\\:max-w-screen-md{max-width:768px!important}}@media (min-width:1280px){.xl\\:max-w-screen-lg{max-width:1024px!important}}.dark\\:border:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-width:1px!important}.dark\\:border-black\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#00000080!important}.dark\\:border-red-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-border-opacity:1!important;border-color:rgb(127 29 29/var(--tw-border-opacity,1))!important}.dark\\:border-zinc-600\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b4d!important}.dark\\:border-zinc-600\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b80!important}.dark\\:border-zinc-700\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4666!important}.dark\\:border-zinc-700\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4680!important}.dark\\:bg-black:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))!important}.dark\\:bg-black\\/20:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#0003!important}.dark\\:bg-black\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#000000b3!important}.dark\\:bg-red-600\\/10:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#dc26261a!important}.dark\\:bg-red-950\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#450a0acc!important}.dark\\:bg-zinc-700:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))!important}.dark\\:bg-zinc-700\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#3f3f464d!important}.dark\\:bg-zinc-800\\/60:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#27272a99!important}.dark\\:bg-zinc-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))!important}.dark\\:text-blue-100:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(219 234 254/var(--tw-text-opacity,1))!important}.dark\\:text-green-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#4ade80cc!important}.dark\\:text-red-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(248 113 113/var(--tw-text-opacity,1))!important}.dark\\:text-red-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f87272cc!important}.dark\\:text-zinc-100\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5b3!important}.dark\\:text-zinc-100\\/90:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5e6!important}.dark\\:text-zinc-300:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(212 212 216/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-300\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d84d!important}.dark\\:text-zinc-300\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d866!important}.dark\\:text-zinc-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(161 161 170/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:bg-zinc-800:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))!important}.dark\\:hover\\:text-blue-400:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(96 165 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:text-zinc-50:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}\n/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/\n"] }]
3403
3393
  }], ctorParameters: () => [{ type: undefined, decorators: [{
3404
3394
  type: Inject,
3405
3395
  args: [MAT_DIALOG_DATA]
3406
3396
  }] }, { type: i3$1.MatDialogRef }, { type: i2$2.MatIconRegistry }, { type: i3$3.DomSanitizer }] });
3407
3397
 
3408
3398
  class AiModule {
3409
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3410
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: AiModule, imports: [CommonModule, i1$1.LoggerModule], exports: [AiTranslocoModule] });
3411
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiModule, providers: [ApiService, ChatService, ContextService, WebsocketService], imports: [CommonModule,
3399
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3400
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: AiModule, imports: [CommonModule, i1$1.LoggerModule], exports: [AiTranslocoModule] });
3401
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, providers: [ApiService, ChatService, ContextService, WebsocketService], imports: [CommonModule,
3412
3402
  LoggerModule.forRoot({
3413
3403
  level: NgxLoggerLevel.DEBUG,
3414
3404
  disableConsoleLogging: false,
3415
3405
  }), AiTranslocoModule] });
3416
3406
  }
3417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AiModule, decorators: [{
3407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, decorators: [{
3418
3408
  type: NgModule,
3419
3409
  args: [{
3420
3410
  imports: [