ato-water-lib 0.0.7 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. package/esm2020/lib/ato-water-lib.module.mjs +16 -8
  2. package/esm2020/lib/components/asset-flow/asset-flow.component.mjs +56 -0
  3. package/esm2020/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +71 -0
  4. package/esm2020/lib/constants/applicable-prefixes-const.mjs +441 -0
  5. package/esm2020/lib/constants/components-group-const.mjs +1289 -0
  6. package/esm2020/lib/constants/key.const.mjs +4 -0
  7. package/esm2020/lib/constants/plant.constant.mjs +51 -0
  8. package/esm2020/lib/constants/value.const.mjs +782 -0
  9. package/esm2020/lib/models/default-gojs-editor.model.mjs +3184 -0
  10. package/esm2020/lib/models/gojs-editor.model.mjs +1750 -0
  11. package/esm2020/lib/services/utils/utils.service.mjs +133 -0
  12. package/esm2020/public-api.mjs +3 -2
  13. package/fesm2015/ato-water-lib.mjs +7645 -14
  14. package/fesm2015/ato-water-lib.mjs.map +1 -1
  15. package/fesm2020/ato-water-lib.mjs +7747 -14
  16. package/fesm2020/ato-water-lib.mjs.map +1 -1
  17. package/lib/ato-water-lib.module.d.ts +4 -2
  18. package/lib/components/asset-flow/asset-flow.component.d.ts +21 -0
  19. package/lib/components/flow-diagram-lib/flow-diagram-lib.component.d.ts +17 -0
  20. package/lib/constants/applicable-prefixes-const.d.ts +162 -0
  21. package/lib/constants/components-group-const.d.ts +1132 -0
  22. package/lib/constants/key.const.d.ts +1 -0
  23. package/lib/constants/plant.constant.d.ts +7 -0
  24. package/lib/constants/value.const.d.ts +71 -0
  25. package/lib/models/default-gojs-editor.model.d.ts +184 -0
  26. package/lib/models/gojs-editor.model.d.ts +435 -0
  27. package/lib/services/utils/utils.service.d.ts +24 -0
  28. package/package.json +1 -1
  29. package/public-api.d.ts +2 -1
  30. package/esm2020/lib/test-button/test-button.component.mjs +0 -11
  31. package/lib/test-button/test-button.component.d.ts +0 -5
@@ -1,26 +1,34 @@
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
+ import { AssetFlowComponent } from './components/asset-flow/asset-flow.component';
5
+ import { CommonModule } from '@angular/common';
4
6
  import * as i0 from "@angular/core";
5
7
  export class AtoWaterLibModule {
6
8
  }
7
9
  AtoWaterLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
10
  AtoWaterLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, declarations: [AtoWaterLibComponent,
9
- TestButtonComponent], exports: [AtoWaterLibComponent,
10
- TestButtonComponent] });
11
- AtoWaterLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule });
11
+ AtoFlowDiagramLibComponent,
12
+ AssetFlowComponent], imports: [CommonModule], exports: [AtoWaterLibComponent,
13
+ AtoFlowDiagramLibComponent,
14
+ AssetFlowComponent] });
15
+ AtoWaterLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, imports: [CommonModule] });
12
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AtoWaterLibModule, decorators: [{
13
17
  type: NgModule,
14
18
  args: [{
15
19
  declarations: [
16
20
  AtoWaterLibComponent,
17
- TestButtonComponent
21
+ AtoFlowDiagramLibComponent,
22
+ AssetFlowComponent,
23
+ ],
24
+ imports: [
25
+ CommonModule
18
26
  ],
19
- imports: [],
20
27
  exports: [
21
28
  AtoWaterLibComponent,
22
- TestButtonComponent
29
+ AtoFlowDiagramLibComponent,
30
+ AssetFlowComponent
23
31
  ]
24
32
  }]
25
33
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvLXdhdGVyLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvYXRvLXdhdGVyLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFnQjFFLE1BQU0sT0FBTyxpQkFBaUI7OytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFWMUIsb0JBQW9CO1FBQ3BCLG1CQUFtQixhQUtuQixvQkFBb0I7UUFDcEIsbUJBQW1CO2dIQUdWLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQVo3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFLEVBQ1I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdG9XYXRlckxpYkNvbXBvbmVudCB9IGZyb20gJy4vYXRvLXdhdGVyLWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1idXR0b24vdGVzdC1idXR0b24uY29tcG9uZW50JztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEF0b1dhdGVyTGliQ29tcG9uZW50LFxuICAgIFRlc3RCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQXRvV2F0ZXJMaWJDb21wb25lbnQsXG4gICAgVGVzdEJ1dHRvbkNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF0b1dhdGVyTGliTW9kdWxlIHsgfVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvLXdhdGVyLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvYXRvLXdhdGVyLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBaUIvQyxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBYjFCLG9CQUFvQjtRQUNwQiwwQkFBMEI7UUFDMUIsa0JBQWtCLGFBR2xCLFlBQVksYUFHWixvQkFBb0I7UUFDcEIsMEJBQTBCO1FBQzFCLGtCQUFrQjtnSEFHVCxpQkFBaUIsWUFSMUIsWUFBWTs0RkFRSCxpQkFBaUI7a0JBZjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIsa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdG9XYXRlckxpYkNvbXBvbmVudCB9IGZyb20gJy4vYXRvLXdhdGVyLWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXRvRmxvd0RpYWdyYW1MaWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmxvdy1kaWFncmFtLWxpYi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBc3NldEZsb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXNzZXQtZmxvdy9hc3NldC1mbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBdG9XYXRlckxpYkNvbXBvbmVudCxcbiAgICBBdG9GbG93RGlhZ3JhbUxpYkNvbXBvbmVudCxcbiAgICBBc3NldEZsb3dDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEF0b1dhdGVyTGliQ29tcG9uZW50LFxuICAgIEF0b0Zsb3dEaWFncmFtTGliQ29tcG9uZW50LFxuICAgIEFzc2V0Rmxvd0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEF0b1dhdGVyTGliTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,56 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import * as go from 'gojs';
3
+ import { ATO_COMPONENTS_GROUP_DATA } from '../../constants/components-group-const';
4
+ import { AtoFlowDiagramLibComponent } from '../flow-diagram-lib/flow-diagram-lib.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../flow-diagram-lib/flow-diagram-lib.component";
8
+ export class AssetFlowComponent {
9
+ constructor() {
10
+ this.onClickParamOfTableEvent = new EventEmitter();
11
+ this.$ = go.GraphObject.make;
12
+ this.options = {
13
+ layout: this.$(go.LayeredDigraphLayout, {
14
+ // direction: 0,
15
+ }),
16
+ // isReadOnly: true,
17
+ };
18
+ this.flowData = {};
19
+ }
20
+ ngOnInit() {
21
+ // this.flowData = {
22
+ // ...ATO_COMPONENTS_GROUP_DATA[this.systemType],
23
+ // linkFromPortIdProperty: 'fromPort',
24
+ // linkToPortIdProperty: 'toPort',
25
+ // };
26
+ this.getDefaultFlowData();
27
+ }
28
+ onClickParamOfTable($event) {
29
+ this.onClickParamOfTableEvent.emit($event);
30
+ }
31
+ getDefaultFlowData() {
32
+ return {
33
+ ...ATO_COMPONENTS_GROUP_DATA[this.systemType],
34
+ linkFromPortIdProperty: 'fromPort',
35
+ linkToPortIdProperty: 'toPort',
36
+ };
37
+ }
38
+ }
39
+ AssetFlowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssetFlowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
+ AssetFlowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AssetFlowComponent, selector: "ato-asset-flow", inputs: { selectedComponent: "selectedComponent", systemType: "systemType", flowData: "flowData" }, outputs: { onClickParamOfTableEvent: "onClickParamOfTableEvent" }, viewQueries: [{ propertyName: "gjFlowDiagramTemp", first: true, predicate: AtoFlowDiagramLibComponent, descendants: true }], ngImport: i0, template: "<div class=\"h-100\" style=\"height: 100%\">\n <!-- tqlSpin [spinning]=\"flowData === null\" [delay]=\"1000\" -->\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n ></ato-flow-diagram-lib>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AtoFlowDiagramLibComponent, selector: "ato-flow-diagram-lib", inputs: ["showNotificationIcon", "data", "isLoading"] }] });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AssetFlowComponent, decorators: [{
42
+ type: Component,
43
+ args: [{ selector: 'ato-asset-flow', template: "<div class=\"h-100\" style=\"height: 100%\">\n <!-- tqlSpin [spinning]=\"flowData === null\" [delay]=\"1000\" -->\n <ato-flow-diagram-lib\n *ngIf=\"flowData !== null\"\n #gjFlowDiagramTemp\n [data]=\"flowData\"\n [initialOptions]=\"options\"\n (onClikParamOfTable)=\"onClickParamOfTable($event)\"\n ></ato-flow-diagram-lib>\n</div>\n" }]
44
+ }], propDecorators: { gjFlowDiagramTemp: [{
45
+ type: ViewChild,
46
+ args: [AtoFlowDiagramLibComponent]
47
+ }], selectedComponent: [{
48
+ type: Input
49
+ }], systemType: [{
50
+ type: Input
51
+ }], onClickParamOfTableEvent: [{
52
+ type: Output
53
+ }], flowData: [{
54
+ type: Input
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvY29tcG9uZW50cy9hc3NldC1mbG93L2Fzc2V0LWZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvLXdhdGVyLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXNzZXQtZmxvdy9hc3NldC1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBTzVGLE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFTWSw2QkFBd0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRixNQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDeEIsWUFBTyxHQUFHO1lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLGdCQUFnQjthQUNuQixDQUFDO1lBQ0Ysb0JBQW9CO1NBQ3ZCLENBQUM7UUFDTyxhQUFRLEdBQVEsRUFBRSxDQUFDO0tBb0I3QjtJQW5CQyxRQUFRO1FBQ04sb0JBQW9CO1FBQ3BCLHFEQUFxRDtRQUNyRCwwQ0FBMEM7UUFDMUMsc0NBQXNDO1FBQ3RDLEtBQUs7UUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsbUJBQW1CLENBQUMsTUFBVztRQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTztZQUNMLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUM3QyxzQkFBc0IsRUFBRSxVQUFVO1lBQ2xDLG9CQUFvQixFQUFFLFFBQVE7U0FDakMsQ0FBQztJQUNGLENBQUM7O2dIQS9CVSxrQkFBa0I7b0dBQWxCLGtCQUFrQixnUkFDbEIsMEJBQTBCLGdEQ1p2QyxxV0FVQTs0RkRDYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQUthLGlCQUFpQjtzQkFBdkQsU0FBUzt1QkFBQywwQkFBMEI7Z0JBQzVCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFRRSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBnbyBmcm9tICdnb2pzJztcbmltcG9ydCB7IEFUT19DT01QT05FTlRTX0dST1VQX0RBVEEgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tcG9uZW50cy1ncm91cC1jb25zdCc7XG5pbXBvcnQgeyBBdG9Hb2pzRWRpdG9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ29qcy1lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHsgQXRvRmxvd0RpYWdyYW1MaWJDb21wb25lbnQgfSBmcm9tICcuLi9mbG93LWRpYWdyYW0tbGliL2Zsb3ctZGlhZ3JhbS1saWIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXRvLWFzc2V0LWZsb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Fzc2V0LWZsb3cuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0Rmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoQXRvRmxvd0RpYWdyYW1MaWJDb21wb25lbnQpIGdqRmxvd0RpYWdyYW1UZW1wOiBBdG9GbG93RGlhZ3JhbUxpYkNvbXBvbmVudDtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb21wb25lbnQ6IGFueTtcbiAgQElucHV0KCkgc3lzdGVtVHlwZTogQXRvR29qc0VkaXRvck1vZGVsLkVOVU1fVFlQRVM7XG4gIEBPdXRwdXQoKSBvbkNsaWNrUGFyYW1PZlRhYmxlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICQgPSBnby5HcmFwaE9iamVjdC5tYWtlO1xuICBvcHRpb25zID0ge1xuICAgICAgbGF5b3V0OiB0aGlzLiQoZ28uTGF5ZXJlZERpZ3JhcGhMYXlvdXQsIHtcbiAgICAgICAgICAvLyBkaXJlY3Rpb246IDAsXG4gICAgICB9KSxcbiAgICAgIC8vIGlzUmVhZE9ubHk6IHRydWUsXG4gIH07XG4gIEBJbnB1dCgpIGZsb3dEYXRhOiBhbnkgPSB7fTtcbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gdGhpcy5mbG93RGF0YSA9IHtcbiAgICAvLyAgICAgLi4uQVRPX0NPTVBPTkVOVFNfR1JPVVBfREFUQVt0aGlzLnN5c3RlbVR5cGVdLFxuICAgIC8vICAgICBsaW5rRnJvbVBvcnRJZFByb3BlcnR5OiAnZnJvbVBvcnQnLFxuICAgIC8vICAgICBsaW5rVG9Qb3J0SWRQcm9wZXJ0eTogJ3RvUG9ydCcsXG4gICAgLy8gfTtcbiAgICB0aGlzLmdldERlZmF1bHRGbG93RGF0YSgpO1xuICB9XG4gIG9uQ2xpY2tQYXJhbU9mVGFibGUoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uQ2xpY2tQYXJhbU9mVGFibGVFdmVudC5lbWl0KCRldmVudCk7XG4gIH1cblxuICBnZXREZWZhdWx0Rmxvd0RhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLkFUT19DT01QT05FTlRTX0dST1VQX0RBVEFbdGhpcy5zeXN0ZW1UeXBlXSxcbiAgICAgIGxpbmtGcm9tUG9ydElkUHJvcGVydHk6ICdmcm9tUG9ydCcsXG4gICAgICBsaW5rVG9Qb3J0SWRQcm9wZXJ0eTogJ3RvUG9ydCcsXG4gIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLTEwMFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCI+XG4gICAgPCEtLSB0cWxTcGluIFtzcGlubmluZ109XCJmbG93RGF0YSA9PT0gbnVsbFwiIFtkZWxheV09XCIxMDAwXCIgLS0+XG4gICAgPGF0by1mbG93LWRpYWdyYW0tbGliXG4gICAgKm5nSWY9XCJmbG93RGF0YSAhPT0gbnVsbFwiXG4gICAgI2dqRmxvd0RpYWdyYW1UZW1wXG4gICAgW2RhdGFdPVwiZmxvd0RhdGFcIlxuICAgIFtpbml0aWFsT3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAob25DbGlrUGFyYW1PZlRhYmxlKT1cIm9uQ2xpY2tQYXJhbU9mVGFibGUoJGV2ZW50KVwiXG4gID48L2F0by1mbG93LWRpYWdyYW0tbGliPlxuPC9kaXY+XG4iXX0=
@@ -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 { AtoGojsEditorModel } 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 AtoGojsEditorModel({
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 class=\"w-100 h-100 gj-flow-diagram-wrapper\" style=\"height: 100%\">\n <!-- tqlSpin [spinning]=\"data === null || !!isLoading\" -->\n <div class=\"w-100 h-100 d-flex\" style=\"height: 100%\">\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\" style=\"height: 100%\"></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", 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 class=\"w-100 h-100 gj-flow-diagram-wrapper\" style=\"height: 100%\">\n <!-- tqlSpin [spinning]=\"data === null || !!isLoading\" -->\n <div class=\"w-100 h-100 d-flex\" style=\"height: 100%\">\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\" style=\"height: 100%\"></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" }]
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1kaWFncmFtLWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hdG8td2F0ZXItbGliL3NyYy9saWIvY29tcG9uZW50cy9mbG93LWRpYWdyYW0tbGliL2Zsb3ctZGlhZ3JhbS1saWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXRvLXdhdGVyLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kaWFncmFtLWxpYi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBT3BFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQkFBb0I7SUFJbEUsSUFBYSxJQUFJLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFkWixVQUFLLEdBQVEsSUFBSSxDQUFDO1FBT1QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVF2QixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2Isb0JBQW9CLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDdkUsb0JBQW9CLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7U0FDdkUsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBSUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLDJCQUEyQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBT0wsQ0FBQztJQUNOLENBQUM7SUFLRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNqRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3JDLGlFQUFpRTtnQkFDakUsb0NBQW9DO2dCQUNwQyxzRUFBc0U7Z0JBQ3RFLHdDQUF3QztnQkFDeEMsU0FBUztnQkFDVCxxQ0FBcUM7Z0JBQ3JDLHFFQUFxRTtnQkFDckUsMERBQTBEO2dCQUMxRCxtQkFBbUI7Z0JBQ25CLFlBQVk7Z0JBQ1osSUFBSTtZQUNSLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDO1lBQ2pDLEtBQUssRUFBRSxvQkFBb0I7WUFDM0Isb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixHQUFHLElBQUksQ0FBQyxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFvQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7O3dIQXJFVSwwQkFBMEI7NEdBQTFCLDBCQUEwQix5U0NYdkMsa25DQXlCQTs0RkRkYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usc0JBQXNCOzBFQUtGLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRW5CLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDTyxJQUFJO3NCQUFoQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQXRvRGVmYXVsdEdvanNFZGl0b3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGVmYXVsdC1nb2pzLWVkaXRvci5tb2RlbCc7XG5pbXBvcnQgeyBBdG9Hb2pzRWRpdG9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ29qcy1lZGl0b3IubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdG8tZmxvdy1kaWFncmFtLWxpYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mbG93LWRpYWdyYW0tbGliLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy1kaWFncmFtLWxpYi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXRvRmxvd0RpYWdyYW1MaWJDb21wb25lbnQgZXh0ZW5kcyBBdG9EZWZhdWx0R29qc0VkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCAge1xuIEBWaWV3Q2hpbGQoJ215RGlhZ3JhbURpdlRlbXAnKSBteURpYWdyYW1EaXZUZW1wOiBhbnk7XG4gIF9kYXRhOiBhbnkgPSBudWxsO1xuICBASW5wdXQoKSBzaG93Tm90aWZpY2F0aW9uSWNvbjsgLy8gQWxlcnQsIFJlY29tbWVuZGF0aW9uLCBEaXNjb3Zlcmllcy5cbiAgQElucHV0KCkgc2V0IGRhdGEodikge1xuICAgICAgdGhpcy5fZGF0YSA9IHY7XG4gICAgICB0aGlzLmxvYWREaWFncmFtKCk7XG4gIH1cblxuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBnZXQgZGF0YSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gW1xuICAgICAgICBBdG9EZWZhdWx0R29qc0VkaXRvci5BQ1RJT05TW0F0b0RlZmF1bHRHb2pzRWRpdG9yLkVOVU1fQUNUSU9OUy5ERVRBSUxTXSxcbiAgICAgICAgQXRvRGVmYXVsdEdvanNFZGl0b3IuQUNUSU9OU1tBdG9EZWZhdWx0R29qc0VkaXRvci5FTlVNX0FDVElPTlMuREVMRVRFXSxcbiAgICAgIF07XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gIH1cblxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLmFkZFN1YnNjcmliZXMoXG4gICAgICAgICAgdGhpcy5jb21taXR0ZWRUcmFuc2FjdGlvblN1YmplY3Q/LnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2VMaXN0ZW5lckV2ZW50LmVtaXQoZSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gdGhpcy5fR2pVdGlsc1NlcnZpY2U/LnVwZGF0ZU5hbWVEYXRhQm94JD8uc3Vic2NyaWJlKChycykgPT4ge1xuICAgICAgICAgIC8vICAgICBpZiAocnMgJiYgcnM/LmtleSkge1xuICAgICAgICAgIC8vICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMubXlEaWFncmFtLmZpbmROb2RlRm9yS2V5KHJzPy5rZXkpO1xuICAgICAgICAgIC8vICAgICAgICAgdGhpcy5teURpYWdyYW0ubW9kZWwuc2V0RGF0YVByb3BlcnR5KG5vZGU/LmRhdGEsICduYW1lJywgcnM/Lm5hbWUpO1xuICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgLy8gfSksXG4gICAgICApO1xuICB9XG5cblxuXG5cbiAgbG9hZERpYWdyYW0oKSB7XG4gICAgICBpZiAodGhpcy5kYXRhPy5ub2RlRGF0YUFycmF5Py5sZW5ndGggJiYgISF0aGlzLnNob3dOb3RpZmljYXRpb25JY29uKSB7XG4gICAgICAgICAgXy5tYXAodGhpcy5kYXRhPy5ub2RlRGF0YUFycmF5LCAobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAvLyBpZiAobm9kZT8udHlwZSA9PT0gR29qc0VkaXRvck1vZGVsLkVOVU1fVEVNUExBVEVTLlRFWFRfTk9ERSkge1xuICAgICAgICAgICAgICAvLyAgICAgbm9kZS5yZWNvbW1lbmRhdGlvbiA9IF8uc29tZShcbiAgICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLl9SZWNvbW1lbmRhdGlvbnNTZXJ2aWNlLmFjdGl2ZVJlY29tbWVuZGF0aW9ucyQ/LnZhbHVlLFxuICAgICAgICAgICAgICAvLyAgICAgICAgICh4KSA9PiB4Py5Cb3hJZCA9PT0gbm9kZT8uaWQsXG4gICAgICAgICAgICAgIC8vICAgICApO1xuICAgICAgICAgICAgICAvLyAgICAgLy8gbm9kZS5kaXNjb3ZlcmllcyA9ICEhXy5nZXQoXG4gICAgICAgICAgICAgIC8vICAgICAvLyAgICAgdGhpcy5fUmVjb21tZW5kYXRpb25zU2VydmljZS5hY3RpdmVEaXNjb3ZlcmllcyQ/LnZhbHVlLFxuICAgICAgICAgICAgICAvLyAgICAgLy8gICAgIGAke0VOVU1fS1BJX01FVFJJQy5UT1BPTE9HWX0tJHtub2RlPy5pZH0uMGAsXG4gICAgICAgICAgICAgIC8vICAgICAvLyAgICAgbnVsbCxcbiAgICAgICAgICAgICAgLy8gICAgIC8vICk7XG4gICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lZGl0b3IgPSBuZXcgQXRvR29qc0VkaXRvck1vZGVsKHtcbiAgICAgICAgICBjbGFzczogJ2dvLkdyYXBoTGlua3NNb2RlbCcsXG4gICAgICAgICAgbm9kZUNhdGVnb3J5UHJvcGVydHk6ICd0eXBlJyxcbiAgICAgICAgICAuLi50aGlzLmRhdGEsXG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbmROb2RlRm9yS2V5KGtleTogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgICB0aGlzLm15RGlhZ3JhbS5zZWxlY3QodGhpcy5teURpYWdyYW0uZmluZE5vZGVGb3JLZXkoa2V5KSk7XG4gIH1cbn1cblxuXG5cblxuXG4iLCI8ZGl2IGNsYXNzPVwidy0xMDAgaC0xMDAgZ2otZmxvdy1kaWFncmFtLXdyYXBwZXJcIiBzdHlsZT1cImhlaWdodDogMTAwJVwiPlxuICAgIDwhLS0gdHFsU3BpbiBbc3Bpbm5pbmddPVwiZGF0YSA9PT0gbnVsbCB8fCAhIWlzTG9hZGluZ1wiICAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC0xMDAgZC1mbGV4XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCVcIj5cbiAgICAgICAgPCEtLSA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImFjdGlvbk1lbnVJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImludmlzaWJsZS1idG5cIlxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICAgICAgI21lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3Rpb25zXCIgKGNsaWNrKT1cIml0ZW0/Lm9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1nYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpIGNsYXNzPVwie3sgaXRlbT8uaWNvbkNsYXNzTmFtZSB9fVwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBpdGVtPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT4gLS0+XG5cbiAgICAgICAgPGRpdiAjbXlEaWFncmFtRGl2VGVtcCBbaWRdPVwibXlEaWFncmFtRGl2XCIgY2xhc3M9XCJmbGV4LWdyb3ctMVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImluaXRpYWxPcHRpb25zPy5pc1JlYWRPbmx5ICYmICFkYXRhPy5ub2RlRGF0YUFycmF5Py5sZW5ndGhcIiBjbGFzcz1cImVtcHR5LWRhdGFcIj5cbiAgICAgICAgICAgIDxuei1lbXB0eSBuek5vdEZvdW5kSW1hZ2U9XCJzaW1wbGVcIj48L256LWVtcHR5PlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==