ato-water-lib 0.0.6 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # AtoWaterLib
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.1.0.
4
4
 
5
5
  ## Code scaffolding
6
6
 
@@ -1,26 +1,26 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { AtoWaterLibComponent } from './ato-water-lib.component';
3
- import { TestButtonComponent } from './test-button/test-button.component';
3
+ import { AtoFlowDiagramLibComponent } from './components/flow-diagram-lib/flow-diagram-lib.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class AtoWaterLibModule {
6
6
  }
7
7
  AtoWaterLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
8
  AtoWaterLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, declarations: [AtoWaterLibComponent,
9
- TestButtonComponent], exports: [AtoWaterLibComponent,
10
- TestButtonComponent] });
9
+ AtoFlowDiagramLibComponent], exports: [AtoWaterLibComponent,
10
+ AtoFlowDiagramLibComponent] });
11
11
  AtoWaterLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule });
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [
16
16
  AtoWaterLibComponent,
17
- TestButtonComponent
17
+ AtoFlowDiagramLibComponent
18
18
  ],
19
19
  imports: [],
20
20
  exports: [
21
21
  AtoWaterLibComponent,
22
- TestButtonComponent
22
+ AtoFlowDiagramLibComponent
23
23
  ]
24
24
  }]
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvLXdhdGVyLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvYXRvLXdhdGVyLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFnQjFFLE1BQU0sT0FBTyxpQkFBaUI7OytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFWMUIsb0JBQW9CO1FBQ3BCLG1CQUFtQixhQUtuQixvQkFBb0I7UUFDcEIsbUJBQW1CO2dIQUdWLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQVo3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFLEVBQ1I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdG9XYXRlckxpYkNvbXBvbmVudCB9IGZyb20gJy4vYXRvLXdhdGVyLWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1idXR0b24vdGVzdC1idXR0b24uY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEF0b1dhdGVyTGliQ29tcG9uZW50LFxuICAgIFRlc3RCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQXRvV2F0ZXJMaWJDb21wb25lbnQsXG4gICAgVGVzdEJ1dHRvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF0b1dhdGVyTGliTW9kdWxlIHsgfVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvLXdhdGVyLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvYXRvLXdhdGVyLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7QUFjdEcsTUFBTSxPQUFPLGlCQUFpQjs7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQVYxQixvQkFBb0I7UUFDcEIsMEJBQTBCLGFBSzFCLG9CQUFvQjtRQUNwQiwwQkFBMEI7Z0hBR2pCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQVo3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFLEVBQ1I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdG9XYXRlckxpYkNvbXBvbmVudCB9IGZyb20gJy4vYXRvLXdhdGVyLWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRvRmxvd0RpYWdyYW1MaWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmxvdy1kaWFncmFtLWxpYi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEF0b1dhdGVyTGliQ29tcG9uZW50LFxuICAgIEF0b0Zsb3dEaWFncmFtTGliQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEF0b1dhdGVyTGliQ29tcG9uZW50LFxuICAgIEF0b0Zsb3dEaWFncmFtTGliQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXRvV2F0ZXJMaWJNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import _ from 'lodash';
3
+ import { AtoDefaultGojsEditor } from '../../models/default-gojs-editor.model';
4
+ import { GojsEditorModel } from '../../models/gojs-editor.model';
5
+ import * as i0 from "@angular/core";
6
+ export class AtoFlowDiagramLibComponent extends AtoDefaultGojsEditor {
7
+ set data(v) {
8
+ this._data = v;
9
+ this.loadDiagram();
10
+ }
11
+ get data() {
12
+ return this._data;
13
+ }
14
+ constructor() {
15
+ super();
16
+ this._data = null;
17
+ this.isLoading = false;
18
+ this.actions = [
19
+ AtoDefaultGojsEditor.ACTIONS[AtoDefaultGojsEditor.ENUM_ACTIONS.DETAILS],
20
+ AtoDefaultGojsEditor.ACTIONS[AtoDefaultGojsEditor.ENUM_ACTIONS.DELETE],
21
+ ];
22
+ this.unsubscribeAll();
23
+ }
24
+ ngOnInit() {
25
+ this.addSubscribes(this.committedTransactionSubject?.subscribe((e) => {
26
+ this.onModelChangeListenerEvent.emit(e);
27
+ }));
28
+ }
29
+ loadDiagram() {
30
+ if (this.data?.nodeDataArray?.length && !!this.showNotificationIcon) {
31
+ _.map(this.data?.nodeDataArray, (node) => {
32
+ // if (node?.type === GojsEditorModel.ENUM_TEMPLATES.TEXT_NODE) {
33
+ // node.recommendation = _.some(
34
+ // this._RecommendationsService.activeRecommendations$?.value,
35
+ // (x) => x?.BoxId === node?.id,
36
+ // );
37
+ // // node.discoveries = !!_.get(
38
+ // // this._RecommendationsService.activeDiscoveries$?.value,
39
+ // // `${ENUM_KPI_METRIC.TOPOLOGY}-${node?.id}.0`,
40
+ // // null,
41
+ // // );
42
+ // }
43
+ });
44
+ }
45
+ // setTimeout(() => {
46
+ this.editor = new GojsEditorModel({
47
+ class: 'go.GraphLinksModel',
48
+ nodeCategoryProperty: 'type',
49
+ ...this.data,
50
+ });
51
+ }
52
+ findNodeForKey(key) {
53
+ this.myDiagram.select(this.myDiagram.findNodeForKey(key));
54
+ }
55
+ }
56
+ AtoFlowDiagramLibComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoFlowDiagramLibComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
+ AtoFlowDiagramLibComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: { showNotificationIcon: "showNotificationIcon", data: "data", isLoading: "isLoading" }, viewQueries: [{ propertyName: "myDiagramDivTemp", first: true, predicate: ["myDiagramDivTemp"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <div tqlSpin [spinning]=\"data === null || !!isLoading\" class=\"w-100 h-100 gj-flow-diagram-wrapper\">\n <div class=\"w-100 h-100 d-flex\">\n <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu>\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <nz-empty nzNotFoundImage=\"simple\"></nz-empty>\n </div>\n </div>\n</div> -->\n<div style=\"height: 100%\" #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n", styles: [""] });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoFlowDiagramLibComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: 'ato-flow-diagram-lib', template: "<!-- <div tqlSpin [spinning]=\"data === null || !!isLoading\" class=\"w-100 h-100 gj-flow-diagram-wrapper\">\n <div class=\"w-100 h-100 d-flex\">\n <button\n id=\"actionMenuId\"\n class=\"invisible-btn\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n #menuTrigger=\"matMenuTrigger\"\n ></button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let item of actions\" (click)=\"item?.onClick($event)\">\n <div class=\"d-flex flex-gap-2\">\n <div><i class=\"{{ item?.iconClassName }}\"></i></div>\n <div>{{ item?.name }}</div>\n </div>\n </button>\n </mat-menu>\n\n <div #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n <div *ngIf=\"initialOptions?.isReadOnly && !data?.nodeDataArray?.length\" class=\"empty-data\">\n <nz-empty nzNotFoundImage=\"simple\"></nz-empty>\n </div>\n </div>\n</div> -->\n<div style=\"height: 100%\" #myDiagramDivTemp [id]=\"myDiagramDiv\" class=\"flex-grow-1\"></div>\n" }]
61
+ }], ctorParameters: function () { return []; }, propDecorators: { myDiagramDivTemp: [{
62
+ type: ViewChild,
63
+ args: ['myDiagramDivTemp']
64
+ }], showNotificationIcon: [{
65
+ type: Input
66
+ }], data: [{
67
+ type: Input
68
+ }], isLoading: [{
69
+ type: Input
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1kaWFncmFtLWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvY29tcG9uZW50cy9mbG93LWRpYWdyYW0tbGliL2Zsb3ctZGlhZ3JhbS1saWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvLXdhdGVyLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kaWFncmFtLWxpYi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQU9qRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsb0JBQW9CO0lBSWxFLElBQWEsSUFBSSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBZFosVUFBSyxHQUFRLElBQUksQ0FBQztRQU9ULGNBQVMsR0FBRyxLQUFLLENBQUM7UUFRdkIsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ3ZFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1NBQ3ZFLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxDQUNkLElBQUksQ0FBQywyQkFBMkIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQU9MLENBQUM7SUFDTixDQUFDO0lBS0QsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDakUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyQyxpRUFBaUU7Z0JBQ2pFLG9DQUFvQztnQkFDcEMsc0VBQXNFO2dCQUN0RSx3Q0FBd0M7Z0JBQ3hDLFNBQVM7Z0JBQ1QscUNBQXFDO2dCQUNyQyxxRUFBcUU7Z0JBQ3JFLDBEQUEwRDtnQkFDMUQsbUJBQW1CO2dCQUNuQixZQUFZO2dCQUNaLElBQUk7WUFDUixDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUM7WUFDOUIsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixvQkFBb0IsRUFBRSxNQUFNO1lBQzVCLEdBQUcsSUFBSSxDQUFDLElBQUk7U0FDZixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQW9CO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7d0hBckVVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLHlTQ1h2Qyx1bkNBeUJBOzRGRGRhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxzQkFBc0I7MEVBS0YsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFbkIsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNPLElBQUk7c0JBQWhCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBdG9EZWZhdWx0R29qc0VkaXRvciB9IGZyb20gJy4uLy4uL21vZGVscy9kZWZhdWx0LWdvanMtZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7IEdvanNFZGl0b3JNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nb2pzLWVkaXRvci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F0by1mbG93LWRpYWdyYW0tbGliJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctZGlhZ3JhbS1saWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBdG9GbG93RGlhZ3JhbUxpYkNvbXBvbmVudCBleHRlbmRzIEF0b0RlZmF1bHRHb2pzRWRpdG9yIGltcGxlbWVudHMgT25Jbml0ICB7XG4gQFZpZXdDaGlsZCgnbXlEaWFncmFtRGl2VGVtcCcpIG15RGlhZ3JhbURpdlRlbXA6IGFueTtcbiAgX2RhdGE6IGFueSA9IG51bGw7XG4gIEBJbnB1dCgpIHNob3dOb3RpZmljYXRpb25JY29uOyAvLyBBbGVydCwgUmVjb21tZW5kYXRpb24sIERpc2NvdmVyaWVzLlxuICBASW5wdXQoKSBzZXQgZGF0YSh2KSB7XG4gICAgICB0aGlzLl9kYXRhID0gdjtcbiAgICAgIHRoaXMubG9hZERpYWdyYW0oKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIGdldCBkYXRhKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICB0aGlzLmFjdGlvbnMgPSBbXG4gICAgICAgIEF0b0RlZmF1bHRHb2pzRWRpdG9yLkFDVElPTlNbQXRvRGVmYXVsdEdvanNFZGl0b3IuRU5VTV9BQ1RJT05TLkRFVEFJTFNdLFxuICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5BQ1RJT05TW0F0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERUxFVEVdLFxuICAgICAgXTtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcbiAgfVxuXG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuYWRkU3Vic2NyaWJlcyhcbiAgICAgICAgICB0aGlzLmNvbW1pdHRlZFRyYW5zYWN0aW9uU3ViamVjdD8uc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZUxpc3RlbmVyRXZlbnQuZW1pdChlKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyB0aGlzLl9HalV0aWxzU2VydmljZT8udXBkYXRlTmFtZURhdGFCb3gkPy5zdWJzY3JpYmUoKHJzKSA9PiB7XG4gICAgICAgICAgLy8gICAgIGlmIChycyAmJiBycz8ua2V5KSB7XG4gICAgICAgICAgLy8gICAgICAgICBjb25zdCBub2RlID0gdGhpcy5teURpYWdyYW0uZmluZE5vZGVGb3JLZXkocnM/LmtleSk7XG4gICAgICAgICAgLy8gICAgICAgICB0aGlzLm15RGlhZ3JhbS5tb2RlbC5zZXREYXRhUHJvcGVydHkobm9kZT8uZGF0YSwgJ25hbWUnLCBycz8ubmFtZSk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyB9KSxcbiAgICAgICk7XG4gIH1cblxuXG5cblxuICBsb2FkRGlhZ3JhbSgpIHtcbiAgICAgIGlmICh0aGlzLmRhdGE/Lm5vZGVEYXRhQXJyYXk/Lmxlbmd0aCAmJiAhIXRoaXMuc2hvd05vdGlmaWNhdGlvbkljb24pIHtcbiAgICAgICAgICBfLm1hcCh0aGlzLmRhdGE/Lm5vZGVEYXRhQXJyYXksIChub2RlKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGlmIChub2RlPy50eXBlID09PSBHb2pzRWRpdG9yTW9kZWwuRU5VTV9URU1QTEFURVMuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICAgIC8vICAgICBub2RlLnJlY29tbWVuZGF0aW9uID0gXy5zb21lKFxuICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX1JlY29tbWVuZGF0aW9uc1NlcnZpY2UuYWN0aXZlUmVjb21tZW5kYXRpb25zJD8udmFsdWUsXG4gICAgICAgICAgICAgIC8vICAgICAgICAgKHgpID0+IHg/LkJveElkID09PSBub2RlPy5pZCxcbiAgICAgICAgICAgICAgLy8gICAgICk7XG4gICAgICAgICAgICAgIC8vICAgICAvLyBub2RlLmRpc2NvdmVyaWVzID0gISFfLmdldChcbiAgICAgICAgICAgICAgLy8gICAgIC8vICAgICB0aGlzLl9SZWNvbW1lbmRhdGlvbnNTZXJ2aWNlLmFjdGl2ZURpc2NvdmVyaWVzJD8udmFsdWUsXG4gICAgICAgICAgICAgIC8vICAgICAvLyAgICAgYCR7RU5VTV9LUElfTUVUUklDLlRPUE9MT0dZfS0ke25vZGU/LmlkfS4wYCxcbiAgICAgICAgICAgICAgLy8gICAgIC8vICAgICBudWxsLFxuICAgICAgICAgICAgICAvLyAgICAgLy8gKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVkaXRvciA9IG5ldyBHb2pzRWRpdG9yTW9kZWwoe1xuICAgICAgICAgIGNsYXNzOiAnZ28uR3JhcGhMaW5rc01vZGVsJyxcbiAgICAgICAgICBub2RlQ2F0ZWdvcnlQcm9wZXJ0eTogJ3R5cGUnLFxuICAgICAgICAgIC4uLnRoaXMuZGF0YSxcbiAgICAgIH0pO1xuICB9XG5cbiAgZmluZE5vZGVGb3JLZXkoa2V5OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgIHRoaXMubXlEaWFncmFtLnNlbGVjdCh0aGlzLm15RGlhZ3JhbS5maW5kTm9kZUZvcktleShrZXkpKTtcbiAgfVxufVxuXG5cblxuXG5cbiIsIjwhLS0gPGRpdiB0cWxTcGluIFtzcGlubmluZ109XCJkYXRhID09PSBudWxsIHx8ICEhaXNMb2FkaW5nXCIgY2xhc3M9XCJ3LTEwMCBoLTEwMCBnai1mbG93LWRpYWdyYW0td3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXhcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJhY3Rpb25NZW51SWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbnZpc2libGUtYnRuXCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICNtZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uc1wiIChjbGljayk9XCJpdGVtPy5vbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj48aSBjbGFzcz1cInt7IGl0ZW0/Lmljb25DbGFzc05hbWUgfX1cIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaXRlbT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG5cbiAgICAgICAgPGRpdiAjbXlEaWFncmFtRGl2VGVtcCBbaWRdPVwibXlEaWFncmFtRGl2XCIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPjwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbE9wdGlvbnM/LmlzUmVhZE9ubHkgJiYgIWRhdGE/Lm5vZGVEYXRhQXJyYXk/Lmxlbmd0aFwiIGNsYXNzPVwiZW1wdHktZGF0YVwiPlxuICAgICAgICAgICAgPG56LWVtcHR5IG56Tm90Rm91bmRJbWFnZT1cInNpbXBsZVwiPjwvbnotZW1wdHk+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+IC0tPlxuPGRpdiBzdHlsZT1cImhlaWdodDogMTAwJVwiICNteURpYWdyYW1EaXZUZW1wIFtpZF09XCJteURpYWdyYW1EaXZcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+PC9kaXY+XG4iXX0=