@sinequa/assistant 3.1.1 → 3.2.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,13 +1,14 @@
1
1
  import { Component, EventEmitter, Input, Output, inject } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { Validators } from '@angular/forms';
2
4
  import { AuditWebService } from "@sinequa/core/web-services";
3
- import { InstanceManagerService } from "../instance-manager.service";
4
5
  import { Subscription, catchError, filter, switchMap, tap, throwError, BehaviorSubject } from "rxjs";
5
- import { CommonModule } from "@angular/common";
6
6
  import { LoginService } from "@sinequa/core/login";
7
- import { ModalButton, ModalModule, ModalService } from "@sinequa/core/modal";
7
+ import { ModalButton, ModalService, ModalModule } from "@sinequa/core/modal";
8
8
  import { NotificationsService } from "@sinequa/core/notification";
9
9
  import { UtilsModule } from "@sinequa/components/utils";
10
10
  import { format, parseISO, isToday, isYesterday, isThisWeek, isThisMonth, isThisQuarter, isThisYear, endOfYesterday, differenceInDays, differenceInMonths, differenceInYears } from 'date-fns';
11
+ import { InstanceManagerService } from "../instance-manager.service";
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "@angular/common";
13
14
  import * as i2 from "@sinequa/components/utils";
@@ -36,12 +37,42 @@ export class SavedChatsComponent {
36
37
  this.chatService = this.instanceManagerService.getInstance(this.instanceId);
37
38
  }
38
39
  onListSavedChat() {
39
- this.subscription.add(this.chatService.savedChats$.subscribe((savedChats) => this.groupedSavedChats$.next(this._groupSavedChatsByDate(savedChats))));
40
+ this.subscription.add(this.chatService.savedChats$.subscribe((savedChats) => {
41
+ this.currentChatId = undefined;
42
+ this.groupedSavedChats$.next(this._groupSavedChatsByDate(savedChats));
43
+ }));
40
44
  }
41
45
  onLoad(savedChat) {
46
+ this.currentChatId = savedChat.id;
42
47
  this.chatService.loadSavedChat$.next(savedChat);
48
+ this.chatService.listSavedChat();
43
49
  this.load.emit(savedChat);
44
50
  }
51
+ onRename(savedChat) {
52
+ const model = {
53
+ title: 'Rename saved discussion',
54
+ message: `Please enter a new name for the discussion "${savedChat.title}".`,
55
+ buttons: [
56
+ new ModalButton({ result: -2 /* ModalResult.Cancel */ }),
57
+ new ModalButton({ result: -1 /* ModalResult.OK */, text: "Rename", primary: true })
58
+ ],
59
+ output: savedChat.title,
60
+ validators: [Validators.required]
61
+ };
62
+ this.modalService.prompt(model).then(res => {
63
+ if (res === -1 /* ModalResult.OK */) {
64
+ this.subscription.add(this.chatService.updateSavedChat(savedChat.id, model.output)
65
+ .pipe(tap(() => {
66
+ this.notificationsService.success(`The saved discussion "${savedChat.title}" has been successfully renamed to "${model.output}".`);
67
+ this.chatService.listSavedChat();
68
+ }), catchError((error) => {
69
+ console.error('Error occurred while updating the saved chat:', error);
70
+ this.notificationsService.error(`Error occurred while updating the saved discussion "${savedChat.title}"`);
71
+ return throwError(() => error);
72
+ })).subscribe());
73
+ }
74
+ });
75
+ }
45
76
  onDelete(savedChat) {
46
77
  this.modalService
47
78
  .confirm({
@@ -118,10 +149,10 @@ export class SavedChatsComponent {
118
149
  }
119
150
  }
120
151
  SavedChatsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SavedChatsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
- SavedChatsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SavedChatsComponent, isStandalone: true, selector: "sq-saved-chats-v3", inputs: { instanceId: "instanceId" }, outputs: { load: "load", delete: "delete" }, ngImport: i0, template: "<div *ngFor=\"let group of (groupedSavedChats$ | async)\" class=\"saved-chats\">\n <div class=\"saved-chat-date\">{{group.key}}</div>\n <div *ngFor=\"let savedChat of group.value\" class=\"saved-chat p-2\">\n <span class=\"title me-1\" (click)=\"onLoad(savedChat)\">{{savedChat.title}}</span>\n <i class=\"saved-chat-actions fas fa-trash ms-1\" [sqTooltip]=\"'Delete'\" (click)=\"onDelete(savedChat)\"></i>\n </div>\n</div>\n", styles: [".saved-chats .saved-chat-date{font-weight:500;color:#a9a9a9;margin-top:.5rem}.saved-chats .saved-chat{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.saved-chats .saved-chat span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.saved-chats .saved-chat .saved-chat-actions{display:none}.saved-chats .saved-chat:hover{color:#ff732e;background-color:#fff8f1}.saved-chats .saved-chat:hover .saved-chat-actions{display:block}.saved-chats .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "ngmodule", type: UtilsModule }, { kind: "directive", type: i2.TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }] });
152
+ SavedChatsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SavedChatsComponent, isStandalone: true, selector: "sq-saved-chats-v3", inputs: { instanceId: "instanceId" }, outputs: { load: "load", delete: "delete" }, ngImport: i0, template: "<ng-container *ngIf=\"(chatService.chatConfig$ | async)?.savedChatSettings.display\">\n <div *ngFor=\"let group of (groupedSavedChats$ | async)\" class=\"saved-chats\">\n <div class=\"saved-chat-date\">{{group.key}}</div>\n <div *ngFor=\"let savedChat of group.value\" class=\"saved-chat p-2\" [class.active]=\"currentChatId === savedChat.id\"\n (click)=\"onLoad(savedChat)\">\n <span class=\"title me-1\">{{savedChat.title}}</span>\n <i class=\"saved-chat-actions fas fa-pen mx-1\" [sqTooltip]=\"'Rename'\"\n (click)=\"$event.stopPropagation(); onRename(savedChat)\"></i>\n <i class=\"saved-chat-actions fas fa-trash ms-1\" [sqTooltip]=\"'Delete'\"\n (click)=\"$event.stopPropagation(); onDelete(savedChat)\"></i>\n </div>\n </div>\n</ng-container>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black}.saved-chats .saved-chat-date{font-weight:500;color:#a9a9a9;margin-top:.5rem}.saved-chats .saved-chat{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.saved-chats .saved-chat span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.saved-chats .saved-chat .saved-chat-actions{display:none}.saved-chats .saved-chat:hover,.saved-chats .saved-chat.active{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-saved-chat-hover-background, #FFF8F1)}.saved-chats .saved-chat:hover .saved-chat-actions{display:block}.saved-chats .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "ngmodule", type: UtilsModule }, { kind: "directive", type: i2.TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }] });
122
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SavedChatsComponent, decorators: [{
123
154
  type: Component,
124
- args: [{ selector: 'sq-saved-chats-v3', standalone: true, imports: [CommonModule, ModalModule, UtilsModule], template: "<div *ngFor=\"let group of (groupedSavedChats$ | async)\" class=\"saved-chats\">\n <div class=\"saved-chat-date\">{{group.key}}</div>\n <div *ngFor=\"let savedChat of group.value\" class=\"saved-chat p-2\">\n <span class=\"title me-1\" (click)=\"onLoad(savedChat)\">{{savedChat.title}}</span>\n <i class=\"saved-chat-actions fas fa-trash ms-1\" [sqTooltip]=\"'Delete'\" (click)=\"onDelete(savedChat)\"></i>\n </div>\n</div>\n", styles: [".saved-chats .saved-chat-date{font-weight:500;color:#a9a9a9;margin-top:.5rem}.saved-chats .saved-chat{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.saved-chats .saved-chat span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.saved-chats .saved-chat .saved-chat-actions{display:none}.saved-chats .saved-chat:hover{color:#ff732e;background-color:#fff8f1}.saved-chats .saved-chat:hover .saved-chat-actions{display:block}.saved-chats .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
155
+ args: [{ selector: 'sq-saved-chats-v3', standalone: true, imports: [CommonModule, ModalModule, UtilsModule], template: "<ng-container *ngIf=\"(chatService.chatConfig$ | async)?.savedChatSettings.display\">\n <div *ngFor=\"let group of (groupedSavedChats$ | async)\" class=\"saved-chats\">\n <div class=\"saved-chat-date\">{{group.key}}</div>\n <div *ngFor=\"let savedChat of group.value\" class=\"saved-chat p-2\" [class.active]=\"currentChatId === savedChat.id\"\n (click)=\"onLoad(savedChat)\">\n <span class=\"title me-1\">{{savedChat.title}}</span>\n <i class=\"saved-chat-actions fas fa-pen mx-1\" [sqTooltip]=\"'Rename'\"\n (click)=\"$event.stopPropagation(); onRename(savedChat)\"></i>\n <i class=\"saved-chat-actions fas fa-trash ms-1\" [sqTooltip]=\"'Delete'\"\n (click)=\"$event.stopPropagation(); onDelete(savedChat)\"></i>\n </div>\n </div>\n</ng-container>\n", styles: [".ast-primary{color:var(--ast-primary-color, #005DA7);background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover{background-color:var(--ast-primary-bg, #f2f8fe)}.ast-primary-hover:hover{color:var(--ast-primary-color, #005DA7)}.ast-secondary{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-secondary-bg, #FFF8F1)}.ast-btn{border:0;text-align:left;padding-top:.5rem;padding-bottom:.5rem;display:flex;align-items:center}.dark{--ast-primary-bg: #0d0701;--ast-primary-color: #008cd1;--ast-secondary-bg: #00070e;--ast-secondary-color: #ffa258;--ast-input-bg: #070707;--ast-input-color: rgba(222, 218, 218, .75);--ast-muted-color: rgba(222, 218, 218, .75);--ast-saved-chat-hover-background: #262421;--ast-message-table-border-color: #333333;--ast-message-table-tr-bg: #070707;--ast-message-table-tr-border-color: #222222;--ast-reference-icon-color: white;--ast-reference-icon-active-color: black;--ast-reference-passages-color: white;--ast-reference-expanded-hover-bg: #262421;--ast-message-reference-color: black}.saved-chats .saved-chat-date{font-weight:500;color:#a9a9a9;margin-top:.5rem}.saved-chats .saved-chat{display:flex;align-items:center;cursor:pointer;margin-left:.25rem}.saved-chats .saved-chat span{flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.saved-chats .saved-chat .saved-chat-actions{display:none}.saved-chats .saved-chat:hover,.saved-chats .saved-chat.active{color:var(--ast-secondary-color, #FF732E);background-color:var(--ast-saved-chat-hover-background, #FFF8F1)}.saved-chats .saved-chat:hover .saved-chat-actions{display:block}.saved-chats .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
125
156
  }], propDecorators: { instanceId: [{
126
157
  type: Input
127
158
  }], load: [{
@@ -129,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
129
160
  }], delete: [{
130
161
  type: Output
131
162
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtY2hhdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2F2ZWQtY2hhdHMvc2F2ZWQtY2hhdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2F2ZWQtY2hhdHMvc2F2ZWQtY2hhdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFlLFdBQVcsRUFBRSxXQUFXLEVBQWUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIs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QUFDLEVBQUU7WUFDNUIsT0FBTyxjQUFjLENBQUM7U0FDekI7YUFBTSxJQUFJLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4RCxPQUFPLGNBQWMsQ0FBQztTQUN6QjthQUFNLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEQsT0FBTyxXQUFXLENBQUM7U0FDdEI7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7O2dIQTlIVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnS0NwQmhDLDhiQU9BLG9tQkRXWSxZQUFZLGdOQUFFLFdBQVcsOEJBQUUsV0FBVzsyRkFFckMsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQzs4QkFJeEMsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXVkaXRXZWJTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzXCI7XG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gXCIuLi9jaGF0LnNlcnZpY2VcIjtcbmltcG9ydCB7IFNhdmVkQ2hhdCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgSW5zdGFuY2VNYW5hZ2VyU2VydmljZSB9IGZyb20gXCIuLi9pbnN0YW5jZS1tYW5hZ2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY2F0Y2hFcnJvciwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCwgdGhyb3dFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2xvZ2luXCI7XG5pbXBvcnQgeyBDb25maXJtVHlwZSwgTW9kYWxCdXR0b24sIE1vZGFsTW9kdWxlLCBNb2RhbFJlc3VsdCwgTW9kYWxTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbW9kYWxcIjtcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBVdGlsc01vZHVsZSB9IGZyb20gXCJAc2luZXF1YS9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlSVNPLCBpc1RvZGF5LCBpc1llc3RlcmRheSwgaXNUaGlzV2VlaywgaXNUaGlzTW9udGgsIGlzVGhpc1F1YXJ0ZXIsIGlzVGhpc1llYXIsIGVuZE9mWWVzdGVyZGF5LCBkaWZmZXJlbmNlSW5EYXlzLCBkaWZmZXJlbmNlSW5Nb250aHMsIGRpZmZlcmVuY2VJblllYXJzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcS1zYXZlZC1jaGF0cy12MycsXG4gIHRlbXBsYXRlVXJsOiAnc2F2ZWQtY2hhdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc2F2ZWQtY2hhdHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTW9kYWxNb2R1bGUsIFV0aWxzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTYXZlZENoYXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogRGVmaW5lIHRoZSBrZXkgYmFzZWQgb24gaXQsIHRoZSBhcHByb3ByaWF0ZSBjaGF0U2VydmljZSBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkIGZyb20gaW5zdGFuY2VNYW5hZ2VyU2VydmljZSAqL1xuICBASW5wdXQoKSBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNhdmVkQ2hhdD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2F2ZWRDaGF0PigpO1xuXG4gIGNoYXRTZXJ2aWNlOiBDaGF0U2VydmljZTtcbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBncm91cGVkU2F2ZWRDaGF0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBTYXZlZENoYXRbXX1bXT4oW10pO1xuXG4gIHB1YmxpYyBsb2dpblNlcnZpY2UgPSBpbmplY3QoTG9naW5TZXJ2aWNlKTtcbiAgcHVibGljIGluc3RhbmNlTWFuYWdlclNlcnZpY2UgPSBpbmplY3QoSW5zdGFuY2VNYW5hZ2VyU2VydmljZSk7XG4gIHB1YmxpYyBhdWRpdFNlcnZpY2UgPSBpbmplY3QoQXVkaXRXZWJTZXJ2aWNlKTtcbiAgcHVibGljIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoZSA9PiBlLnR5cGUgPT09ICdsb2dpbi1jb21wbGV0ZScpLFxuICAgICAgICB0YXAoXyA9PiB0aGlzLmluc3RhbnRpYXRlQ2hhdFNlcnZpY2UoKSksXG4gICAgICAgIHN3aXRjaE1hcChfID0+IHRoaXMuY2hhdFNlcnZpY2UuaW5pdFByb2Nlc3MkKSxcbiAgICAgICAgZmlsdGVyKHN1Y2Nlc3MgPT4gISFzdWNjZXNzKSxcbiAgICAgICAgdGFwKF8gPT4ge1xuICAgICAgICAgIHRoaXMub25MaXN0U2F2ZWRDaGF0KCk7XG4gICAgICAgICAgdGhpcy5jaGF0U2VydmljZS5saXN0U2F2ZWRDaGF0KCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBpbnN0YW50aWF0ZUNoYXRTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhdFNlcnZpY2UgPSB0aGlzLmluc3RhbmNlTWFuYWdlclNlcnZpY2UuZ2V0SW5zdGFuY2UodGhpcy5pbnN0YW5jZUlkKTtcbiAgfVxuXG4gIG9uTGlzdFNhdmVkQ2hhdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmNoYXRTZXJ2aWNlLnNhdmVkQ2hhdHMkLnN1YnNjcmliZShcbiAgICAgICAgKHNhdmVkQ2hhdHM6IFNhdmVkQ2hhdFtdKSA9PiB0aGlzLmdyb3VwZWRTYXZlZENoYXRzJC5uZXh0KHRoaXMuX2dyb3VwU2F2ZWRDaGF0c0J5RGF0ZShzYXZlZENoYXRzKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb25Mb2FkKHNhdmVkQ2hhdDogU2F2ZWRDaGF0KSB7XG4gICAgdGhpcy5jaGF0U2VydmljZS5sb2FkU2F2ZWRDaGF0JC5uZXh0KHNhdmVkQ2hhdCk7XG4gICAgdGhpcy5sb2FkLmVtaXQoc2F2ZWRDaGF0KTtcbiAgfVxuXG4gIG9uRGVsZXRlKHNhdmVkQ2hhdDogU2F2ZWRDaGF0KSB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2VcbiAgICAgIC5jb25maXJtKHtcbiAgICAgICAgICB0aXRsZTogXCJEZWxldGUgc2F2ZWQgZGlzY3Vzc2lvblwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgZGlzY3Vzc2lvbiBcIiR7c2F2ZWRDaGF0LnRpdGxlfVwiLiBEbyB5b3Ugd2FudCB0byBjb250aW51ZT9gLFxuICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgbmV3IE1vZGFsQnV0dG9uKHtyZXN1bHQ6IE1vZGFsUmVzdWx0LkNhbmNlbH0pLFxuICAgICAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuT0ssIHRleHQ6IFwiQ29uZmlybVwiLCBwcmltYXJ5OiB0cnVlfSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIGNvbmZpcm1UeXBlOiBDb25maXJtVHlwZS5XYXJuaW5nXG4gICAgICB9KS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgaWYocmVzID09PSBNb2RhbFJlc3VsdC5PSykge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmRlbGV0ZVNhdmVkQ2hhdChbc2F2ZWRDaGF0LmlkXSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3VjY2VzcyhgVGhlIHNhdmVkIGRpc2N1c3Npb24gXCIke3NhdmVkQ2hhdC50aXRsZX1cIiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGUuZW1pdChzYXZlZENoYXQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmxpc3RTYXZlZENoYXQoKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb2NjdXJyZWQgd2hpbGUgZGVsZXRpbmcgdGhlIHNhdmVkIGNoYXQ6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGBFcnJvciBvY2N1cnJlZCB3aGlsZSBkZWxldGluZyB0aGUgc2F2ZWQgZGlzY3Vzc2lvbiBcIiR7c2F2ZWRDaGF0LnRpdGxlfVwiYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ3JvdXBTYXZlZENoYXRzQnlEYXRlKHNhdmVkQ2hhdHM6IFNhdmVkQ2hhdFtdKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IFNhdmVkQ2hhdFtdIH1bXSB7XG4gICAgY29uc3QgZ3JvdXBlZFNhdmVkQ2hhdHMgPSBuZXcgTWFwPHN0cmluZywgU2F2ZWRDaGF0W10+KCk7XG5cbiAgICBzYXZlZENoYXRzXG4gICAgICAuc29ydCgoYSwgYikgPT4gcGFyc2VJU08oYi5tb2RpZmllZFVUQykuZ2V0VGltZSgpIC0gcGFyc2VJU08oYS5tb2RpZmllZFVUQykuZ2V0VGltZSgpKVxuICAgICAgLmZvckVhY2goc2F2ZWRDaGF0ID0+IHtcbiAgICAgICAgICBjb25zdCBncm91cEtleSA9IHRoaXMuX2dldFRpbWVLZXkocGFyc2VJU08oc2F2ZWRDaGF0Lm1vZGlmaWVkVVRDKSk7XG5cbiAgICAgICAgICBpZiAoIWdyb3VwZWRTYXZlZENoYXRzLmhhcyhncm91cEtleSkpIHtcbiAgICAgICAgICAgIGdyb3VwZWRTYXZlZENoYXRzLnNldChncm91cEtleSwgW10pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGdyb3VwZWRTYXZlZENoYXRzLmdldChncm91cEtleSkhLnB1c2goc2F2ZWRDaGF0KTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZFNhdmVkQ2hhdHMsIChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpOztcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpbWVLZXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKGlzVG9kYXkoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuICdUb2RheSc7XG4gICAgfSBlbHNlIGlmIChpc1llc3RlcmRheShkYXRlKSkge1xuICAgICAgICByZXR1cm4gJ1llc3RlcmRheSc7XG4gICAgfSBlbHNlIGlmIChpc1RoaXNXZWVrKGRhdGUpKSB7XG4gICAgICAgIHJldHVybiAnVGhpcyB3ZWVrJztcbiAgICB9IGVsc2UgaWYgKGRpZmZlcmVuY2VJbkRheXMoZW5kT2ZZZXN0ZXJkYXkoKSwgZGF0ZSkgPD0gNykge1xuICAgICAgcmV0dXJuICdMYXN0IHdlZWsnO1xuICAgIH0gZWxzZSBpZiAoaXNUaGlzTW9udGgoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuICdUaGlzIG1vbnRoJztcbiAgICB9IGVsc2UgaWYgKGRpZmZlcmVuY2VJbk1vbnRocyhlbmRPZlllc3RlcmRheSgpLCBkYXRlKSA8PSAxKSB7XG4gICAgICByZXR1cm4gJ0xhc3QgbW9udGgnO1xuICAgIH0gZWxzZSBpZiAoaXNUaGlzUXVhcnRlcihkYXRlKSkge1xuICAgICAgICByZXR1cm4gJ1RoaXMgcXVhcnRlcic7XG4gICAgfSBlbHNlIGlmIChkaWZmZXJlbmNlSW5Nb250aHMoZW5kT2ZZZXN0ZXJkYXkoKSwgZGF0ZSkgPD0gMykge1xuICAgICAgICByZXR1cm4gJ0xhc3QgcXVhcnRlcic7XG4gICAgfSBlbHNlIGlmIChpc1RoaXNZZWFyKGRhdGUpKSB7XG4gICAgICAgIHJldHVybiAnVGhpcyB5ZWFyJztcbiAgICB9IGVsc2UgaWYgKGRpZmZlcmVuY2VJblllYXJzKGVuZE9mWWVzdGVyZGF5KCksIGRhdGUpID09PSAxKSB7XG4gICAgICAgIHJldHVybiAnTGFzdCB5ZWFyJztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZm9ybWF0KGRhdGUsICd5eXl5Jyk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIChncm91cGVkU2F2ZWRDaGF0cyQgfCBhc3luYylcIiBjbGFzcz1cInNhdmVkLWNoYXRzXCI+XG4gICAgPGRpdiBjbGFzcz1cInNhdmVkLWNoYXQtZGF0ZVwiPnt7Z3JvdXAua2V5fX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzYXZlZENoYXQgb2YgZ3JvdXAudmFsdWVcIiBjbGFzcz1cInNhdmVkLWNoYXQgcC0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRpdGxlIG1lLTFcIiAoY2xpY2spPVwib25Mb2FkKHNhdmVkQ2hhdClcIj57e3NhdmVkQ2hhdC50aXRsZX19PC9zcGFuPlxuICAgICAgPGkgY2xhc3M9XCJzYXZlZC1jaGF0LWFjdGlvbnMgZmFzIGZhLXRyYXNoIG1zLTFcIiBbc3FUb29sdGlwXT1cIidEZWxldGUnXCIgKGNsaWNrKT1cIm9uRGVsZXRlKHNhdmVkQ2hhdClcIj48L2k+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtY2hhdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2F2ZWQtY2hhdHMvc2F2ZWQtY2hhdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2F2ZWQtY2hhdHMvc2F2ZWQtY2hhdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBZSxXQUFXLEVBQWUsWUFBWSxFQUFpQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixF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QU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBdWRpdFdlYlNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29yZS93ZWItc2VydmljZXNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY2F0Y2hFcnJvciwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCwgdGhyb3dFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2xvZ2luXCI7XG5pbXBvcnQgeyBDb25maXJtVHlwZSwgTW9kYWxCdXR0b24sIE1vZGFsUmVzdWx0LCBNb2RhbFNlcnZpY2UsIFByb21wdE9wdGlvbnMsIE1vZGFsTW9kdWxlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbW9kYWxcIjtcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvbm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBVdGlsc01vZHVsZSB9IGZyb20gXCJAc2luZXF1YS9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlSVNPLCBpc1RvZGF5LCBpc1llc3RlcmRheSwgaXNUaGlzV2VlaywgaXNUaGlzTW9udGgsIGlzVGhpc1F1YXJ0ZXIsIGlzVGhpc1llYXIsIGVuZE9mWWVzdGVyZGF5LCBkaWZmZXJlbmNlSW5EYXlzLCBkaWZmZXJlbmNlSW5Nb250aHMsIGRpZmZlcmVuY2VJblllYXJzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tIFwiLi4vY2hhdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTYXZlZENoYXQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEluc3RhbmNlTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiLi4vaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NxLXNhdmVkLWNoYXRzLXYzJyxcbiAgdGVtcGxhdGVVcmw6ICdzYXZlZC1jaGF0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzYXZlZC1jaGF0cy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNb2RhbE1vZHVsZSwgVXRpbHNNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVkQ2hhdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBEZWZpbmUgdGhlIGtleSBiYXNlZCBvbiBpdCwgdGhlIGFwcHJvcHJpYXRlIGNoYXRTZXJ2aWNlIGluc3RhbmNlIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSBpbnN0YW5jZU1hbmFnZXJTZXJ2aWNlICovXG4gIEBJbnB1dCgpIGluc3RhbmNlSWQ6IHN0cmluZztcblxuICBAT3V0cHV0KCkgbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2F2ZWRDaGF0PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxTYXZlZENoYXQ+KCk7XG5cbiAgY2hhdFNlcnZpY2U6IENoYXRTZXJ2aWNlO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGdyb3VwZWRTYXZlZENoYXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBrZXk6IHN0cmluZzsgdmFsdWU6IFNhdmVkQ2hhdFtdfVtdPihbXSk7XG5cbiAgcHVibGljIGxvZ2luU2VydmljZSA9IGluamVjdChMb2dpblNlcnZpY2UpO1xuICBwdWJsaWMgaW5zdGFuY2VNYW5hZ2VyU2VydmljZSA9IGluamVjdChJbnN0YW5jZU1hbmFnZXJTZXJ2aWNlKTtcbiAgcHVibGljIGF1ZGl0U2VydmljZSA9IGluamVjdChBdWRpdFdlYlNlcnZpY2UpO1xuICBwdWJsaWMgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG4gIHB1YmxpYyBub3RpZmljYXRpb25zU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG5cbiAgY3VycmVudENoYXRJZD86IHN0cmluZztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLmxvZ2luU2VydmljZS5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKGUgPT4gZS50eXBlID09PSAnbG9naW4tY29tcGxldGUnKSxcbiAgICAgICAgdGFwKF8gPT4gdGhpcy5pbnN0YW50aWF0ZUNoYXRTZXJ2aWNlKCkpLFxuICAgICAgICBzd2l0Y2hNYXAoXyA9PiB0aGlzLmNoYXRTZXJ2aWNlLmluaXRQcm9jZXNzJCksXG4gICAgICAgIGZpbHRlcihzdWNjZXNzID0+ICEhc3VjY2VzcyksXG4gICAgICAgIHRhcChfID0+IHtcbiAgICAgICAgICB0aGlzLm9uTGlzdFNhdmVkQ2hhdCgpO1xuICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UubGlzdFNhdmVkQ2hhdCgpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgaW5zdGFudGlhdGVDaGF0U2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYXRTZXJ2aWNlID0gdGhpcy5pbnN0YW5jZU1hbmFnZXJTZXJ2aWNlLmdldEluc3RhbmNlKHRoaXMuaW5zdGFuY2VJZCk7XG4gIH1cblxuICBvbkxpc3RTYXZlZENoYXQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jaGF0U2VydmljZS5zYXZlZENoYXRzJC5zdWJzY3JpYmUoXG4gICAgICAgIChzYXZlZENoYXRzOiBTYXZlZENoYXRbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY3VycmVudENoYXRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLmdyb3VwZWRTYXZlZENoYXRzJC5uZXh0KHRoaXMuX2dyb3VwU2F2ZWRDaGF0c0J5RGF0ZShzYXZlZENoYXRzKSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb25Mb2FkKHNhdmVkQ2hhdDogU2F2ZWRDaGF0KSB7XG4gICAgdGhpcy5jdXJyZW50Q2hhdElkID0gc2F2ZWRDaGF0LmlkO1xuICAgIHRoaXMuY2hhdFNlcnZpY2UubG9hZFNhdmVkQ2hhdCQubmV4dChzYXZlZENoYXQpO1xuICAgIHRoaXMuY2hhdFNlcnZpY2UubGlzdFNhdmVkQ2hhdCgpO1xuICAgIHRoaXMubG9hZC5lbWl0KHNhdmVkQ2hhdCk7XG4gIH1cblxuICBvblJlbmFtZShzYXZlZENoYXQ6IFNhdmVkQ2hhdCkge1xuICAgIGNvbnN0IG1vZGVsOiBQcm9tcHRPcHRpb25zID0ge1xuICAgICAgdGl0bGU6ICdSZW5hbWUgc2F2ZWQgZGlzY3Vzc2lvbicsXG4gICAgICBtZXNzYWdlOiBgUGxlYXNlIGVudGVyIGEgbmV3IG5hbWUgZm9yIHRoZSBkaXNjdXNzaW9uIFwiJHtzYXZlZENoYXQudGl0bGV9XCIuYCxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuQ2FuY2VsfSksXG4gICAgICAgICAgbmV3IE1vZGFsQnV0dG9uKHtyZXN1bHQ6IE1vZGFsUmVzdWx0Lk9LLCB0ZXh0OiBcIlJlbmFtZVwiLCBwcmltYXJ5OiB0cnVlfSlcbiAgICAgIF0sXG4gICAgICBvdXRwdXQ6IHNhdmVkQ2hhdC50aXRsZSxcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIH07XG5cbiAgICB0aGlzLm1vZGFsU2VydmljZS5wcm9tcHQobW9kZWwpLnRoZW4ocmVzID0+IHtcbiAgICAgIGlmKHJlcyA9PT0gTW9kYWxSZXN1bHQuT0spIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLnVwZGF0ZVNhdmVkQ2hhdChzYXZlZENoYXQuaWQsIG1vZGVsLm91dHB1dClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3VjY2VzcyhgVGhlIHNhdmVkIGRpc2N1c3Npb24gXCIke3NhdmVkQ2hhdC50aXRsZX1cIiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVuYW1lZCB0byBcIiR7bW9kZWwub3V0cHV0fVwiLmApO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jaGF0U2VydmljZS5saXN0U2F2ZWRDaGF0KCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHVwZGF0aW5nIHRoZSBzYXZlZCBjaGF0OicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYEVycm9yIG9jY3VycmVkIHdoaWxlIHVwZGF0aW5nIHRoZSBzYXZlZCBkaXNjdXNzaW9uIFwiJHtzYXZlZENoYXQudGl0bGV9XCJgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLnN1YnNjcmliZSgpXG4gICAgICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGUoc2F2ZWRDaGF0OiBTYXZlZENoYXQpIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZVxuICAgICAgLmNvbmZpcm0oe1xuICAgICAgICAgIHRpdGxlOiBcIkRlbGV0ZSBzYXZlZCBkaXNjdXNzaW9uXCIsXG4gICAgICAgICAgbWVzc2FnZTogYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBkaXNjdXNzaW9uIFwiJHtzYXZlZENoYXQudGl0bGV9XCIuIERvIHlvdSB3YW50IHRvIGNvbnRpbnVlP2AsXG4gICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICBuZXcgTW9kYWxCdXR0b24oe3Jlc3VsdDogTW9kYWxSZXN1bHQuQ2FuY2VsfSksXG4gICAgICAgICAgICAgIG5ldyBNb2RhbEJ1dHRvbih7cmVzdWx0OiBNb2RhbFJlc3VsdC5PSywgdGV4dDogXCJDb25maXJtXCIsIHByaW1hcnk6IHRydWV9KVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY29uZmlybVR5cGU6IENvbmZpcm1UeXBlLldhcm5pbmdcbiAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBpZihyZXMgPT09IE1vZGFsUmVzdWx0Lk9LKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZGVsZXRlU2F2ZWRDaGF0KFtzYXZlZENoYXQuaWRdKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zdWNjZXNzKGBUaGUgc2F2ZWQgZGlzY3Vzc2lvbiBcIiR7c2F2ZWRDaGF0LnRpdGxlfVwiIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBkZWxldGVkLmApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KHNhdmVkQ2hhdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UubGlzdFNhdmVkQ2hhdCgpO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZCB3aGlsZSBkZWxldGluZyB0aGUgc2F2ZWQgY2hhdDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYEVycm9yIG9jY3VycmVkIHdoaWxlIGRlbGV0aW5nIHRoZSBzYXZlZCBkaXNjdXNzaW9uIFwiJHtzYXZlZENoYXQudGl0bGV9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9ncm91cFNhdmVkQ2hhdHNCeURhdGUoc2F2ZWRDaGF0czogU2F2ZWRDaGF0W10pOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogU2F2ZWRDaGF0W10gfVtdIHtcbiAgICBjb25zdCBncm91cGVkU2F2ZWRDaGF0cyA9IG5ldyBNYXA8c3RyaW5nLCBTYXZlZENoYXRbXT4oKTtcblxuICAgIHNhdmVkQ2hhdHNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBwYXJzZUlTTyhiLm1vZGlmaWVkVVRDKS5nZXRUaW1lKCkgLSBwYXJzZUlTTyhhLm1vZGlmaWVkVVRDKS5nZXRUaW1lKCkpXG4gICAgICAuZm9yRWFjaChzYXZlZENoYXQgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwS2V5ID0gdGhpcy5fZ2V0VGltZUtleShwYXJzZUlTTyhzYXZlZENoYXQubW9kaWZpZWRVVEMpKTtcblxuICAgICAgICAgIGlmICghZ3JvdXBlZFNhdmVkQ2hhdHMuaGFzKGdyb3VwS2V5KSkge1xuICAgICAgICAgICAgZ3JvdXBlZFNhdmVkQ2hhdHMuc2V0KGdyb3VwS2V5LCBbXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JvdXBlZFNhdmVkQ2hhdHMuZ2V0KGdyb3VwS2V5KSEucHVzaChzYXZlZENoYXQpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShncm91cGVkU2F2ZWRDaGF0cywgKFtrZXksIHZhbHVlXSkgPT4gKHsga2V5LCB2YWx1ZSB9KSk7O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGltZUtleShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAoaXNUb2RheShkYXRlKSkge1xuICAgICAgICByZXR1cm4gJ1RvZGF5JztcbiAgICB9IGVsc2UgaWYgKGlzWWVzdGVyZGF5KGRhdGUpKSB7XG4gICAgICAgIHJldHVybiAnWWVzdGVyZGF5JztcbiAgICB9IGVsc2UgaWYgKGlzVGhpc1dlZWsoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuICdUaGlzIHdlZWsnO1xuICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZUluRGF5cyhlbmRPZlllc3RlcmRheSgpLCBkYXRlKSA8PSA3KSB7XG4gICAgICByZXR1cm4gJ0xhc3Qgd2Vlayc7XG4gICAgfSBlbHNlIGlmIChpc1RoaXNNb250aChkYXRlKSkge1xuICAgICAgICByZXR1cm4gJ1RoaXMgbW9udGgnO1xuICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZUluTW9udGhzKGVuZE9mWWVzdGVyZGF5KCksIGRhdGUpIDw9IDEpIHtcbiAgICAgIHJldHVybiAnTGFzdCBtb250aCc7XG4gICAgfSBlbHNlIGlmIChpc1RoaXNRdWFydGVyKGRhdGUpKSB7XG4gICAgICAgIHJldHVybiAnVGhpcyBxdWFydGVyJztcbiAgICB9IGVsc2UgaWYgKGRpZmZlcmVuY2VJbk1vbnRocyhlbmRPZlllc3RlcmRheSgpLCBkYXRlKSA8PSAzKSB7XG4gICAgICAgIHJldHVybiAnTGFzdCBxdWFydGVyJztcbiAgICB9IGVsc2UgaWYgKGlzVGhpc1llYXIoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuICdUaGlzIHllYXInO1xuICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZUluWWVhcnMoZW5kT2ZZZXN0ZXJkYXkoKSwgZGF0ZSkgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuICdMYXN0IHllYXInO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgJ3l5eXknKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjaGF0U2VydmljZS5jaGF0Q29uZmlnJCB8IGFzeW5jKT8uc2F2ZWRDaGF0U2V0dGluZ3MuZGlzcGxheVwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiAoZ3JvdXBlZFNhdmVkQ2hhdHMkIHwgYXN5bmMpXCIgY2xhc3M9XCJzYXZlZC1jaGF0c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzYXZlZC1jaGF0LWRhdGVcIj57e2dyb3VwLmtleX19PC9kaXY+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgc2F2ZWRDaGF0IG9mIGdyb3VwLnZhbHVlXCIgY2xhc3M9XCJzYXZlZC1jaGF0IHAtMlwiIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudENoYXRJZCA9PT0gc2F2ZWRDaGF0LmlkXCJcbiAgICAgIChjbGljayk9XCJvbkxvYWQoc2F2ZWRDaGF0KVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZSBtZS0xXCI+e3tzYXZlZENoYXQudGl0bGV9fTwvc3Bhbj5cbiAgICAgIDxpIGNsYXNzPVwic2F2ZWQtY2hhdC1hY3Rpb25zIGZhcyBmYS1wZW4gbXgtMVwiIFtzcVRvb2x0aXBdPVwiJ1JlbmFtZSdcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlbmFtZShzYXZlZENoYXQpXCI+PC9pPlxuICAgICAgPGkgY2xhc3M9XCJzYXZlZC1jaGF0LWFjdGlvbnMgZmFzIGZhLXRyYXNoIG1zLTFcIiBbc3FUb29sdGlwXT1cIidEZWxldGUnXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25EZWxldGUoc2F2ZWRDaGF0KVwiPjwvaT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- // Define the Zod representation for the globalSettings object
3
- export const globalSettingsSchema = z.object({
2
+ // Define the Zod representation for the connectionSettings object
3
+ export const connectionSettingsSchema = z.object({
4
4
  restEndpoint: z.string().optional(),
5
5
  websocketEndpoint: z.string().optional(),
6
6
  signalRTransport: z.enum(["WebSockets", "ServerSentEvents", "LongPolling", "None"]),
@@ -14,50 +14,10 @@ const serviceSettingsSchema = z.object({
14
14
  model_id: z.string(),
15
15
  temperature: z.number(),
16
16
  top_p: z.number(),
17
- maxTokens: z.number(),
18
- results_per_prompt: z.number(),
19
- presence_penalty: z.number(),
20
- frequency_penalty: z.number(),
21
- });
22
- // Define the Zod representation for the TextChunksOptions interface
23
- const textChunksOptionsSchema = z.object({
24
- extendMode: z.enum(['None', 'Sentence', 'Chars']).optional(),
25
- extendScope: z.number().optional(),
26
- });
27
- // Define the Zod representation for the contextOptions object
28
- const contextOptionsSchema = z.object({
29
- docColumns: z.array(z.string()),
30
- textChunkFillGaps: z.number(),
31
- html: z.boolean(),
32
- topPassagesOptions: z.object({
33
- topPassages: z.number(),
34
- topPassagesMinScore: z.number(),
35
- textChunkOptions: textChunksOptionsSchema,
36
- }),
37
- matchingPassagesOptions: z.object({
38
- matchingPassagesPerDoc: z.number(),
39
- fromTopDocuments: z.number(),
40
- matchingPassagesMinScore: z.number(),
41
- textChunkOptions: textChunksOptionsSchema,
42
- }),
43
- relevantExtractsOptions: z.object({
44
- topRelevantExtractsPerDoc: z.number(),
45
- fromTopDocuments: z.number(),
46
- textChunkOptions: textChunksOptionsSchema,
47
- }),
48
- htmlOptions: z.object({
49
- images: z.boolean(),
50
- links: z.boolean(),
51
- tables: z.boolean(),
52
- extendTables: z.boolean(),
53
- }),
54
- });
55
- // Define the Zod representation for the contextSettings object
56
- const contextSettingsSchema = z.object({
57
- app: z.string().optional(),
58
- query: z.object({}).optional(),
59
- contextOptions: contextOptionsSchema,
17
+ max_tokens: z.number()
60
18
  });
19
+ // Define the Zod representation for the additionalServiceSettings object
20
+ const additionalServiceSettingsSchema = z.object({});
61
21
  // Define the Zod representation for the uiSettings object
62
22
  const uiSettingsSchema = z.object({
63
23
  display: z.boolean(),
@@ -65,21 +25,57 @@ const uiSettingsSchema = z.object({
65
25
  functions: z.boolean(),
66
26
  temperature: z.boolean(),
67
27
  top_p: z.boolean(),
68
- maxTokens: z.boolean(),
28
+ max_tokens: z.boolean(),
69
29
  debug: z.boolean(),
70
30
  displaySystemPrompt: z.boolean(),
31
+ displayUserPrompt: z.boolean()
32
+ });
33
+ // Define the Zod representation for the defaultValues object
34
+ const defaultValuesSchema = z.object({
35
+ service_id: z.string(),
36
+ model_id: z.string(),
37
+ functions: z.array(z.object({
38
+ name: z.string(),
39
+ enabled: z.boolean()
40
+ })),
41
+ temperature: z.number(),
42
+ top_p: z.number(),
43
+ max_tokens: z.number(),
44
+ debug: z.boolean(),
71
45
  systemPrompt: z.string(),
46
+ userPrompt: z.string()
47
+ });
48
+ // Define the Zod representation for the modeSettings object
49
+ const initializationSchema = z.object({
50
+ event: z.enum(['Query', 'Prompt']),
51
+ forcedWorkflow: z.string().optional(),
52
+ displayUserQuery: z.boolean().optional(), // Optional for event 'Prompt'
53
+ }).refine(data => ((data.event === "Query") ? (!!data.forcedWorkflow && data.displayUserQuery !== undefined && data.displayUserQuery !== null) : true), {
54
+ message: "The 'forcedWorkflow' and 'displayUserQuery' properties must be provided when the initialization's event is 'Query'.",
55
+ });
56
+ const modeSettingsSchema = z.object({
57
+ enabledUserInput: z.boolean(),
72
58
  displayUserPrompt: z.boolean(),
73
- userPrompt: z.string(),
59
+ sendUserPrompt: z.boolean(),
60
+ initialization: initializationSchema
61
+ });
62
+ // Define the Zod representation for the savedChatSettings object
63
+ const savedChatSettingsSchema = z.object({
64
+ enabled: z.boolean(),
65
+ display: z.boolean()
66
+ });
67
+ // Define the Zod representation for the globalSettings object
68
+ const globalSettingsSchema = z.object({
69
+ disclaimer: z.string().optional(),
74
70
  });
75
71
  // Define the Zod representation for the entire ChatConfig object
76
72
  export const chatConfigSchema = z.object({
77
- globalSettings: globalSettingsSchema,
78
- serviceSettings: serviceSettingsSchema,
79
- contextSettings: contextSettingsSchema,
73
+ connectionSettings: connectionSettingsSchema,
74
+ defaultValues: defaultValuesSchema,
75
+ modeSettings: modeSettingsSchema,
80
76
  uiSettings: uiSettingsSchema,
81
- functions: z.array(z.string()),
82
- debug: z.boolean(),
83
- saveChats: z.boolean()
77
+ additionalServiceSettings: additionalServiceSettingsSchema,
78
+ savedChatSettings: savedChatSettingsSchema,
79
+ globalSettings: globalSettingsSchema
84
80
  });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBcUl4Qiw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDbkcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ25FLE9BQU8sRUFBRSxtTkFBbU47Q0FDN04sQ0FBQyxDQUFDO0FBSUgsK0RBQStEO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFB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LE9BQU8sRUFBRTtJQUNoQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN4QixpQkFBaUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzlCLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQztBQUlILGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxlQUFlLEVBQUUscUJBQXFCO0lBQ3RDLFVBQVUsRUFBRSxnQkFBZ0I7SUFDNUIsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzlCLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2xCLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzXCI7XG5cbi8qKlxuICogSW5kaXZpZHVhbCBtZXNzYWdlIHNlbnQgJiByZXR1cm5lZCBieSB0aGUgQ2hhdEdQVCBBUEkuXG4gKiBJZiB0aGlzIG1lc3NhZ2UgaXMgYW4gYXR0YWNobWVudCwgd2UgYXR0YWNoIHRoZSBtaW5pbWFsXG4gKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhpcyBhdHRhY2htZW50IChSYXdBdHRhY2htZW50KVxuICogYXMgd2VsbCBhcyB0aGUgcmVmZXJlbmNlIGlkIGNvbXB1dGVkIGF0IHRoZSBtb21lbnQgb2Ygc2VuZGluZ1xuICogdGhlIGF0dGFjaG1lbnQgdG8gdGhlIEFQSS5cbiAqL1xuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBSYXdNZXNzYWdlIHtcbiAgcm9sZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gIH07XG59XG5cbi8qKlxuICogQSBjaGF0IG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBwcm9jZXNzZWQgdG8gaW5jbHVkZSB0aGUgbWFya2Rvd24tZm9ybWF0dGVkXG4gKiBjb250ZW50IGZvciBkaXNwbGF5LCBhcyB3ZWxsIGFzIGRldGFpbGVkIGF0dGFjaG1lbnQgZGF0YSwgYW5kIG9wdGlvbmFsbHlcbiAqIGEgbGlzdCBvZiB0aGUgcmVmZXJlbmNlcyBleHRyYWN0ZWQgZnJvbSB0aGF0IG1lc3NhZ2VcbiAqL1xuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBDaGF0TWVzc2FnZSBleHRlbmRzIFJhd01lc3NhZ2Uge1xuICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgIGRpc3BsYXk/OiBib29sZWFuO1xuICAgICRwcm9ncmVzcz86IENoYXRQcm9ncmVzc1tdO1xuICAgICRhdHRhY2htZW50PzogQ2hhdENvbnRleHRBdHRhY2htZW50W107XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBDaGF0UHJvZ3Jlc3Mge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgY29udGVudD86IHN0cmluZztcbiAgICBkb25lPzogYm9vbGVhbjtcbiAgICB0aW1lPzogbnVtYmVyO1xufVxuXG4vLyBET05FXG5leHBvcnQgaW50ZXJmYWNlIFJhd0F0dGFjaG1lbnQge1xuICAvKiogVHlwZSBvZiB0aGUgYXR0YWNobWVudCAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBSZWNvcmQgaWQgZnJvbSB3aGljaCB0aGlzIGF0dGFjaG1lbnQgaXMgdGFrZW4gKi9cbiAgcmVjb3JkSWQ6IHN0cmluZztcbiAgLyoqIFJlY29yZCBmcm9tIHdoaWNoIHRoaXMgdGhpcyBhdHRhY2htZW50IGlzIHRha2VuICovXG4gIHJlY29yZDogUmVjb3JkO1xufVxuXG4vLyBET05FXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50UGFydCB7XG4gIHBhcnRJZDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29udGV4dEF0dGFjaG1lbnQgZXh0ZW5kcyBSYXdBdHRhY2htZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGF0dGFjaG1lbnQgKi9cbiAgdHlwZTogXCJDb250ZXh0XCI7XG4gIC8qKiBSYW5rIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBjb250ZXh0IG1lc3NhZ2UgKi9cbiAgY29udGV4dElkOiBudW1iZXI7XG4gIC8qKiBQYXJ0cyBvZiB0aGUgcmVjb3JkIHRoYXQgdGhlIGFzc2lzdGFudCB1c2VzIHRvIGFuc3dlciAqL1xuICBwYXJ0czogRG9jdW1lbnRQYXJ0W107XG4gIC8qKiBUaGUgc3BlY2lmaWMgaWQgb2YgdXNlZCB0aGUgcmVmZXJlbmNlZCBwYXJ0ICovXG4gICRwYXJ0SWQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmF3IHJlc3BvbnNlIG9mIHRoZSBBUElcbiAqL1xuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBSYXdSZXNwb25zZSB7XG4gIGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTtcbiAgZXhlY3V0aW9uVGltZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVucmljaGVkIHJlc3BvbnNlIG9mIHRoZSBBUElcbiAqL1xuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBDaGF0UmVzcG9uc2UgZXh0ZW5kcyBSYXdSZXNwb25zZXtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbn1cblxuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBHbGxtTW9kZWxEZXNjcmlwdGlvbiB7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VJZDogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgZW5hYmxlOiBib29sZWFuO1xuICBzdXBwb3J0U3RyZWFtaW5nOiBib29sZWFuO1xuICBzdXBwb3J0RnVuY3Rpb25zOiBib29sZWFuO1xufVxuXG4vLyBET05FXG5leHBvcnQgaW50ZXJmYWNlIEdsbG1GdW5jdGlvbiB7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBHbGxtRnVuY3Rpb25QYXJhbWV0ZXJbXTtcbn1cblxuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBHbGxtRnVuY3Rpb25QYXJhbWV0ZXIge1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JlcXVpcmVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNaW5pbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgc2F2ZWQgY2hhdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhdmVkQ2hhdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG1vZGlmaWVkVVRDOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YSBzdHJ1Y3R1cmUgc2F2ZWQgdG8gcmVjb25zdHJ1Y3QgYSBjb252ZXJzYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXRIaXN0b3J5IGV4dGVuZHMgU2F2ZWRDaGF0e1xuICBIaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xufVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdsb2JhbFNldHRpbmdzIG9iamVjdFxuZXhwb3J0IGNvbnN0IGdsb2JhbFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICByZXN0RW5kcG9pbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgd2Vic29ja2V0RW5kcG9pbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc2lnbmFsUlRyYW5zcG9ydDogei5lbnVtKFtcIldlYlNvY2tldHNcIiwgXCJTZXJ2ZXJTZW50RXZlbnRzXCIsIFwiTG9uZ1BvbGxpbmdcIiwgXCJOb25lXCJdKSxcbiAgc2lnbmFsUkxvZ0xldmVsOiB6LmVudW0oW1wiQ3JpdGljYWxcIiwgXCJEZWJ1Z1wiLCBcIkVycm9yXCIsIFwiSW5mb3JtYXRpb25cIiwgXCJOb25lXCIsIFwiVHJhY2VcIiwgXCJXYXJuaW5nXCJdKVxufSkucmVmaW5lKGRhdGEgPT4gKCEhZGF0YS5yZXN0RW5kcG9pbnQgfHwgISFkYXRhLndlYnNvY2tldEVuZHBvaW50KSwge1xuICBtZXNzYWdlOiBcIkJhc2VkIG9uIHRoZSBwcm92aWRlZCBpbnB1dCgpIHByb3RvY29sICgnUkVTVCcgb3IgJ1dFQlNPQ0tFVCcpIHRvIHRoZSBDaGF0IENvbXBvbmVudCwgZWl0aGVyICdyZXN0RW5kcG9pbnQnIG9yICd3ZWJzb2NrZXRFbmRwb2ludCcgcHJvcGVydHkgc2hvdWxkIGJlIHByb3ZpZGVkIGluIHRoZSAnZ2xvYmFsU2V0dGluZ3MnIG9mIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UuXCIsXG59KTtcbi8vIERlZmluZSB0aGUgR2xvYmFsU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgdHlwZSBHbG9iYWxTZXR0aW5ncyA9IHouaW5mZXI8dHlwZW9mIGdsb2JhbFNldHRpbmdzU2NoZW1hPjtcblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBzZXJ2aWNlU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzZXJ2aWNlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHNlcnZpY2VfaWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsX2lkOiB6LnN0cmluZygpLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKSxcbiAgdG9wX3A6IHoubnVtYmVyKCksXG4gIG1heFRva2Vuczogei5udW1iZXIoKSxcbiAgcmVzdWx0c19wZXJfcHJvbXB0OiB6Lm51bWJlcigpLFxuICBwcmVzZW5jZV9wZW5hbHR5OiB6Lm51bWJlcigpLFxuICBmcmVxdWVuY3lfcGVuYWx0eTogei5udW1iZXIoKSxcbn0pO1xuLy8gRGVmaW5lIHRoZSBTZXJ2aWNlU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VTZXR0aW5ncyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIHNlcnZpY2VTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBUZXh0Q2h1bmtzT3B0aW9ucyBpbnRlcmZhY2VcbmNvbnN0IHRleHRDaHVua3NPcHRpb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBleHRlbmRNb2RlOiB6LmVudW0oWydOb25lJywgJ1NlbnRlbmNlJywgJ0NoYXJzJ10pLm9wdGlvbmFsKCksXG4gIGV4dGVuZFNjb3BlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59KTtcbi8vIERlZmluZSB0aGUgVGV4dENodW5rc09wdGlvbnMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDaHVua3NPcHRpb25zIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgdGV4dENodW5rc09wdGlvbnNTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29udGV4dE9wdGlvbnMgb2JqZWN0XG5jb25zdCBjb250ZXh0T3B0aW9uc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZG9jQ29sdW1uczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgdGV4dENodW5rRmlsbEdhcHM6IHoubnVtYmVyKCksXG4gIGh0bWw6IHouYm9vbGVhbigpLFxuICB0b3BQYXNzYWdlc09wdGlvbnM6IHoub2JqZWN0KHtcbiAgICB0b3BQYXNzYWdlczogei5udW1iZXIoKSxcbiAgICB0b3BQYXNzYWdlc01pblNjb3JlOiB6Lm51bWJlcigpLFxuICAgIHRleHRDaHVua09wdGlvbnM6IHRleHRDaHVua3NPcHRpb25zU2NoZW1hLFxuICB9KSxcbiAgbWF0Y2hpbmdQYXNzYWdlc09wdGlvbnM6IHoub2JqZWN0KHtcbiAgICBtYXRjaGluZ1Bhc3NhZ2VzUGVyRG9jOiB6Lm51bWJlcigpLFxuICAgIGZyb21Ub3BEb2N1bWVudHM6IHoubnVtYmVyKCksXG4gICAgbWF0Y2hpbmdQYXNzYWdlc01pblNjb3JlOiB6Lm51bWJlcigpLFxuICAgIHRleHRDaHVua09wdGlvbnM6IHRleHRDaHVua3NPcHRpb25zU2NoZW1hLFxuICB9KSxcbiAgcmVsZXZhbnRFeHRyYWN0c09wdGlvbnM6IHoub2JqZWN0KHtcbiAgICB0b3BSZWxldmFudEV4dHJhY3RzUGVyRG9jOiB6Lm51bWJlcigpLFxuICAgIGZyb21Ub3BEb2N1bWVudHM6IHoubnVtYmVyKCksXG4gICAgdGV4dENodW5rT3B0aW9uczogdGV4dENodW5rc09wdGlvbnNTY2hlbWEsXG4gIH0pLFxuICBodG1sT3B0aW9uczogei5vYmplY3Qoe1xuICAgIGltYWdlczogei5ib29sZWFuKCksXG4gICAgbGlua3M6IHouYm9vbGVhbigpLFxuICAgIHRhYmxlczogei5ib29sZWFuKCksXG4gICAgZXh0ZW5kVGFibGVzOiB6LmJvb2xlYW4oKSxcbiAgfSksXG59KTtcbi8vIERlZmluZSB0aGUgQ29udGV4dE9wdGlvbnMgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRPcHRpb25zIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgY29udGV4dE9wdGlvbnNTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29udGV4dFNldHRpbmdzIG9iamVjdFxuY29uc3QgY29udGV4dFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBhcHA6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcXVlcnk6IHoub2JqZWN0KHt9KS5vcHRpb25hbCgpLFxuICBjb250ZXh0T3B0aW9uczogY29udGV4dE9wdGlvbnNTY2hlbWEsXG59KTtcbi8vIERlZmluZSB0aGUgQ29udGV4dFNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBjb250ZXh0U2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgdWlTZXR0aW5ncyBvYmplY3RcbmNvbnN0IHVpU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRpc3BsYXk6IHouYm9vbGVhbigpLFxuICBzZXJ2aWNlc01vZGVsczogei5ib29sZWFuKCksXG4gIGZ1bmN0aW9uczogei5ib29sZWFuKCksXG4gIHRlbXBlcmF0dXJlOiB6LmJvb2xlYW4oKSxcbiAgdG9wX3A6IHouYm9vbGVhbigpLFxuICBtYXhUb2tlbnM6IHouYm9vbGVhbigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCksXG4gIGRpc3BsYXlTeXN0ZW1Qcm9tcHQ6IHouYm9vbGVhbigpLFxuICBzeXN0ZW1Qcm9tcHQ6IHouc3RyaW5nKCksXG4gIGRpc3BsYXlVc2VyUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgdXNlclByb21wdDogei5zdHJpbmcoKSxcbn0pO1xuLy8gRGVmaW5lIHRoZSBVaVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBVaVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgdWlTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBlbnRpcmUgQ2hhdENvbmZpZyBvYmplY3RcbmV4cG9ydCBjb25zdCBjaGF0Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBnbG9iYWxTZXR0aW5nczogZ2xvYmFsU2V0dGluZ3NTY2hlbWEsXG4gIHNlcnZpY2VTZXR0aW5nczogc2VydmljZVNldHRpbmdzU2NoZW1hLFxuICBjb250ZXh0U2V0dGluZ3M6IGNvbnRleHRTZXR0aW5nc1NjaGVtYSxcbiAgdWlTZXR0aW5nczogdWlTZXR0aW5nc1NjaGVtYSxcbiAgZnVuY3Rpb25zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICBkZWJ1Zzogei5ib29sZWFuKCksXG4gIHNhdmVDaGF0czogei5ib29sZWFuKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBVaVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDaGF0Q29uZmlnIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgY2hhdENvbmZpZ1NjaGVtYT4ge31cblxuLy8gRE9ORVxuZXhwb3J0IGludGVyZmFjZSBDaGF0UGF5bG9hZCB7XG4gIGZ1bmN0aW9uczogc3RyaW5nW107XG4gIGRlYnVnOiBib29sZWFuO1xuICBzZXJ2aWNlU2V0dGluZ3M6IFNlcnZpY2VTZXR0aW5ncztcbiAgY29udGV4dFNldHRpbmdzOiBDb250ZXh0U2V0dGluZ3M7XG4gIGhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG4gIGluc3RhbmNlSWQ/OiBzdHJpbmc7XG4gIHNhdmVkQ2hhdElkPzogc3RyaW5nO1xufVxuLy8gRE9ORVxuZXhwb3J0IHR5cGUgQWN0aW9uTWVzc2FnZSA9IHtcbiAgZ3VpZDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZT86IHN0cmluZ1xuICBkaXNwbGF5VmFsdWU/OiBzdHJpbmc7XG4gIGV4ZWN1dGlvblRpbWU/OiBudW1iZXI7XG59XG4vLyBET05FXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDaHVua3NPcHRpb25zIHtcbiAgZXh0ZW5kTW9kZT86ICdOb25lJyB8ICdTZW50ZW5jZScgfCAnQ2hhcnMnO1xuICBleHRlbmRTY29wZT86IG51bWJlcjtcbn1cbi8vIERPTkVcbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGEge1xuICBsYXN0UmVxdWVzdDogc3RyaW5nO1xuICBwcm9tcHRUb2tlbkNvdW50OiBudW1iZXI7XG4gIGNvbXBsZXRpb25Ub2tlbkNvdW50OiBudW1iZXI7XG4gIHBlcmlvZFRva2VuczogbnVtYmVyO1xuICByZXNldEhvdXJzOiBudW1iZXI7XG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgbmV4dFJlc2V0OiBzdHJpbmc7XG4gIGxhc3RSZXNldFVUQzogc3RyaW5nO1xuICBuZXh0UmVzZXRVVEM6IHN0cmluZztcbiAgbWF4UXVvdGFSZWFjaGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIExpc3Qgb2YgZXZlbnRzIGRhdGEgdGhhdCBjYW4gYmUgZW1pdHRlZCBieSB0aGUgd2Vic29ja2V0IGNoYXQgZW5kcG9pbnRcbiAqL1xuLy8gRE9ORVxuZXhwb3J0IHR5cGUgUXVvdGFFdmVudCA9IHsgcXVvdGE6IFF1b3RhIH07XG5leHBvcnQgdHlwZSBNZXNzYWdlRXZlbnQgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBDb250ZXh0TWVzc2FnZUV2ZW50ID0geyBjb250ZW50OiBzdHJpbmc7IG1ldGFkYXRhOiBDaGF0Q29udGV4dEF0dGFjaG1lbnQgfTtcbmV4cG9ydCB0eXBlIEVycm9yRXZlbnQgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBBY3Rpb25TdGFydEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGRpc3BsYXlOYW1lOiBzdHJpbmcgfTtcbmV4cG9ydCB0eXBlIEFjdGlvblJlc3VsdEV2ZW50ID0geyBndWlkOiBzdHJpbmc7IGRpc3BsYXlWYWx1ZTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBBY3Rpb25TdG9wRXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZXhlY3V0aW9uVGltZTogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBIaXN0b3J5RXZlbnQgPSB7IGhpc3Rvcnk6IFJhd01lc3NhZ2VbXTsgZXhlY3V0aW9uVGltZTogc3RyaW5nIH07XG5cbi8qKlxuICogRGF0YSBlbWl0dGVkIGJ5IHRoZSBodHRwIGNoYXQgZW5kcG9pbnRcbiAqL1xuLy8gRE9ORVxuZXhwb3J0IHR5cGUgSHR0cENoYXRSZXNwb25zZSA9IHtcbiAgcXVvdGE6IFF1b3RhO1xuICBkZWJ1ZzogYW55O1xuICBjb250ZXh0OiB7IGNvbnRlbnQ6IHN0cmluZzsgYWRkaXRpb25hbFByb3BlcnRpZXM6IENoYXRDb250ZXh0QXR0YWNobWVudCB9W107XG4gIGFjdGlvbnM6IEFjdGlvbk1lc3NhZ2VbXTtcbiAgaGlzdG9yeTogUmF3TWVzc2FnZVtdO1xuICBleGVjdXRpb25UaW1lOiBzdHJpbmc7XG59XG4vLyBET05FXG5leHBvcnQgdHlwZSBNZXNzYWdlSGFuZGxlcjxUPiA9IHtcbiAgaGFuZGxlcjogKGRhdGE6IFQpID0+IHZvaWQ7XG4gIGlzR2xvYmFsSGFuZGxlcjogYm9vbGVhbjtcbn07XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBaUl4QixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Q0FDbkcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQ25FLE9BQU8sRUFBRSxtTkFBbU47Q0FDN04sQ0FBQyxDQUFDO0FBSUgsK0RBQStEO0FBQy9ELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUN2QixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFB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LENBQUMsT0FBTyxFQUFFO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQ3JCLENBQUMsQ0FBQTtBQUlGLDhEQUE4RDtBQUM5RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbEMsQ0FBQyxDQUFBO0FBSUYsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLGFBQWEsRUFBRSxtQkFBbUI7SUFDbEMsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxVQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLHlCQUF5QixFQUFFLCtCQUErQjtJQUMxRCxpQkFBaUIsRUFBRSx1QkFBdUI7SUFDMUMsY0FBYyxFQUFFLG9CQUFvQjtDQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcbmltcG9ydCB7IFJlY29yZCB9IGZyb20gXCJAc2luZXF1YS9jb3JlL3dlYi1zZXJ2aWNlc1wiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tICdAc2luZXF1YS9jb3JlL2FwcC11dGlscyc7XG5cbi8qKlxuICogSW5kaXZpZHVhbCBtZXNzYWdlIHNlbnQgJiByZXR1cm5lZCBieSB0aGUgQ2hhdEdQVCBBUEkuXG4gKiBJZiB0aGlzIG1lc3NhZ2UgaXMgYW4gYXR0YWNobWVudCwgd2UgYXR0YWNoIHRoZSBtaW5pbWFsXG4gKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhpcyBhdHRhY2htZW50IChSYXdBdHRhY2htZW50KVxuICogYXMgd2VsbCBhcyB0aGUgcmVmZXJlbmNlIGlkIGNvbXB1dGVkIGF0IHRoZSBtb21lbnQgb2Ygc2VuZGluZ1xuICogdGhlIGF0dGFjaG1lbnQgdG8gdGhlIEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdNZXNzYWdlIHtcbiAgcm9sZTogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gIH07XG59XG5cbi8qKlxuICogQSBjaGF0IG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBwcm9jZXNzZWQgdG8gaW5jbHVkZSB0aGUgbWFya2Rvd24tZm9ybWF0dGVkXG4gKiBjb250ZW50IGZvciBkaXNwbGF5LCBhcyB3ZWxsIGFzIGRldGFpbGVkIGF0dGFjaG1lbnQgZGF0YSwgYW5kIG9wdGlvbmFsbHlcbiAqIGEgbGlzdCBvZiB0aGUgcmVmZXJlbmNlcyBleHRyYWN0ZWQgZnJvbSB0aGF0IG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0TWVzc2FnZSBleHRlbmRzIFJhd01lc3NhZ2Uge1xuICBhZGRpdGlvbmFsUHJvcGVydGllczoge1xuICAgIGRpc3BsYXk/OiBib29sZWFuO1xuICAgICRwcm9ncmVzcz86IENoYXRQcm9ncmVzc1tdO1xuICAgICRhdHRhY2htZW50PzogQ2hhdENvbnRleHRBdHRhY2htZW50W107XG4gICAgZm9yY2VkV29ya2Zsb3c/OiBzdHJpbmc7XG4gICAgcXVlcnk/OiBRdWVyeTtcbiAgICBpc1VzZXJJbnB1dD86IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRQcm9ncmVzcyB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBjb250ZW50Pzogc3RyaW5nO1xuICAgIGRvbmU/OiBib29sZWFuO1xuICAgIHRpbWU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmF3QXR0YWNobWVudCB7XG4gIC8qKiBUeXBlIG9mIHRoZSBhdHRhY2htZW50ICovXG4gIHR5cGU6IHN0cmluZztcbiAgLyoqIFJlY29yZCBpZCBmcm9tIHdoaWNoIHRoaXMgYXR0YWNobWVudCBpcyB0YWtlbiAqL1xuICByZWNvcmRJZDogc3RyaW5nO1xuICAvKiogUmVjb3JkIGZyb20gd2hpY2ggdGhpcyB0aGlzIGF0dGFjaG1lbnQgaXMgdGFrZW4gKi9cbiAgcmVjb3JkOiBSZWNvcmQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRQYXJ0IHtcbiAgcGFydElkOiBudW1iZXI7XG4gIG9mZnNldDogbnVtYmVyO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRDb250ZXh0QXR0YWNobWVudCBleHRlbmRzIFJhd0F0dGFjaG1lbnQge1xuICAvKiogVHlwZSBvZiB0aGUgYXR0YWNobWVudCAqL1xuICB0eXBlOiBcIkNvbnRleHRcIjtcbiAgLyoqIFJhbmsgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIGNvbnRleHQgbWVzc2FnZSAqL1xuICBjb250ZXh0SWQ6IG51bWJlcjtcbiAgLyoqIFBhcnRzIG9mIHRoZSByZWNvcmQgdGhhdCB0aGUgYXNzaXN0YW50IHVzZXMgdG8gYW5zd2VyICovXG4gIHBhcnRzOiBEb2N1bWVudFBhcnRbXTtcbiAgLyoqIFRoZSBzcGVjaWZpYyBpZCBvZiB1c2VkIHRoZSByZWZlcmVuY2VkIHBhcnQgKi9cbiAgJHBhcnRJZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSYXcgcmVzcG9uc2Ugb2YgdGhlIGNoYXQgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF3UmVzcG9uc2Uge1xuICBoaXN0b3J5OiBSYXdNZXNzYWdlW107XG4gIGV4ZWN1dGlvblRpbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnJpY2hlZCByZXNwb25zZSBvZiB0aGUgY2hhdCBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGF0UmVzcG9uc2UgZXh0ZW5kcyBSYXdSZXNwb25zZXtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBvZiB0aGUgTGlzdE1vZGVscyBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbGxtTW9kZWxEZXNjcmlwdGlvbiB7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VJZDogc3RyaW5nO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIGVuYWJsZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBvZiB0aGUgTGlzdEZ1bmN0aW9ucyBBUElcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbGxtRnVuY3Rpb24ge1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcGFyYW1ldGVyczogR2xsbUZ1bmN0aW9uUGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xsbUZ1bmN0aW9uUGFyYW1ldGVyIHtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWluaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIHNhdmVkIGNoYXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXQge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBtb2RpZmllZFVUQzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdGEgc3RydWN0dXJlIHNhdmVkIHRvIHJlY29uc3RydWN0IGEgc2F2ZWQgY2hhdCBjb252ZXJzYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXZlZENoYXRIaXN0b3J5IGV4dGVuZHMgU2F2ZWRDaGF0e1xuICBoaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xufVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGNvbm5lY3Rpb25TZXR0aW5ncyBvYmplY3RcbmV4cG9ydCBjb25zdCBjb25uZWN0aW9uU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHJlc3RFbmRwb2ludDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB3ZWJzb2NrZXRFbmRwb2ludDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaWduYWxSVHJhbnNwb3J0OiB6LmVudW0oW1wiV2ViU29ja2V0c1wiLCBcIlNlcnZlclNlbnRFdmVudHNcIiwgXCJMb25nUG9sbGluZ1wiLCBcIk5vbmVcIl0pLFxuICBzaWduYWxSTG9nTGV2ZWw6IHouZW51bShbXCJDcml0aWNhbFwiLCBcIkRlYnVnXCIsIFwiRXJyb3JcIiwgXCJJbmZvcm1hdGlvblwiLCBcIk5vbmVcIiwgXCJUcmFjZVwiLCBcIldhcm5pbmdcIl0pXG59KS5yZWZpbmUoZGF0YSA9PiAoISFkYXRhLnJlc3RFbmRwb2ludCB8fCAhIWRhdGEud2Vic29ja2V0RW5kcG9pbnQpLCB7XG4gIG1lc3NhZ2U6IFwiQmFzZWQgb24gdGhlIHByb3ZpZGVkIGlucHV0KCkgcHJvdG9jb2wgKCdSRVNUJyBvciAnV0VCU09DS0VUJykgdG8gdGhlIENoYXQgQ29tcG9uZW50LCBlaXRoZXIgJ3Jlc3RFbmRwb2ludCcgb3IgJ3dlYnNvY2tldEVuZHBvaW50JyBwcm9wZXJ0eSBzaG91bGQgYmUgcHJvdmlkZWQgaW4gdGhlICdnbG9iYWxTZXR0aW5ncycgb2YgdGhlIGFzc2lzdGFudCBpbnN0YW5jZS5cIixcbn0pO1xuLy8gRGVmaW5lIHRoZSBDb25uZWN0aW9uU2V0dGluZ3MgaW50ZXJmYWNlXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uU2V0dGluZ3MgPSB6LmluZmVyPHR5cGVvZiBjb25uZWN0aW9uU2V0dGluZ3NTY2hlbWE+O1xuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHNlcnZpY2VTZXR0aW5ncyBvYmplY3RcbmNvbnN0IHNlcnZpY2VTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2VydmljZV9pZDogei5zdHJpbmcoKSxcbiAgbW9kZWxfaWQ6IHouc3RyaW5nKCksXG4gIHRlbXBlcmF0dXJlOiB6Lm51bWJlcigpLFxuICB0b3BfcDogei5udW1iZXIoKSxcbiAgbWF4X3Rva2Vuczogei5udW1iZXIoKVxufSk7XG4vLyBEZWZpbmUgdGhlIFNlcnZpY2VTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2Ygc2VydmljZVNldHRpbmdzU2NoZW1hPiB7fVxuXG4vLyBEZWZpbmUgdGhlIFpvZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBhZGRpdGlvbmFsU2VydmljZVNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe30pO1xuLy8gRGVmaW5lIHRoZSBBZGRpdGlvbmFsU2VydmljZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBZGRpdGlvbmFsU2VydmljZVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgYWRkaXRpb25hbFNlcnZpY2VTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSB1aVNldHRpbmdzIG9iamVjdFxuY29uc3QgdWlTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZGlzcGxheTogei5ib29sZWFuKCksXG4gIHNlcnZpY2VzTW9kZWxzOiB6LmJvb2xlYW4oKSxcbiAgZnVuY3Rpb25zOiB6LmJvb2xlYW4oKSxcbiAgdGVtcGVyYXR1cmU6IHouYm9vbGVhbigpLFxuICB0b3BfcDogei5ib29sZWFuKCksXG4gIG1heF90b2tlbnM6IHouYm9vbGVhbigpLFxuICBkZWJ1Zzogei5ib29sZWFuKCksXG4gIGRpc3BsYXlTeXN0ZW1Qcm9tcHQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5VXNlclByb21wdDogei5ib29sZWFuKClcbn0pO1xuLy8gRGVmaW5lIHRoZSBVaVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBVaVNldHRpbmdzIGV4dGVuZHMgei5pbmZlcjx0eXBlb2YgdWlTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBkZWZhdWx0VmFsdWVzIG9iamVjdFxuY29uc3QgZGVmYXVsdFZhbHVlc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgc2VydmljZV9pZDogei5zdHJpbmcoKSxcbiAgbW9kZWxfaWQ6IHouc3RyaW5nKCksXG4gIGZ1bmN0aW9uczogei5hcnJheShcbiAgICB6Lm9iamVjdCh7XG4gICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgZW5hYmxlZDogei5ib29sZWFuKClcbiAgICB9KVxuICApLFxuICB0ZW1wZXJhdHVyZTogei5udW1iZXIoKSxcbiAgdG9wX3A6IHoubnVtYmVyKCksXG4gIG1heF90b2tlbnM6IHoubnVtYmVyKCksXG4gIGRlYnVnOiB6LmJvb2xlYW4oKSxcbiAgc3lzdGVtUHJvbXB0OiB6LnN0cmluZygpLFxuICB1c2VyUHJvbXB0OiB6LnN0cmluZygpXG59KTtcbi8vIERlZmluZSB0aGUgRGVmYXVsdFZhbHVlcyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFZhbHVlcyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGRlZmF1bHRWYWx1ZXNTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbW9kZVNldHRpbmdzIG9iamVjdFxuY29uc3QgaW5pdGlhbGl6YXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGV2ZW50OiB6LmVudW0oWydRdWVyeScsICdQcm9tcHQnXSksXG4gIGZvcmNlZFdvcmtmbG93OiB6LnN0cmluZygpLm9wdGlvbmFsKCksIC8vIE9wdGlvbmFsIGZvciBldmVudCAnUHJvbXB0J1xuICBkaXNwbGF5VXNlclF1ZXJ5OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLCAvLyBPcHRpb25hbCBmb3IgZXZlbnQgJ1Byb21wdCdcbn0pLnJlZmluZShkYXRhID0+ICgoZGF0YS5ldmVudCA9PT0gXCJRdWVyeVwiKSA/ICghIWRhdGEuZm9yY2VkV29ya2Zsb3cgJiYgZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kaXNwbGF5VXNlclF1ZXJ5ICE9PSBudWxsKSA6IHRydWUpLCB7XG4gIG1lc3NhZ2U6IFwiVGhlICdmb3JjZWRXb3JrZmxvdycgYW5kICdkaXNwbGF5VXNlclF1ZXJ5JyBwcm9wZXJ0aWVzIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24ncyBldmVudCBpcyAnUXVlcnknLlwiLFxufSk7XG5jb25zdCBtb2RlU2V0dGluZ3NTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuYWJsZWRVc2VySW5wdXQ6IHouYm9vbGVhbigpLFxuICBkaXNwbGF5VXNlclByb21wdDogei5ib29sZWFuKCksXG4gIHNlbmRVc2VyUHJvbXB0OiB6LmJvb2xlYW4oKSxcbiAgaW5pdGlhbGl6YXRpb246IGluaXRpYWxpemF0aW9uU2NoZW1hXG59KTtcbi8vIERlZmluZSB0aGUgTW9kZVNldHRpbmdzIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBNb2RlU2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBtb2RlU2V0dGluZ3NTY2hlbWE+IHt9XG5cbi8vIERlZmluZSB0aGUgWm9kIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc2F2ZWRDaGF0U2V0dGluZ3Mgb2JqZWN0XG5jb25zdCBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgZW5hYmxlZDogei5ib29sZWFuKCksXG4gIGRpc3BsYXk6IHouYm9vbGVhbigpXG59KVxuLy8gRGVmaW5lIHRoZSBTYXZlZENoYXRTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBnbG9iYWxTZXR0aW5ncyBvYmplY3RcbmNvbnN0IGdsb2JhbFNldHRpbmdzU2NoZW1hID0gei5vYmplY3Qoe1xuICBkaXNjbGFpbWVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KVxuLy8gRGVmaW5lIHRoZSBTYXZlZENoYXRTZXR0aW5ncyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0U2V0dGluZ3MgZXh0ZW5kcyB6LmluZmVyPHR5cGVvZiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYT4ge31cblxuLy8gRGVmaW5lIHRoZSBab2QgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBlbnRpcmUgQ2hhdENvbmZpZyBvYmplY3RcbmV4cG9ydCBjb25zdCBjaGF0Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb25uZWN0aW9uU2V0dGluZ3M6IGNvbm5lY3Rpb25TZXR0aW5nc1NjaGVtYSxcbiAgZGVmYXVsdFZhbHVlczogZGVmYXVsdFZhbHVlc1NjaGVtYSxcbiAgbW9kZVNldHRpbmdzOiBtb2RlU2V0dGluZ3NTY2hlbWEsXG4gIHVpU2V0dGluZ3M6IHVpU2V0dGluZ3NTY2hlbWEsXG4gIGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3M6IGFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NTY2hlbWEsXG4gIHNhdmVkQ2hhdFNldHRpbmdzOiBzYXZlZENoYXRTZXR0aW5nc1NjaGVtYSxcbiAgZ2xvYmFsU2V0dGluZ3M6IGdsb2JhbFNldHRpbmdzU2NoZW1hXG59KTtcbi8vIERlZmluZSB0aGUgQ2hhdENvbmZpZyBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbmZpZyBleHRlbmRzIHouaW5mZXI8dHlwZW9mIGNoYXRDb25maWdTY2hlbWE+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFBheWxvYWQge1xuICBkZWJ1ZzogYm9vbGVhbjtcbiAgZnVuY3Rpb25zOiBzdHJpbmdbXTtcbiAgaGlzdG9yeTogQ2hhdE1lc3NhZ2VbXTtcbiAgc2VydmljZVNldHRpbmdzOiBTZXJ2aWNlU2V0dGluZ3M7XG4gIGFwcFF1ZXJ5OiB7XG4gICAgYXBwOiBzdHJpbmc7XG4gICAgcXVlcnk6IFF1ZXJ5IHwgdW5kZWZpbmVkO1xuICAgIHRhcmdldFVybD86IHN0cmluZztcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgfTtcbiAgaW5zdGFuY2VJZD86IHN0cmluZztcbiAgc2F2ZWRDaGF0SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFjdGlvbk1lc3NhZ2UgPSB7XG4gIGd1aWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmdcbiAgZGlzcGxheVZhbHVlPzogc3RyaW5nO1xuICBleGVjdXRpb25UaW1lPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDaHVua3NPcHRpb25zIHtcbiAgZXh0ZW5kTW9kZT86ICdOb25lJyB8ICdTZW50ZW5jZScgfCAnQ2hhcnMnO1xuICBleHRlbmRTY29wZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdW90YSB7XG4gIGxhc3RSZXF1ZXN0OiBzdHJpbmc7XG4gIHByb21wdFRva2VuQ291bnQ6IG51bWJlcjtcbiAgY29tcGxldGlvblRva2VuQ291bnQ6IG51bWJlcjtcbiAgcGVyaW9kVG9rZW5zOiBudW1iZXI7XG4gIHJlc2V0SG91cnM6IG51bWJlcjtcbiAgdG9rZW5Db3VudDogbnVtYmVyO1xuICBuZXh0UmVzZXQ6IHN0cmluZztcbiAgbGFzdFJlc2V0VVRDOiBzdHJpbmc7XG4gIG5leHRSZXNldFVUQzogc3RyaW5nO1xuICBtYXhRdW90YVJlYWNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogTGlzdCBvZiBldmVudHMgZGF0YSB0aGF0IGNhbiBiZSBlbWl0dGVkIGJ5IHRoZSB3ZWJzb2NrZXQgY2hhdCBlbmRwb2ludFxuICovXG5leHBvcnQgdHlwZSBRdW90YUV2ZW50ID0geyBxdW90YTogUXVvdGEgfTtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VFdmVudCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbnRleHRNZXNzYWdlRXZlbnQgPSB7IGNvbnRlbnQ6IHN0cmluZzsgbWV0YWRhdGE6IENoYXRDb250ZXh0QXR0YWNobWVudCB9O1xuZXhwb3J0IHR5cGUgRXJyb3JFdmVudCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIEFjdGlvblN0YXJ0RXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZGlzcGxheU5hbWU6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgQWN0aW9uUmVzdWx0RXZlbnQgPSB7IGd1aWQ6IHN0cmluZzsgZGlzcGxheVZhbHVlOiBzdHJpbmcgfTtcbmV4cG9ydCB0eXBlIEFjdGlvblN0b3BFdmVudCA9IHsgZ3VpZDogc3RyaW5nOyBleGVjdXRpb25UaW1lOiBudW1iZXIgfTtcbmV4cG9ydCB0eXBlIEhpc3RvcnlFdmVudCA9IHsgaGlzdG9yeTogUmF3TWVzc2FnZVtdOyBleGVjdXRpb25UaW1lOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBEYXRhIGVtaXR0ZWQgYnkgdGhlIGh0dHAgY2hhdCBlbmRwb2ludFxuICovXG5leHBvcnQgdHlwZSBIdHRwQ2hhdFJlc3BvbnNlID0ge1xuICBxdW90YTogUXVvdGE7XG4gIGRlYnVnOiBhbnk7XG4gIGNvbnRleHQ6IHsgY29udGVudDogc3RyaW5nOyBhZGRpdGlvbmFsUHJvcGVydGllczogQ2hhdENvbnRleHRBdHRhY2htZW50IH1bXTtcbiAgYWN0aW9uczogQWN0aW9uTWVzc2FnZVtdO1xuICBoaXN0b3J5OiBSYXdNZXNzYWdlW107XG4gIGV4ZWN1dGlvblRpbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZUhhbmRsZXI8VD4gPSB7XG4gIGhhbmRsZXI6IChkYXRhOiBUKSA9PiB2b2lkO1xuICBpc0dsb2JhbEhhbmRsZXI6IGJvb2xlYW47XG59O1xuIl19