ontimize-web-ngx 15.3.0 → 15.3.1

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,15 +1,15 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, QueryList, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation } from '@angular/core';
2
+ import { Component, ElementRef, EventEmitter, forwardRef, Inject, Injector, NgZone, QueryList, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation } from '@angular/core';
3
3
  import { MatTabGroup } from '@angular/material/tabs';
4
- import { Router } from '@angular/router';
5
- import { BehaviorSubject, Subject, Subscription } from 'rxjs';
4
+ import { ActivatedRoute, Router } from '@angular/router';
5
+ import { BehaviorSubject, concatMap, delay, from, of, Subject, Subscription } from 'rxjs';
6
6
  import { BooleanInputConverter } from '../../../decorators/input-converter';
7
7
  import { DialogService } from '../../../services/dialog.service';
8
+ import { OFormLayoutManagerService } from '../../../services/o-form-layout-manager.service';
8
9
  import { Codes } from '../../../util/codes';
9
10
  import { Util } from '../../../util/util';
10
11
  import { OFormLayoutManagerContentDirective } from '../directives/o-form-layout-manager-content.directive';
11
12
  import { OFormLayoutManagerBase } from '../o-form-layout-manager-base.class';
12
- import { OFormLayoutManagerService } from '../../../services/o-form-layout-manager.service';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/common";
15
15
  import * as i2 from "@angular/flex-layout/flex";
@@ -47,6 +47,7 @@ export class OFormLayoutTabGroupComponent {
47
47
  this.tabsModificationsCache = [];
48
48
  this.dialogService = injector.get(DialogService);
49
49
  this.router = this.injector.get(Router);
50
+ this.actRoute = this.injector.get(ActivatedRoute);
50
51
  }
51
52
  get state() {
52
53
  return this.formLayoutManager.state;
@@ -283,38 +284,20 @@ export class OFormLayoutTabGroupComponent {
283
284
  this.state.tabsData = this.state.tabsData.filter(tabData => !tabData.insertionMode);
284
285
  if (this.state.tabsData.length >= 1 && (this.state.tabsData[0].url || '').length > 0) {
285
286
  this.showLoading.next(true);
286
- const extras = {};
287
- extras[Codes.QUERY_PARAMS] = this.state.tabsData[0].queryParams;
288
- extras[Codes.QUERY_PARAMS][Codes.INSERTION_MODE] = `${this.state.tabsData[0].insertionMode}`;
289
- if (this.formLayoutManager) {
290
- this.formLayoutManager.setAsActiveFormLayoutManager();
291
- }
292
- this.router.navigate([this.state.tabsData[0].url], extras).then(() => {
293
- if (this.data[0] && this.data[0].component && this.state.tabsData.length > 1) {
294
- setTimeout(() => {
295
- this.createTabsFromState();
296
- }, 0);
287
+ const zone = this.injector.get(NgZone);
288
+ from(this.state.tabsData).pipe(concatMap(tab => of(tab).pipe(delay(100)))).subscribe((tab) => {
289
+ const extras = {};
290
+ extras['relativeTo'] = this.actRoute;
291
+ extras[Codes.QUERY_PARAMS] = tab.queryParams;
292
+ extras[Codes.QUERY_PARAMS][Codes.INSERTION_MODE] = tab.insertionMode;
293
+ if (this.formLayoutManager) {
294
+ this.formLayoutManager.setAsActiveFormLayoutManager();
297
295
  }
298
- else {
299
- this.showLoading.next(false);
300
- }
301
- });
302
- }
303
- }
304
- createTabsFromState() {
305
- const tabComponent = this.data[0].component;
306
- const stateTabsData = this.state.tabsData.slice(1);
307
- if (stateTabsData.length > 0) {
308
- stateTabsData.forEach((tabData) => {
309
- setTimeout(() => {
310
- const newDetailData = this.createDetailComponent(tabComponent, tabData);
311
- this.data.push(newDetailData);
312
- }, 0);
296
+ zone.run(() => this.router.navigate([tab.url], extras)
297
+ .then(() => this.showLoading.next(false))
298
+ .catch(() => this.showLoading.next(true)));
313
299
  });
314
300
  }
315
- else {
316
- this.showLoading.next(false);
317
- }
318
301
  }
319
302
  createDetailComponent(component, paramsObj) {
320
303
  const newDetailComp = {
@@ -385,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
385
368
  type: ViewChildren,
386
369
  args: [OFormLayoutManagerContentDirective]
387
370
  }] } });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC90YWJncm91cC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFFUixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FB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SUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1RyxDQUFDOzswSEF2WVUsNEJBQTRCLG9HQTZCN0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOzhHQTdCdkMsNEJBQTRCLG1kQVV6QixrQ0FBa0MsZ0RDaEVsRCxtckRBK0JBO0FENkJFO0lBQUMscUJBQXFCLEVBQUU7O2lFQUNZOzRGQVB6Qiw0QkFBNEI7a0JBWHhDLFNBQVM7K0JBQ0Usd0JBQXdCLFVBQzFCLHFDQUFxQyxXQUNwQyxzQ0FBc0MsaUJBR2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osZ0NBQWdDLEVBQUUsTUFBTTtxQkFDekM7OzBCQStCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F0QjNDLFdBQVcsTUFFSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQzZCLGNBQWM7c0JBQS9ELFlBQVk7dUJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJNb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItbW9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMsIEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZm9ybS1sYXlvdXQtZGV0YWlsLWNvbXBvbmVudC1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UgfSBmcm9tICcuLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ3RpdGxlJyxcbiAgJ29wdGlvbnMnLFxuICAnc3RyZXRjaFRhYnM6IHN0cmV0Y2gtdGFicydcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfVEFCR1JPVVAsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX1RBQkdST1VQLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC10YWJncm91cF0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRm9ybUxheW91dFRhYkdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFbXSA9IFtdO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IGFueTtcbiAgcHVibGljIHNob3dMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc3RyZXRjaFRhYnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCd0YWJHcm91cCcpIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcbiAgQFZpZXdDaGlsZHJlbihPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlKSB0YWJzRGlyZWN0aXZlczogUXVlcnlMaXN0PE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmU+O1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG5cbiAgcHVibGljIG9uTWFpblRhYlNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25TZWxlY3RlZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2xvc2VUYWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHByZXZpb3VzU2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuXG4gIHB1YmxpYyB1cGRhdGVUYWJDb21wb25lbnRzU3RhdGUgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHB1YmxpYyB0YWJzTW9kaWZpY2F0aW9uc0NhY2hlOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGxvY2F0aW9uOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPRm9ybUxheW91dE1hbmFnZXJCYXNlKSkgcHVibGljIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuc3RhdGU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50YWJzRGlyZWN0aXZlcy5jaGFuZ2VzLnN1YnNjcmliZShjaGFuZ2VzID0+IHtcbiAgICAgIGlmICh0aGlzLnRhYnNEaXJlY3RpdmVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB0YWJJdGVtID0gdGhpcy50YWJzRGlyZWN0aXZlcy5sYXN0O1xuICAgICAgICBjb25zdCB0YWJEYXRhID0gdGhpcy5kYXRhW3RhYkl0ZW0uaW5kZXhdO1xuICAgICAgICBpZiAodGFiRGF0YSAmJiAhdGFiRGF0YS5yZW5kZXJlZCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlVGFiQ29tcG9uZW50KHRhYkRhdGEsIHRhYkl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtYWluVGFiVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9ucy50aXRsZSB8fCB0aGlzLnRpdGxlIHx8ICdMQVlPVVRfTUFOQU5HRVIuTUFJTl9UQUJfTEFCRUwnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZUFuaW1hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5kaXNhYmxlQW5pbWF0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBoZWFkZXJQb3NpdGlvbigpIHtcbiAgICBsZXQgaGVhZGVyUG9zaXRpb247XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaGVhZGVyUG9zaXRpb24pIHtcbiAgICAgIGhlYWRlclBvc2l0aW9uID0gdGhpcy5vcHRpb25zLmhlYWRlclBvc2l0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVyUG9zaXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbG9yKCkge1xuICAgIGxldCBjb2xvcjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5jb2xvcikge1xuICAgICAgY29sb3IgPSB0aGlzLm9wdGlvbnMuY29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmFja2dyb3VuZENvbG9yKCkge1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZW1wbGF0ZU1hdFRhYkxhYmVsKCkge1xuICAgIGxldCB0ZW1wbGF0ZU1hdFRhYkxhYmVsO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnRlbXBsYXRlTWF0VGFiTGFiZWwpIHtcbiAgICAgIHRlbXBsYXRlTWF0VGFiTGFiZWwgPSB0aGlzLm9wdGlvbnMudGVtcGxhdGVNYXRUYWJMYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlTWF0VGFiTGFiZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGljb24oKSB7XG4gICAgbGV0IGljb247XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWNvbikge1xuICAgICAgaWNvbiA9IHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJY29uUG9zaXRpb25MZWZ0KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnO1xuICB9XG5cbiAgZ2V0IG1heFRhYnMoKTogbnVtYmVyIHtcbiAgICBsZXQgbWF4VGFicztcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tYXhUYWJzKSB7XG4gICAgICBtYXhUYWJzID0gdGhpcy5vcHRpb25zLm1heFRhYnM7XG4gICAgfVxuICAgIHJldHVybiBtYXhUYWJzO1xuICB9XG5cbiAgYWRkVGFiKGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIGxldCBhZGROZXdDb21wID0gdHJ1ZTtcbiAgICBpZiAoY29tcERhdGEuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0aW5nSW5zZXJ0aW9uVGFiID0gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmluc2VydGlvbk1vZGUpKTtcbiAgICAgIGFkZE5ld0NvbXAgPSAhYWxyZWFkeUV4aXN0aW5nSW5zZXJ0aW9uVGFiO1xuICAgIH1cbiAgICBjb25zdCBuZXdDb21wUGFyYW1zID0gY29tcERhdGEucGFyYW1zO1xuICAgIGlmIChhZGROZXdDb21wKSB7XG4gICAgICB0aGlzLmRhdGEuZm9yRWFjaChjb21wID0+IHtcbiAgICAgICAgY29uc3QgY3VyclBhcmFtcyA9IGNvbXAucGFyYW1zIHx8IHt9O1xuICAgICAgICBsZXQgc29tZURpZmZQYXJhbXMgPSB0cnVlO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY3VyclBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNvbWVEaWZmUGFyYW1zID0gT2JqZWN0LmtleXMoY3VyclBhcmFtcykuc29tZShrZXkgPT4gY3VyclBhcmFtc1trZXldICE9IG5ld0NvbXBQYXJhbXNba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkTmV3Q29tcCA9IGFkZE5ld0NvbXAgJiYgc29tZURpZmZQYXJhbXM7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGFkZE5ld0NvbXApIHtcbiAgICAgIHRoaXMuZGF0YS5wdXNoKGNvbXBEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWxvYWRUYWIoY29tcERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZFRhYihjb21wRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpIHtcbiAgICBsZXQgY29tcEluZGV4ID0gLTE7XG4gICAgY29uc3QgY29tcFBhcmFtcyA9IGNvbXBEYXRhLnBhcmFtcztcbiAgICB0aGlzLmRhdGEuZm9yRWFjaCgoY29tcCwgaSkgPT4ge1xuICAgICAgY29uc3QgY3VyclBhcmFtcyA9IGNvbXAucGFyYW1zIHx8IHt9O1xuICAgICAgY29uc3Qgc2FtZVBhcmFtcyA9IFV0aWwuaXNFcXVpdmFsZW50KGN1cnJQYXJhbXMsIGNvbXBQYXJhbXMpO1xuICAgICAgaWYgKHNhbWVQYXJhbXMpIHtcbiAgICAgICAgY29tcEluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoY29tcEluZGV4ID49IDApIHtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IChjb21wSW5kZXggKyAxKTtcbiAgICB9XG4gIH1cblxuICBvblRhYlNlbGVjdENoYW5nZShhcmc6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIgJiYgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgICB0aGlzLm9uTWFpblRhYlNlbGVjdGVkLmVtaXQoKTtcbiAgICB9XG4gICAgY29uc3QgaXNMb2FkaW5nID0gdGhpcy5zaG93TG9hZGluZy5nZXRWYWx1ZSgpO1xuICAgIGlmIChpc0xvYWRpbmcgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZSkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS50YWJzRGF0YSkgJiZcbiAgICAgIGFyZy5pbmRleCA9PT0gdGhpcy5zdGF0ZS50YWJzRGF0YS5sZW5ndGggLSAxKSB7XG4gICAgICAvLyB0aGlzIGlzIG9ubHkgdHJpZ2dlcmVkIG9uY2Ugd2hlbiBhbGwgdGFicyBhcmUgbG9hZGVkXG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0aGlzLnN0YXRlLnNlbGVjdGVkSW5kZXg7XG4gICAgICB0aGlzLnNob3dMb2FkaW5nLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAoIWlzTG9hZGluZykge1xuICAgICAgdGhpcy5vblNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQoe1xuICAgICAgICBkYXRhOiB0aGlzLmRhdGFbdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMV0sXG4gICAgICAgIGluZGV4OiB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXgsXG4gICAgICAgIHByZXZpb3VzSW5kZXg6IHRoaXMucHJldmlvdXNTZWxlY3RlZEluZGV4XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkSW5kZXggPSB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBjbG9zZVRhYihpbmRleDogbnVtYmVyLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIGlmICghdGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJEYXRhID0gdGhpcy5kYXRhW2luZGV4XTtcbiAgICBjb25zdCBvbkNsb3NlVGFiQWNjZXB0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKG9uQ2xvc2VUYWJBY2NlcHRlZC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMub25DbG9zZVRhYi5lbWl0KHtcbiAgICAgICAgICBkYXRhOiB0YWJEYXRhLFxuICAgICAgICAgIGluZGV4OiBpbmRleCArIDFcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRhYkRhdGEpICYmIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuaGFzVG9Db25maXJtRXhpdCh0YWJEYXRhLCBvcHRpb25zKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCAnTUVTU0FHRVMuRk9STV9DSEFOR0VTX1dJTExfQkVfTE9TVCcpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgb25DbG9zZVRhYkFjY2VwdGVkLmVtaXQocmVzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkNsb3NlVGFiQWNjZXB0ZWQuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjcmVhdGVUYWJDb21wb25lbnQodGFiRGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEsIGNvbnRlbnQ6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUpIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0YWJEYXRhLmNvbXBvbmVudDtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmID0gY29udGVudC52aWV3Q29udGFpbmVyUmVmO1xuICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIHRhYkRhdGEucmVuZGVyZWQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGggPiAwID8gdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFJvdXRlT2ZBY3RpdmVJdGVtKCk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZSA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gdGhpcy5kYXRhW3RoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDFdLnVybFNlZ21lbnRzIHx8IFtdO1xuICAgICAgdXJsU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xuICAgICAgICByb3V0ZS5wdXNoKHNlZ21lbnQucGF0aCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID4gMCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5kYXRhW3RoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDFdO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlbGVjdGVkRGF0YSkpIHtcbiAgICAgICAgc2VsZWN0ZWREYXRhLmlubmVyRm9ybXNJbmZvW2Zvcm1BdHRyXSA9IHtcbiAgICAgICAgICBtb2RpZmllZDogbW9kaWZpZWQsXG4gICAgICAgICAgY29uZmlybU9uRXhpdDogY29uZmlybUV4aXRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlPzogYm9vbGVhbikge1xuICAgIGxldCBpbmRleDtcbiAgICBpZiAoaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgaW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0uaW5zZXJ0aW9uTW9kZSAhPT0gZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gT2JqZWN0LmtleXMoa2V5c1ZhbHVlcykuZXZlcnkoa2V5ID0+IGtleXNWYWx1ZXNba2V5XSA9PSBpdGVtLnBhcmFtc1trZXldKSk7XG4gICAgfVxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgICAvKiogSW4gY2FzZSBvZiB0aGUgdHJlZSwgdGhlIGxhYmVsIHNob3duIGluIHRoZSBkaWFsb2cgb3IgaW4gdGhlIHRhYiBpcyB0aGUgbGFiZWwgb2YgdGhlIG5vZGUgdGhhdFxuICAgICAgICogIGlzIHN0b3JlZCBpbiBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmNvbnRleHQgKi9cbiAgICAgIGNvbnN0IGNvbnRleHQgPSBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmNvbnRleHQ7XG4gICAgICBsZXQgbGFiZWwgPSBjb250ZXh0Py5sYWJlbCB8fCB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldExhYmVsRnJvbURhdGEoZGF0YSk7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSAoaW5kZXggKyAxKTtcbiAgICAgIGxhYmVsID0gbGFiZWwubGVuZ3RoID8gbGFiZWwgOiB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldExhYmVsRnJvbVVybFBhcmFtcyh0aGlzLmRhdGFbaW5kZXhdLnBhcmFtcyk7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdLmxhYmVsID0gbGFiZWw7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdLmluc2VydGlvbk1vZGUgPSBpbnNlcnRpb25Nb2RlO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zID0gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5nZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAtIDE7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVtpbmRleF0pKSB7XG4gICAgICB0aGlzLmRhdGFbaW5kZXhdID0gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGFbaW5kZXhdLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIC8vIElzc3VlICM4ODQgYXZvaWQgc3RvcmluZyBpbnNlcnRpb25Nb2RlIHRhYnNcbiAgICBjb25zdCB0YWJzRGF0YSA9IHRoaXMuZGF0YVxuICAgICAgLmZpbHRlcigoZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpID0+ICFkYXRhLmluc2VydGlvbk1vZGUpXG4gICAgICAubWFwKChkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkgPT4gKHtcbiAgICAgICAgcGFyYW1zOiBkYXRhLnBhcmFtcyxcbiAgICAgICAgcXVlcnlQYXJhbXM6IGRhdGEucXVlcnlQYXJhbXMsXG4gICAgICAgIHVybFNlZ21lbnRzOiBkYXRhLnVybFNlZ21lbnRzLFxuICAgICAgICB1cmw6IGRhdGEudXJsLFxuICAgICAgICBsYWJlbDogZGF0YS5sYWJlbCxcbiAgICAgICAgaW5zZXJ0aW9uTW9kZTogZGF0YS5pbnNlcnRpb25Nb2RlXG4gICAgICB9KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYnNEYXRhOiB0YWJzRGF0YSxcbiAgICAgIHNlbGVjdGVkSW5kZXg6IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleFxuICAgIH07XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSB8fCAhVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS50YWJzRGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjODg0IGVuc3VyaW5nIHRoYXQgYSBpbnNlcnRpb24gbW9kZSB0YWIgdGhhdCBtaWdodCBiZSBwcmV2aW91c2x5IHN0b3JlZCB3b250IGJlIGNyZWF0ZWRcbiAgICB0aGlzLnN0YXRlLnRhYnNEYXRhID0gdGhpcy5zdGF0ZS50YWJzRGF0YS5maWx0ZXIodGFiRGF0YSA9PiAhdGFiRGF0YS5pbnNlcnRpb25Nb2RlKVxuXG4gICAgaWYgKHRoaXMuc3RhdGUudGFic0RhdGEubGVuZ3RoID49IDEgJiYgKHRoaXMuc3RhdGUudGFic0RhdGFbMF0udXJsIHx8ICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNob3dMb2FkaW5nLm5leHQodHJ1ZSk7XG4gICAgICBjb25zdCBleHRyYXMgPSB7fTtcbiAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gdGhpcy5zdGF0ZS50YWJzRGF0YVswXS5xdWVyeVBhcmFtcztcbiAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9IGAke3RoaXMuc3RhdGUudGFic0RhdGFbMF0uaW5zZXJ0aW9uTW9kZX1gXG4gICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICAgIH1cbiAgICAgIC8vIFRyaWdnZXJpbmcgZmlyc3QgdGFiIG5hdmlnYXRpb25cbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnN0YXRlLnRhYnNEYXRhWzBdLnVybF0sIGV4dHJhcykudGhlbigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFbMF0gJiYgdGhpcy5kYXRhWzBdLmNvbXBvbmVudCAmJiB0aGlzLnN0YXRlLnRhYnNEYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvLyBUcmlnZ2VyaW5nIHJlc3Qgb2YgdGhlIHRhYnMgY3JlYXRpb25cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGFic0Zyb21TdGF0ZSgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVUYWJzRnJvbVN0YXRlKCkge1xuICAgIGNvbnN0IHRhYkNvbXBvbmVudCA9IHRoaXMuZGF0YVswXS5jb21wb25lbnQ7XG4gICAgLy8gc2tpcHBpbmcgZmlyc3QgZWxlbWVudCAoY3JlYXRlZCBpbiBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUpXG4gICAgY29uc3Qgc3RhdGVUYWJzRGF0YSA9IHRoaXMuc3RhdGUudGFic0RhdGEuc2xpY2UoMSk7XG4gICAgaWYgKHN0YXRlVGFic0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgc3RhdGVUYWJzRGF0YS5mb3JFYWNoKCh0YWJEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3RGV0YWlsRGF0YSA9IHRoaXMuY3JlYXRlRGV0YWlsQ29tcG9uZW50KHRhYkNvbXBvbmVudCwgdGFiRGF0YSk7XG4gICAgICAgICAgdGhpcy5kYXRhLnB1c2gobmV3RGV0YWlsRGF0YSk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZURldGFpbENvbXBvbmVudChjb21wb25lbnQ6IGFueSwgcGFyYW1zT2JqOiBhbnkpIHtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zT2JqLnBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXNPYmoucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogcGFyYW1zT2JqLnVybFNlZ21lbnRzLFxuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICB1cmw6IHBhcmFtc09iai51cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6IHBhcmFtc09iai5sYWJlbCxcbiAgICAgIGlubmVyRm9ybXNJbmZvOiB7fVxuICAgIH07XG4gICAgcmV0dXJuIG5ld0RldGFpbENvbXA7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhWzBdKSA/IHRoaXMuZGF0YVswXS5wYXJhbXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaXJzdFRhYiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtdGFiLWJvZHknKVswXTtcbiAgICByZXR1cm4gZmlyc3RUYWIgJiYgY29tcC5lbGVtZW50UmVmICYmIGZpcnN0VGFiLmNvbnRhaW5zKGNvbXAuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG9wZW5EZXRhaWwoZGV0YWlsOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIHRoaXMuYWRkVGFiKGRldGFpbCk7XG4gIH1cblxuICBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIHRoaXMuY2xvc2VUYWIodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgLy8gVGhlIG1heCB0YWJzIG51bWJlciBpbmNsdWRlcyB0aGUgbWFpbiB0YWJcbiAgICBjb25zdCBtYXhSZWFjaGVkID0gKHRoaXMuZGF0YS5sZW5ndGggKyAxKSA+PSB0aGlzLm1heFRhYnM7XG4gICAgaWYgKG1heFJlYWNoZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKCdJTkZPJywgJ0xBWU9VVF9NQU5BTkdFUi5NQVhfVEFCU19OVU1CRVJfUkVBQ0hFRCcpXG4gICAgfVxuICAgIHJldHVybiAhbWF4UmVhY2hlZDtcbiAgfVxuXG4gIGlzVGFiRGF0YU1vZGlmaWVkKHRhYkRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRhYkRhdGEuaW5uZXJGb3Jtc0luZm8pLnNvbWUoZm9ybUF0dHIgPT4gdGFiRGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl0ubW9kaWZpZWQpO1xuICB9XG5cbiAgY2xvc2VEZXRhaWxzKGRldGFpbHNLZXlzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpIHtcbiAgICBkZXRhaWxzS2V5c0RhdGEuZm9yRWFjaCgoZGV0YWlsRGF0YSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBVdGlsLmlzRXF1aXZhbGVudChkZXRhaWxEYXRhLCBpdGVtLnBhcmFtcyB8fCB7fSkpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0gPyB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdLmlkIDogdGhpcy5kYXRhLmxlbmd0aC50b1N0cmluZygpO1xuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgb1RhYkdyb3VwPVwib250aW1pemVcIiBmeEZpbGwgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiU2VsZWN0Q2hhbmdlKCRldmVudClcIiBbY29sb3JdPVwiY29sb3JcIlxuICBbYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvclwiIFtoZWFkZXJQb3NpdGlvbl09XCJoZWFkZXJQb3NpdGlvblwiIFtALmRpc2FibGVkXT1cImRpc2FibGVBbmltYXRpb25cIiBbbWF0LXN0cmV0Y2gtdGFic109XCJzdHJldGNoVGFic1wiPlxuICA8bWF0LXRhYiBsYWJlbD1cInt7IG1haW5UYWJUaXRsZSB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LXRhYj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYkRhdGEgb2YgZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0YWItbGFiZWxcIiBbY2xhc3MubW9kaWZpZWRdPVwiaXNUYWJEYXRhTW9kaWZpZWQodGFiRGF0YSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImljb24gJiYgaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlTWF0VGFiTGFiZWwgJiYgdGFiRGF0YS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zICYmICF0YWJEYXRhLmluc2VydGlvbk1vZGUgXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlTWF0VGFiTGFiZWw7Y29udGV4dDp7JGltcGxpY2l0OnRhYkRhdGEuZm9ybURhdGFCeUxhYmVsQ29sdW1uc31cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVNYXRUYWJMYWJlbCB8fCB0YWJEYXRhLmluc2VydGlvbk1vZGVcIj5cbiAgICAgICAgICB7eyB0YWJEYXRhLmxhYmVsIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbiAmJiAhaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJncmFkaWVudC1sYXllclwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VUYWIoaSlcIiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG8tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50IFtpbmRleF09XCJpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPlxuPGRpdiAqbmdJZj1cInNob3dMb2FkaW5nIHwgYXN5bmNcIiBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBzdHJva2VXaWR0aD1cIjNcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuPC9kaXY+XG4iXX0=
371
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC90YWJncm91cC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3RhYmdyb3VwL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXFCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFHNUYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJ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MEJBK0JFLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOzRDQXRCM0MsV0FBVyxNQUNLLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDNkIsY0FBYztzQkFBL0QsWUFBWTt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQsIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29uY2F0TWFwLCBkZWxheSwgZnJvbSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJNb2RlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItbW9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ3RpdGxlJyxcbiAgJ29wdGlvbnMnLFxuICAnc3RyZXRjaFRhYnM6IHN0cmV0Y2gtdGFicydcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9UQUJHUk9VUCA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfVEFCR1JPVVAsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX1RBQkdST1VQLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tZm9ybS1sYXlvdXQtdGFiZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC10YWJncm91cF0nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPRm9ybUxheW91dFRhYkdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGFbXSA9IFtdO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgcHVibGljIG9wdGlvbnM6IGFueTtcbiAgcHVibGljIHNob3dMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc3RyZXRjaFRhYnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gIEBWaWV3Q2hpbGRyZW4oT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSkgdGFic0RpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlPjtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuXG4gIHB1YmxpYyBvbk1haW5UYWJTZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uU2VsZWN0ZWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvbkNsb3NlVGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBwcmV2aW91c1NlbGVjdGVkSW5kZXg6IG51bWJlcjtcblxuICBwdWJsaWMgdXBkYXRlVGFiQ29tcG9uZW50c1N0YXRlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwdWJsaWMgdGFic01vZGlmaWNhdGlvbnNDYWNoZTogYW55W10gPSBbXTtcbiAgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGxvY2F0aW9uOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPRm9ybUxheW91dE1hbmFnZXJCYXNlKSkgcHVibGljIGZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgICB0aGlzLnJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgdGhpcy5hY3RSb3V0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zdGF0ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnRhYnNEaXJlY3RpdmVzLmNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZXMgPT4ge1xuICAgICAgaWYgKHRoaXMudGFic0RpcmVjdGl2ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRhYkl0ZW0gPSB0aGlzLnRhYnNEaXJlY3RpdmVzLmxhc3Q7XG4gICAgICAgIGNvbnN0IHRhYkRhdGEgPSB0aGlzLmRhdGFbdGFiSXRlbS5pbmRleF07XG4gICAgICAgIGlmICh0YWJEYXRhICYmICF0YWJEYXRhLnJlbmRlcmVkKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVUYWJDb21wb25lbnQodGFiRGF0YSwgdGFiSXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1haW5UYWJUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5vcHRpb25zLnRpdGxlIHx8IHRoaXMudGl0bGUgfHwgJ0xBWU9VVF9NQU5BTkdFUi5NQUlOX1RBQl9MQUJFTCcpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlQW5pbWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmRpc2FibGVBbmltYXRpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhlYWRlclBvc2l0aW9uKCkge1xuICAgIGxldCBoZWFkZXJQb3NpdGlvbjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5oZWFkZXJQb3NpdGlvbikge1xuICAgICAgaGVhZGVyUG9zaXRpb24gPSB0aGlzLm9wdGlvbnMuaGVhZGVyUG9zaXRpb247XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJQb3NpdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29sb3IoKSB7XG4gICAgbGV0IGNvbG9yO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNvbG9yKSB7XG4gICAgICBjb2xvciA9IHRoaXMub3B0aW9ucy5jb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldCBiYWNrZ3JvdW5kQ29sb3IoKSB7XG4gICAgbGV0IGJhY2tncm91bmRDb2xvcjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlTWF0VGFiTGFiZWwoKSB7XG4gICAgbGV0IHRlbXBsYXRlTWF0VGFiTGFiZWw7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMudGVtcGxhdGVNYXRUYWJMYWJlbCkge1xuICAgICAgdGVtcGxhdGVNYXRUYWJMYWJlbCA9IHRoaXMub3B0aW9ucy50ZW1wbGF0ZU1hdFRhYkxhYmVsO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcGxhdGVNYXRUYWJMYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWNvbigpIHtcbiAgICBsZXQgaWNvbjtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5pY29uKSB7XG4gICAgICBpY29uID0gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ljb25Qb3NpdGlvbkxlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuaWNvblBvc2l0aW9uID09PSAnbGVmdCc7XG4gIH1cblxuICBnZXQgbWF4VGFicygpOiBudW1iZXIge1xuICAgIGxldCBtYXhUYWJzO1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heFRhYnMpIHtcbiAgICAgIG1heFRhYnMgPSB0aGlzLm9wdGlvbnMubWF4VGFicztcbiAgICB9XG4gICAgcmV0dXJuIG1heFRhYnM7XG4gIH1cblxuICBhZGRUYWIoY29tcERhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKSB7XG4gICAgbGV0IGFkZE5ld0NvbXAgPSB0cnVlO1xuICAgIGlmIChjb21wRGF0YS5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICBjb25zdCBhbHJlYWR5RXhpc3RpbmdJbnNlcnRpb25UYWIgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaW5zZXJ0aW9uTW9kZSkpO1xuICAgICAgYWRkTmV3Q29tcCA9ICFhbHJlYWR5RXhpc3RpbmdJbnNlcnRpb25UYWI7XG4gICAgfVxuICAgIGNvbnN0IG5ld0NvbXBQYXJhbXMgPSBjb21wRGF0YS5wYXJhbXM7XG4gICAgaWYgKGFkZE5ld0NvbXApIHtcbiAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGNvbXAgPT4ge1xuICAgICAgICBjb25zdCBjdXJyUGFyYW1zID0gY29tcC5wYXJhbXMgfHwge307XG4gICAgICAgIGxldCBzb21lRGlmZlBhcmFtcyA9IHRydWU7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjdXJyUGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc29tZURpZmZQYXJhbXMgPSBPYmplY3Qua2V5cyhjdXJyUGFyYW1zKS5zb21lKGtleSA9PiBjdXJyUGFyYW1zW2tleV0gIT0gbmV3Q29tcFBhcmFtc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICBhZGROZXdDb21wID0gYWRkTmV3Q29tcCAmJiBzb21lRGlmZlBhcmFtcztcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoYWRkTmV3Q29tcCkge1xuICAgICAgdGhpcy5kYXRhLnB1c2goY29tcERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbG9hZFRhYihjb21wRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkVGFiKGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIGxldCBjb21wSW5kZXggPSAtMTtcbiAgICBjb25zdCBjb21wUGFyYW1zID0gY29tcERhdGEucGFyYW1zO1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKChjb21wLCBpKSA9PiB7XG4gICAgICBjb25zdCBjdXJyUGFyYW1zID0gY29tcC5wYXJhbXMgfHwge307XG4gICAgICBjb25zdCBzYW1lUGFyYW1zID0gVXRpbC5pc0VxdWl2YWxlbnQoY3VyclBhcmFtcywgY29tcFBhcmFtcyk7XG4gICAgICBpZiAoc2FtZVBhcmFtcykge1xuICAgICAgICBjb21wSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjb21wSW5kZXggPj0gMCkge1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gKGNvbXBJbmRleCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIG9uVGFiU2VsZWN0Q2hhbmdlKGFyZzogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlciAmJiB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIHRoaXMub25NYWluVGFiU2VsZWN0ZWQuZW1pdCgpO1xuICAgIH1cbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnNob3dMb2FkaW5nLmdldFZhbHVlKCk7XG4gICAgaWYgKGlzTG9hZGluZyAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRhYnNEYXRhKSAmJlxuICAgICAgYXJnLmluZGV4ID09PSB0aGlzLnN0YXRlLnRhYnNEYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIHRoaXMgaXMgb25seSB0cmlnZ2VyZWQgb25jZSB3aGVuIGFsbCB0YWJzIGFyZSBsb2FkZWRcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRJbmRleDtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dChmYWxzZSk7XG4gICAgfVxuICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGRhdGE6IHRoaXMuZGF0YVt0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggLSAxXSxcbiAgICAgICAgaW5kZXg6IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgcHJldmlvdXNJbmRleDogdGhpcy5wcmV2aW91c1NlbGVjdGVkSW5kZXhcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRJbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYkRhdGEgPSB0aGlzLmRhdGFbaW5kZXhdO1xuICAgIGNvbnN0IG9uQ2xvc2VUYWJBY2NlcHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQob25DbG9zZVRhYkFjY2VwdGVkLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5vbkNsb3NlVGFiLmVtaXQoe1xuICAgICAgICAgIGRhdGE6IHRhYkRhdGEsXG4gICAgICAgICAgaW5kZXg6IGluZGV4ICsgMVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGFiRGF0YSkgJiYgdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5oYXNUb0NvbmZpcm1FeGl0KHRhYkRhdGEsIG9wdGlvbnMpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdNRVNTQUdFUy5GT1JNX0NIQU5HRVNfV0lMTF9CRV9MT1NUJykudGhlbihyZXMgPT4ge1xuICAgICAgICBvbkNsb3NlVGFiQWNjZXB0ZWQuZW1pdChyZXMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2xvc2VUYWJBY2NlcHRlZC5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVRhYkNvbXBvbmVudCh0YWJEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSwgY29udGVudDogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRhYkRhdGEuY29tcG9uZW50O1xuICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgPSBjb250ZW50LnZpZXdDb250YWluZXJSZWY7XG4gICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgdGFiRGF0YS5yZW5kZXJlZCA9IHRydWU7XG4gIH1cblxuICBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmxlbmd0aCA+IDAgPyB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTogYW55W10ge1xuICAgIGNvbnN0IHJvdXRlID0gW107XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggJiYgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID4gMCkge1xuICAgICAgY29uc3QgdXJsU2VnbWVudHMgPSB0aGlzLmRhdGFbdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMV0udXJsU2VnbWVudHMgfHwgW107XG4gICAgICB1cmxTZWdtZW50cy5mb3JFYWNoKChzZWdtZW50KSA9PiB7XG4gICAgICAgIHJvdXRlLnB1c2goc2VnbWVudC5wYXRoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBzZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyOiBzdHJpbmcsIG1vZGlmaWVkOiBib29sZWFuLCBjb25maXJtRXhpdDogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSB0aGlzLmRhdGFbdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMV07XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoc2VsZWN0ZWREYXRhKSkge1xuICAgICAgICBzZWxlY3RlZERhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdID0ge1xuICAgICAgICAgIG1vZGlmaWVkOiBtb2RpZmllZCxcbiAgICAgICAgICBjb25maXJtT25FeGl0OiBjb25maXJtRXhpdFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU/OiBib29sZWFuKSB7XG4gICAgbGV0IGluZGV4O1xuICAgIGlmIChpbnNlcnRpb25Nb2RlKSB7XG4gICAgICBpbmRleCA9IHRoaXMuZGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS5pbnNlcnRpb25Nb2RlICE9PSBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBPYmplY3Qua2V5cyhrZXlzVmFsdWVzKS5ldmVyeShrZXkgPT4ga2V5c1ZhbHVlc1trZXldID09IGl0ZW0ucGFyYW1zW2tleV0pKTtcbiAgICB9XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlKTtcbiAgICAgIC8qKiBJbiBjYXNlIG9mIHRoZSB0cmVlLCB0aGUgbGFiZWwgc2hvd24gaW4gdGhlIGRpYWxvZyBvciBpbiB0aGUgdGFiIGlzIHRoZSBsYWJlbCBvZiB0aGUgbm9kZSB0aGF0XG4gICAgICAgKiAgaXMgc3RvcmVkIGluIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuY29udGV4dCAqL1xuICAgICAgY29uc3QgY29udGV4dCA9IG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuY29udGV4dDtcbiAgICAgIGxldCBsYWJlbCA9IGNvbnRleHQ/LmxhYmVsIHx8IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0TGFiZWxGcm9tRGF0YShkYXRhKTtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IChpbmRleCArIDEpO1xuICAgICAgbGFiZWwgPSBsYWJlbC5sZW5ndGggPyBsYWJlbCA6IHRoaXMuZm9ybUxheW91dE1hbmFnZXIuZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHRoaXMuZGF0YVtpbmRleF0ucGFyYW1zKTtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0ubGFiZWwgPSBsYWJlbDtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0uaW5zZXJ0aW9uTW9kZSA9IGluc2VydGlvbk1vZGU7XG4gICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmRhdGFbaW5kZXhdLmZvcm1EYXRhQnlMYWJlbENvbHVtbnMgPSB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmdldEZvcm1EYXRhRnJvbUxhYmVsQ29sdW1ucyhkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhW2luZGV4XSkpIHtcbiAgICAgIHRoaXMuZGF0YVtpbmRleF0gPSBPYmplY3QuYXNzaWduKHRoaXMuZGF0YVtpbmRleF0sIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgLy8gSXNzdWUgIzg4NCBhdm9pZCBzdG9yaW5nIGluc2VydGlvbk1vZGUgdGFic1xuICAgIGNvbnN0IHRhYnNEYXRhID0gdGhpcy5kYXRhXG4gICAgICAuZmlsdGVyKChkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkgPT4gIWRhdGEuaW5zZXJ0aW9uTW9kZSlcbiAgICAgIC5tYXAoKGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKSA9PiAoe1xuICAgICAgICBwYXJhbXM6IGRhdGEucGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtczogZGF0YS5xdWVyeVBhcmFtcyxcbiAgICAgICAgdXJsU2VnbWVudHM6IGRhdGEudXJsU2VnbWVudHMsXG4gICAgICAgIHVybDogZGF0YS51cmwsXG4gICAgICAgIGxhYmVsOiBkYXRhLmxhYmVsLFxuICAgICAgICBpbnNlcnRpb25Nb2RlOiBkYXRhLmluc2VydGlvbk1vZGVcbiAgICAgIH0pKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGFic0RhdGE6IHRhYnNEYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleDogdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4XG4gICAgfTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuc3RhdGUpIHx8ICFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRhYnNEYXRhKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElzc3VlICM4ODQgZW5zdXJpbmcgdGhhdCBhIGluc2VydGlvbiBtb2RlIHRhYiB0aGF0IG1pZ2h0IGJlIHByZXZpb3VzbHkgc3RvcmVkIHdvbnQgYmUgY3JlYXRlZFxuICAgIHRoaXMuc3RhdGUudGFic0RhdGEgPSB0aGlzLnN0YXRlLnRhYnNEYXRhLmZpbHRlcih0YWJEYXRhID0+ICF0YWJEYXRhLmluc2VydGlvbk1vZGUpXG5cbiAgICBpZiAodGhpcy5zdGF0ZS50YWJzRGF0YS5sZW5ndGggPj0gMSAmJiAodGhpcy5zdGF0ZS50YWJzRGF0YVswXS51cmwgfHwgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcubmV4dCh0cnVlKTtcblxuICAgICAgY29uc3Qgem9uZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nWm9uZSk7XG4gICAgICBmcm9tKHRoaXMuc3RhdGUudGFic0RhdGEpLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCh0YWIgPT4gb2YodGFiKS5waXBlKGRlbGF5KDEwMCkpKVxuICAgICAgKS5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7fVxuICAgICAgICBleHRyYXNbJ3JlbGF0aXZlVG8nXSA9IHRoaXMuYWN0Um91dGU7XG4gICAgICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gdGFiLnF1ZXJ5UGFyYW1zO1xuICAgICAgICBleHRyYXNbQ29kZXMuUVVFUllfUEFSQU1TXVtDb2Rlcy5JTlNFUlRJT05fTU9ERV0gPSB0YWIuaW5zZXJ0aW9uTW9kZTtcblxuICAgICAgICBpZiAodGhpcy5mb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuc2V0QXNBY3RpdmVGb3JtTGF5b3V0TWFuYWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIHpvbmUucnVuKCgpID0+XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RhYi51cmxdLCBleHRyYXMpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnNob3dMb2FkaW5nLm5leHQoZmFsc2UpKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2hvd0xvYWRpbmcubmV4dCh0cnVlKSlcbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZURldGFpbENvbXBvbmVudChjb21wb25lbnQ6IGFueSwgcGFyYW1zT2JqOiBhbnkpIHtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zT2JqLnBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXNPYmoucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogcGFyYW1zT2JqLnVybFNlZ21lbnRzLFxuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICB1cmw6IHBhcmFtc09iai51cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6IHBhcmFtc09iai5sYWJlbCxcbiAgICAgIGlubmVyRm9ybXNJbmZvOiB7fVxuICAgIH07XG4gICAgcmV0dXJuIG5ld0RldGFpbENvbXA7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhWzBdKSA/IHRoaXMuZGF0YVswXS5wYXJhbXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaXJzdFRhYiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtdGFiLWJvZHknKVswXTtcbiAgICByZXR1cm4gZmlyc3RUYWIgJiYgY29tcC5lbGVtZW50UmVmICYmIGZpcnN0VGFiLmNvbnRhaW5zKGNvbXAuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG9wZW5EZXRhaWwoZGV0YWlsOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIHRoaXMuYWRkVGFiKGRldGFpbCk7XG4gIH1cblxuICBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucykge1xuICAgIHRoaXMuY2xvc2VUYWIodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4IC0gMSwgb3B0aW9ucyk7XG4gIH1cblxuICBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgLy8gVGhlIG1heCB0YWJzIG51bWJlciBpbmNsdWRlcyB0aGUgbWFpbiB0YWJcbiAgICBjb25zdCBtYXhSZWFjaGVkID0gKHRoaXMuZGF0YS5sZW5ndGggKyAxKSA+PSB0aGlzLm1heFRhYnM7XG4gICAgaWYgKG1heFJlYWNoZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKCdJTkZPJywgJ0xBWU9VVF9NQU5BTkdFUi5NQVhfVEFCU19OVU1CRVJfUkVBQ0hFRCcpXG4gICAgfVxuICAgIHJldHVybiAhbWF4UmVhY2hlZDtcbiAgfVxuXG4gIGlzVGFiRGF0YU1vZGlmaWVkKHRhYkRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRhYkRhdGEuaW5uZXJGb3Jtc0luZm8pLnNvbWUoZm9ybUF0dHIgPT4gdGFiRGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl0ubW9kaWZpZWQpO1xuICB9XG5cbiAgY2xvc2VEZXRhaWxzKGRldGFpbHNLZXlzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpIHtcbiAgICBkZXRhaWxzS2V5c0RhdGEuZm9yRWFjaCgoZGV0YWlsRGF0YSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRhdGEuZmluZEluZGV4KChpdGVtKSA9PiBVdGlsLmlzRXF1aXZhbGVudChkZXRhaWxEYXRhLCBpdGVtLnBhcmFtcyB8fCB7fSkpO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gMV0gPyB0aGlzLmRhdGFbdGhpcy5kYXRhLmxlbmd0aCAtIDFdLmlkIDogdGhpcy5kYXRhLmxlbmd0aC50b1N0cmluZygpO1xuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgb1RhYkdyb3VwPVwib250aW1pemVcIiBmeEZpbGwgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiU2VsZWN0Q2hhbmdlKCRldmVudClcIiBbY29sb3JdPVwiY29sb3JcIlxuICBbYmFja2dyb3VuZENvbG9yXT1cImJhY2tncm91bmRDb2xvclwiIFtoZWFkZXJQb3NpdGlvbl09XCJoZWFkZXJQb3NpdGlvblwiIFtALmRpc2FibGVkXT1cImRpc2FibGVBbmltYXRpb25cIiBbbWF0LXN0cmV0Y2gtdGFic109XCJzdHJldGNoVGFic1wiPlxuICA8bWF0LXRhYiBsYWJlbD1cInt7IG1haW5UYWJUaXRsZSB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbWF0LXRhYj5cbiAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYkRhdGEgb2YgZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0YWItbGFiZWxcIiBbY2xhc3MubW9kaWZpZWRdPVwiaXNUYWJEYXRhTW9kaWZpZWQodGFiRGF0YSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImljb24gJiYgaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlTWF0VGFiTGFiZWwgJiYgdGFiRGF0YS5mb3JtRGF0YUJ5TGFiZWxDb2x1bW5zICYmICF0YWJEYXRhLmluc2VydGlvbk1vZGUgXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlTWF0VGFiTGFiZWw7Y29udGV4dDp7JGltcGxpY2l0OnRhYkRhdGEuZm9ybURhdGFCeUxhYmVsQ29sdW1uc31cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGVtcGxhdGVNYXRUYWJMYWJlbCB8fCB0YWJEYXRhLmluc2VydGlvbk1vZGVcIj5cbiAgICAgICAgICB7eyB0YWJEYXRhLmxhYmVsIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWNvbiAmJiAhaXNJY29uUG9zaXRpb25MZWZ0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJncmFkaWVudC1sYXllclwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiY2xvc2VUYWIoaSlcIiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG8tZm9ybS1sYXlvdXQtbWFuYWdlci1jb250ZW50IFtpbmRleF09XCJpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPlxuPGRpdiAqbmdJZj1cInNob3dMb2FkaW5nIHwgYXN5bmNcIiBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBzdHJva2VXaWR0aD1cIjNcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuPC9kaXY+XG4iXX0=
@@ -216,7 +216,7 @@ export class OTableComponentStateService extends AbstractComponentStateService {
216
216
  }
217
217
  getSortState() {
218
218
  const sortColumns = [];
219
- this.component.sort.getSortColumns().forEach(sortData => {
219
+ this.component.sort?.getSortColumns().forEach(sortData => {
220
220
  sortColumns.push(sortData.id + Codes.COLUMNS_ALIAS_SEPARATOR + sortData.direction);
221
221
  });
222
222
  return {
@@ -229,4 +229,4 @@ OTableComponentStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "1
229
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableComponentStateService, decorators: [{
230
230
  type: Injectable
231
231
  }] });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb21wb25lbnQtc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9zdGF0ZS9vLXRhYmxlLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHNUUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDZCQUF5RTtJQUV4SCxVQUFVLENBQUMsU0FBMEI7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDN0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWdDO1FBQzlDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDN0QsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNsRCxDQUFD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QUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEQsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsY0FBYyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1NBQzlELENBQUM7SUFDSixDQUFDOzt5SEFqUFUsMkJBQTJCOzZIQUEzQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL28tZmlsdGVyLWRlZmluaXRpb24udHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uRGlzcGxheSB9IGZyb20gJy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLWRpc3BsYXkudHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uU2VhcmNoYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLXNlYXJjaGFibGUudHlwZSc7XG5pbXBvcnQgeyBPVGFibGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1jb25maWd1cmF0aW9uLnR5cGUnO1xuaW1wb3J0IHsgT1RhYmxlRmlsdGVyc1N0YXR1cywgT1RhYmxlU3RvcmVkRmlsdGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItc3RhdHVzLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4vby10YWJsZS1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29tcG9uZW50U3RhdGVTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2U8T1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcywgT1RhYmxlQ29tcG9uZW50PiB7XG5cbiAgaW5pdGlhbGl6ZShjb21wb25lbnQ6IE9UYWJsZUNvbXBvbmVudCkge1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcygpO1xuICAgIHN1cGVyLmluaXRpYWxpemUoY29tcG9uZW50KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZShzdGF0ZTogT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcykge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZShzdGF0ZSk7XG4gICAgY29uc3QgaW5pdGlhbENvbmZpZ3VyYXRpb25SYXdPYmogPSBzdGF0ZS5pbml0aWFsQ29uZmlndXJhdGlvbiB8fCB7fTtcbiAgICBzdGF0ZS5pbml0aWFsQ29uZmlndXJhdGlvbiA9IG5ldyBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzKCk7XG4gICAgc3RhdGUuaW5pdGlhbENvbmZpZ3VyYXRpb24uc2V0RGF0YShpbml0aWFsQ29uZmlndXJhdGlvblJhd09iaik7XG4gIH1cblxuICByZWZyZXNoU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb25TdGF0ZSgpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBkYXRhVG9TdG9yZTogYW55ID0ge307XG4gICAgY29uc3QgcHJvcGVydGllc0tleXMgPSBbXG4gICAgICAnc29ydC1jb2x1bW5zJyxcbiAgICAgICdvQ29sdW1ucy1kaXNwbGF5JyxcbiAgICAgICdjb2x1bW5zLWZpbHRlcicsXG4gICAgICAncXVpY2stZmlsdGVyJyxcbiAgICAgICdwYWdlJyxcbiAgICAgICdzZWxlY3Rpb24nLFxuICAgICAgJ2luaXRpYWwtY29uZmlndXJhdGlvbicsXG4gICAgICAnZmlsdGVyLWNvbHVtbnMnLFxuICAgICAgJ2ZpbHRlci1jb2x1bW4tYWN0aXZlJyxcbiAgICAgICdncm91cGVkLWNvbHVtbnMnLFxuICAgICAgJ2dyb3VwZWQtY29sdW1uLXR5cGVzJyxcbiAgICAgICd1c2VyLXN0b3JlZC1maWx0ZXJzJyxcbiAgICAgICd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucydcbiAgICBdO1xuICAgIE9iamVjdC5hc3NpZ24oZGF0YVRvU3RvcmUsIHRoaXMuZ2V0VGFibGVQcm9wZXJ0aWVzVG9TdG9yZShwcm9wZXJ0aWVzS2V5cykpO1xuICAgIHJldHVybiBkYXRhVG9TdG9yZTtcbiAgfVxuXG4gIHN0b3JlRmlsdGVyKGZpbHRlcjogT0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICBsZXQgbmV3RmlsdGVyOiBPVGFibGVGaWx0ZXJzU3RhdHVzID0geyBuYW1lOiBmaWx0ZXIubmFtZSwgZGVzY3JpcHRpb246IGZpbHRlci5kZXNjcmlwdGlvbiB9O1xuICAgIGNvbnN0IHN0b3JlZEZpbHRlciA9IHt9XG4gICAgT2JqZWN0LmFzc2lnbihzdG9yZWRGaWx0ZXIsIHRoaXMuZ2V0Q29sdW1uRmlsdGVyc1N0YXRlKCkpO1xuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVkRmlsdGVyLCB0aGlzLmdldENvbHVtbnNRdWlja0ZpbHRlclN0YXRlKCkpO1xuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVkRmlsdGVyLCB0aGlzLmdldEZpbHRlckJ1aWxkZXJTdGF0ZSgpKTtcbiAgICBuZXdGaWx0ZXJbJ3N0b3JlZC1maWx0ZXInXSA9IHN0b3JlZEZpbHRlciBhcyBPVGFibGVTdG9yZWRGaWx0ZXI7XG4gICAgdGhpcy5zdGF0ZS5hZGRTdG9yZWRGaWx0ZXIobmV3RmlsdGVyKTtcbiAgfVxuXG4gIHN0b3JlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uQWdzOiBPVGFibGVDb25maWd1cmF0aW9uLCB0YWJsZVByb3BlcnRpZXM6IGFueVtdKSB7XG4gICAgY29uc3QgbmV3Q29uZmlndXJhdGlvbjogT1RhYmxlQ29uZmlndXJhdGlvbiA9IHt9O1xuICAgIHRoaXMuY29tcG9uZW50LnN0b3JlUGFnaW5hdGlvblN0YXRlID0gdHJ1ZTtcbiAgICBjb25zdCBzdG9yZWRDb25maWd1cmF0aW9uID0gdGhpcy5nZXRUYWJsZVByb3BlcnRpZXNUb1N0b3JlKHRhYmxlUHJvcGVydGllcyk7XG4gICAgdGhpcy5jb21wb25lbnQuc3RvcmVQYWdpbmF0aW9uU3RhdGUgPSBmYWxzZTtcblxuICAgIG5ld0NvbmZpZ3VyYXRpb25bJ3N0b3JlZC1jb25maWd1cmF0aW9uJ10gPSBzdG9yZWRDb25maWd1cmF0aW9uO1xuICAgIE9iamVjdC5hc3NpZ24obmV3Q29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbkFncyk7XG4gICAgbmV3Q29uZmlndXJhdGlvblsnc3RvcmVkLXByb3BlcnRpZXMnXSA9IHRhYmxlUHJvcGVydGllcztcblxuICAgIHRoaXMuc3RhdGUuYWRkU3RvcmVkQ29uZmlndXJhdGlvbihuZXdDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUYWJsZVByb3BlcnRpZXNUb1N0b3JlKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5nZXRUYWJsZVByb3BlcnR5VG9TdG9yZShwcm9wKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUYWJsZVByb3BlcnR5VG9TdG9yZShwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICBjYXNlICdzb3J0LWNvbHVtbnMnOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldFNvcnRTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29Db2x1bW5zLWRpc3BsYXknOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbnNEaXNwbGF5U3RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdxdWljay1maWx0ZXInOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbnNRdWlja0ZpbHRlclN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29sdW1ucy1maWx0ZXInOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbkZpbHRlcnNTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldFBhZ2VTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdGlvbic6XG4gICAgICAgIHJlc3VsdFsnc2VsZWN0aW9uJ10gPSB0aGlzLmdldFNlbGVjdGlvblN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5pdGlhbC1jb25maWd1cmF0aW9uJzpcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5nZXRJbml0aWFsQ29uZmlndXJhdGlvblN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWNvbHVtbi1hY3RpdmUnOlxuICAgICAgICByZXN1bHRbJ2ZpbHRlci1jb2x1bW4tYWN0aXZlJ10gPSB0aGlzLmNvbXBvbmVudC5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWNvbHVtbnMnOlxuICAgICAgICByZXN1bHRbJ2ZpbHRlci1jb2x1bW5zJ10gPSB0aGlzLmNvbXBvbmVudC5maWx0ZXJDb2x1bW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwZWQtY29sdW1ucyc6XG4gICAgICAgIHJlc3VsdFsnZ3JvdXBlZC1jb2x1bW5zJ10gPSB0aGlzLmNvbXBvbmVudC5ncm91cGVkQ29sdW1uc0FycmF5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwZWQtY29sdW1uLXR5cGVzJzpcbiAgICAgICAgcmVzdWx0Wydncm91cGVkLWNvbHVtbi10eXBlcyddID0gdGhpcy5jb21wb25lbnQuZ3JvdXBlZENvbHVtblR5cGVzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VzZXItc3RvcmVkLWZpbHRlcnMnOlxuICAgICAgICByZXN1bHRbJ3VzZXItc3RvcmVkLWZpbHRlcnMnXSA9IHRoaXMuc3RhdGUuc3RvcmVkRmlsdGVycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucyc6XG4gICAgICAgIHJlc3VsdFsndXNlci1zdG9yZWQtY29uZmlndXJhdGlvbnMnXSA9IHRoaXMuc3RhdGUuc3RvcmVkQ29uZmlndXJhdGlvbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWJ1aWxkZXInOlxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnQuZmlsdGVyQnVpbGRlcikge1xuICAgICAgICAgIHJlc3VsdFsnZmlsdGVyLWJ1aWxkZXInXSA9IHRoaXMuY29tcG9uZW50LmZpbHRlckJ1aWxkZXIuZ2V0RmlsdGVyVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uc0Rpc3BsYXlTdGF0ZSgpIHtcbiAgICBjb25zdCBvQ29sdW1uc0RhdGEgPSBbXTtcbiAgICB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLmNvbHVtbnMuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgb0NvbHVtbnNEYXRhLnB1c2goe1xuICAgICAgICBhdHRyOiBvQ29sLmF0dHIsXG4gICAgICAgIHZpc2libGU6IG9Db2wudmlzaWJsZSxcbiAgICAgICAgd2lkdGg6IG9Db2wuZ2V0V2lkdGhUb1N0b3JlKClcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAnb0NvbHVtbnMtZGlzcGxheSc6IG9Db2x1bW5zRGF0YSxcbiAgICAgICdzZWxlY3QtY29sdW1uLXZpc2libGUnOiB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zUXVpY2tGaWx0ZXJTdGF0ZSgpIHtcbiAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zO1xuICAgIGNvbnN0IG9Db2x1bW5zRGF0YTogT0NvbHVtblNlYXJjaGFibGVbXSA9IFtdO1xuICAgIHRhYmxlT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goKG9Db2w6IE9Db2x1bW4pID0+IHtcbiAgICAgIG9Db2x1bW5zRGF0YS5wdXNoKHtcbiAgICAgICAgYXR0cjogb0NvbC5hdHRyLFxuICAgICAgICBzZWFyY2hhYmxlOiBvQ29sLnNlYXJjaGFibGUsXG4gICAgICAgIHNlYXJjaGluZzogb0NvbC5zZWFyY2hpbmdcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAnb0NvbHVtbnMnOiBvQ29sdW1uc0RhdGEsXG4gICAgICAnZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJzogdGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmUsXG4gICAgICAnZmlsdGVyJzogdGhpcy5jb21wb25lbnQub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQgPyB0aGlzLmNvbXBvbmVudC5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudC52YWx1ZSA6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJCdWlsZGVyU3RhdGUoKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAodGhpcy5jb21wb25lbnQuZmlsdGVyQnVpbGRlcikge1xuICAgICAgbGV0IGZpbHRlckJ1aWxkZXIgPSB0aGlzLmNvbXBvbmVudC5maWx0ZXJCdWlsZGVyLmdldEZpbHRlclZhbHVlcygpO1xuICAgICAgaWYgKCFVdGlsLmlzT2JqZWN0RW1wdHkoZmlsdGVyQnVpbGRlcikpIHtcbiAgICAgICAgcmVzdWx0WydmaWx0ZXItYnVpbGRlci12YWx1ZXMnXSA9IGZpbHRlckJ1aWxkZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5GaWx0ZXJzU3RhdGUoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKHRoaXMuY29tcG9uZW50LmRhdGFTb3VyY2UpIHtcbiAgICAgIGNvbnN0IGNvbHVtblZhbHVlRmlsdGVycyA9IHRoaXMuY29tcG9uZW50LmRhdGFTb3VyY2UuZ2V0Q29sdW1uVmFsdWVGaWx0ZXJzKCk7XG4gICAgICBpZiAoY29sdW1uVmFsdWVGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0Wydjb2x1bW4tdmFsdWUtZmlsdGVycyddID0gY29sdW1uVmFsdWVGaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFBhZ2VTdGF0ZSgpOiBhbnkge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgJ3F1ZXJ5LXJvd3MnOiB0aGlzLmNvbXBvbmVudC5tYXRwYWdpbmF0b3IgPyB0aGlzLmNvbXBvbmVudC5tYXRwYWdpbmF0b3IucGFnZVNpemUgOiAnJ1xuICAgIH07XG4gICAgaWYgKHRoaXMuY29tcG9uZW50LmN1cnJlbnRQYWdlID4gMCAmJiB0aGlzLmNvbXBvbmVudC5zdG9yZVBhZ2luYXRpb25TdGF0ZSkge1xuICAgICAgcmVzdWx0LmN1cnJlbnRQYWdlID0gdGhpcy5jb21wb25lbnQuY3VycmVudFBhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBvbmVudC5wYWdlYWJsZSAmJiB0aGlzLmNvbXBvbmVudC5zdG9yZVBhZ2luYXRpb25TdGF0ZSkge1xuICAgICAgcmVzdWx0LnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gdGhpcy5jb21wb25lbnQuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXI7XG4gICAgICByZXN1bHQucXVlcnlSZWNvcmRPZmZzZXQgPSBNYXRoLm1heChcbiAgICAgICAgKHRoaXMuY29tcG9uZW50LnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IC0gdGhpcy5jb21wb25lbnQuZGF0YVNvdXJjZS5yZW5kZXJlZERhdGEubGVuZ3RoKSxcbiAgICAgICAgKHRoaXMuY29tcG9uZW50LnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IC0gdGhpcy5jb21wb25lbnQucXVlcnlSb3dzKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTZWxlY3Rpb25TdGF0ZSgpOiBhbnkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IFtdO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudCAmJiB0aGlzLmNvbXBvbmVudC5rZWVwU2VsZWN0ZWRJdGVtcykge1xuICAgICAgLy8gc3RvcmluZyBzZWxlY3RlZCBpdGVtcyBrZXlzIHZhbHVlc1xuICAgICAgY29uc3QgdGFibGVLZXlzID0gdGhpcy5jb21wb25lbnQuZ2V0S2V5cygpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZ2V0U2VsZWN0ZWRJdGVtcygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgdGFibGVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBkYXRhW2tleV0gPSBpdGVtW2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxlY3Rpb24ucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEluaXRpYWxDb25maWd1cmF0aW9uU3RhdGUoKTogYW55IHtcbiAgICBjb25zdCBvQ29sdW1uc0RhdGE6IE9Db2x1bW5EaXNwbGF5W10gPSBbXTtcbiAgICBVdGlsLnBhcnNlQXJyYXkodGhpcy5jb21wb25lbnQudmlzaWJsZUNvbHVtbnMsIHRydWUpLmZvckVhY2goKGNvbHVtbkF0dHI6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IG9Db2wgPSB0aGlzLmNvbXBvbmVudC5nZXRPQ29sdW1uKGNvbHVtbkF0dHIpO1xuICAgICAgb0NvbHVtbnNEYXRhLnB1c2goe1xuICAgICAgICBhdHRyOiBvQ29sLmF0dHIsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiBvQ29sLmRlZmluaXRpb24gPyBvQ29sLmRlZmluaXRpb24ub3JpZ2luYWxXaWR0aCA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICdpbml0aWFsLWNvbmZpZ3VyYXRpb24nOiB7XG4gICAgICAgICdvQ29sdW1ucy1kaXNwbGF5Jzogb0NvbHVtbnNEYXRhLFxuICAgICAgICAnc29ydC1jb2x1bW5zJzogdGhpcy5jb21wb25lbnQuc29ydENvbHVtbnMsXG4gICAgICAgICdzZWxlY3QtY29sdW1uLXZpc2libGUnOiB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlLFxuICAgICAgICAnZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJzogdGhpcy5jb21wb25lbnQuZmlsdGVyQ2FzZVNlbnNpdGl2ZSxcbiAgICAgICAgJ3F1ZXJ5LXJvd3MnOiB0aGlzLmNvbXBvbmVudC5vcmlnaW5hbFF1ZXJ5Um93cyxcbiAgICAgICAgJ2ZpbHRlci1jb2x1bW4tYWN0aXZlLWJ5LWRlZmF1bHQnOiB0aGlzLmNvbXBvbmVudC5maWx0ZXJDb2x1bW5BY3RpdmVCeURlZmF1bHQsXG4gICAgICAgICdmaWx0ZXItY29sdW1ucyc6IHRoaXMuY29tcG9uZW50Lm9yaWdpbmFsRmlsdGVyQ29sdW1ucyxcbiAgICAgICAgJ2dyb3VwZWQtY29sdW1ucyc6IHRoaXMuY29tcG9uZW50Lm9yaWdpbmFsR3JvdXBlZENvbHVtbnNBcnJheVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U29ydFN0YXRlKCkge1xuICAgIGNvbnN0IHNvcnRDb2x1bW5zID0gW107XG4gICAgdGhpcy5jb21wb25lbnQuc29ydC5nZXRTb3J0Q29sdW1ucygpLmZvckVhY2goc29ydERhdGEgPT4ge1xuICAgICAgc29ydENvbHVtbnMucHVzaChzb3J0RGF0YS5pZCArIENvZGVzLkNPTFVNTlNfQUxJQVNfU0VQQVJBVE9SICsgc29ydERhdGEuZGlyZWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgJ3NvcnQtY29sdW1ucyc6IHNvcnRDb2x1bW5zLmpvaW4oQ29kZXMuQVJSQVlfSU5QVVRfU0VQQVJBVE9SKVxuICAgIH07XG4gIH1cbn1cblxuXG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb21wb25lbnQtc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9zdGF0ZS9vLXRhYmxlLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHNUUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDZCQUF5RTtJQUV4SCxVQUFVLENBQUMsU0FBMEI7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDN0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWdDO1FBQzlDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDN0QsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNsRCxDQUFD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QUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkQsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsY0FBYyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1NBQzlELENBQUM7SUFDSixDQUFDOzt5SEFqUFUsMkJBQTJCOzZIQUEzQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL28tZmlsdGVyLWRlZmluaXRpb24udHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uRGlzcGxheSB9IGZyb20gJy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLWRpc3BsYXkudHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uU2VhcmNoYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLXNlYXJjaGFibGUudHlwZSc7XG5pbXBvcnQgeyBPVGFibGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1jb25maWd1cmF0aW9uLnR5cGUnO1xuaW1wb3J0IHsgT1RhYmxlRmlsdGVyc1N0YXR1cywgT1RhYmxlU3RvcmVkRmlsdGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItc3RhdHVzLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4vby10YWJsZS1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29tcG9uZW50U3RhdGVTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2U8T1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcywgT1RhYmxlQ29tcG9uZW50PiB7XG5cbiAgaW5pdGlhbGl6ZShjb21wb25lbnQ6IE9UYWJsZUNvbXBvbmVudCkge1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcygpO1xuICAgIHN1cGVyLmluaXRpYWxpemUoY29tcG9uZW50KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZShzdGF0ZTogT1RhYmxlQ29tcG9uZW50U3RhdGVDbGFzcykge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZShzdGF0ZSk7XG4gICAgY29uc3QgaW5pdGlhbENvbmZpZ3VyYXRpb25SYXdPYmogPSBzdGF0ZS5pbml0aWFsQ29uZmlndXJhdGlvbiB8fCB7fTtcbiAgICBzdGF0ZS5pbml0aWFsQ29uZmlndXJhdGlvbiA9IG5ldyBPVGFibGVDb21wb25lbnRTdGF0ZUNsYXNzKCk7XG4gICAgc3RhdGUuaW5pdGlhbENvbmZpZ3VyYXRpb24uc2V0RGF0YShpbml0aWFsQ29uZmlndXJhdGlvblJhd09iaik7XG4gIH1cblxuICByZWZyZXNoU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc3RhdGUuc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb25TdGF0ZSgpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBkYXRhVG9TdG9yZTogYW55ID0ge307XG4gICAgY29uc3QgcHJvcGVydGllc0tleXMgPSBbXG4gICAgICAnc29ydC1jb2x1bW5zJyxcbiAgICAgICdvQ29sdW1ucy1kaXNwbGF5JyxcbiAgICAgICdjb2x1bW5zLWZpbHRlcicsXG4gICAgICAncXVpY2stZmlsdGVyJyxcbiAgICAgICdwYWdlJyxcbiAgICAgICdzZWxlY3Rpb24nLFxuICAgICAgJ2luaXRpYWwtY29uZmlndXJhdGlvbicsXG4gICAgICAnZmlsdGVyLWNvbHVtbnMnLFxuICAgICAgJ2ZpbHRlci1jb2x1bW4tYWN0aXZlJyxcbiAgICAgICdncm91cGVkLWNvbHVtbnMnLFxuICAgICAgJ2dyb3VwZWQtY29sdW1uLXR5cGVzJyxcbiAgICAgICd1c2VyLXN0b3JlZC1maWx0ZXJzJyxcbiAgICAgICd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucydcbiAgICBdO1xuICAgIE9iamVjdC5hc3NpZ24oZGF0YVRvU3RvcmUsIHRoaXMuZ2V0VGFibGVQcm9wZXJ0aWVzVG9TdG9yZShwcm9wZXJ0aWVzS2V5cykpO1xuICAgIHJldHVybiBkYXRhVG9TdG9yZTtcbiAgfVxuXG4gIHN0b3JlRmlsdGVyKGZpbHRlcjogT0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICBsZXQgbmV3RmlsdGVyOiBPVGFibGVGaWx0ZXJzU3RhdHVzID0geyBuYW1lOiBmaWx0ZXIubmFtZSwgZGVzY3JpcHRpb246IGZpbHRlci5kZXNjcmlwdGlvbiB9O1xuICAgIGNvbnN0IHN0b3JlZEZpbHRlciA9IHt9XG4gICAgT2JqZWN0LmFzc2lnbihzdG9yZWRGaWx0ZXIsIHRoaXMuZ2V0Q29sdW1uRmlsdGVyc1N0YXRlKCkpO1xuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVkRmlsdGVyLCB0aGlzLmdldENvbHVtbnNRdWlja0ZpbHRlclN0YXRlKCkpO1xuICAgIE9iamVjdC5hc3NpZ24oc3RvcmVkRmlsdGVyLCB0aGlzLmdldEZpbHRlckJ1aWxkZXJTdGF0ZSgpKTtcbiAgICBuZXdGaWx0ZXJbJ3N0b3JlZC1maWx0ZXInXSA9IHN0b3JlZEZpbHRlciBhcyBPVGFibGVTdG9yZWRGaWx0ZXI7XG4gICAgdGhpcy5zdGF0ZS5hZGRTdG9yZWRGaWx0ZXIobmV3RmlsdGVyKTtcbiAgfVxuXG4gIHN0b3JlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uQWdzOiBPVGFibGVDb25maWd1cmF0aW9uLCB0YWJsZVByb3BlcnRpZXM6IGFueVtdKSB7XG4gICAgY29uc3QgbmV3Q29uZmlndXJhdGlvbjogT1RhYmxlQ29uZmlndXJhdGlvbiA9IHt9O1xuICAgIHRoaXMuY29tcG9uZW50LnN0b3JlUGFnaW5hdGlvblN0YXRlID0gdHJ1ZTtcbiAgICBjb25zdCBzdG9yZWRDb25maWd1cmF0aW9uID0gdGhpcy5nZXRUYWJsZVByb3BlcnRpZXNUb1N0b3JlKHRhYmxlUHJvcGVydGllcyk7XG4gICAgdGhpcy5jb21wb25lbnQuc3RvcmVQYWdpbmF0aW9uU3RhdGUgPSBmYWxzZTtcblxuICAgIG5ld0NvbmZpZ3VyYXRpb25bJ3N0b3JlZC1jb25maWd1cmF0aW9uJ10gPSBzdG9yZWRDb25maWd1cmF0aW9uO1xuICAgIE9iamVjdC5hc3NpZ24obmV3Q29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbkFncyk7XG4gICAgbmV3Q29uZmlndXJhdGlvblsnc3RvcmVkLXByb3BlcnRpZXMnXSA9IHRhYmxlUHJvcGVydGllcztcblxuICAgIHRoaXMuc3RhdGUuYWRkU3RvcmVkQ29uZmlndXJhdGlvbihuZXdDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUYWJsZVByb3BlcnRpZXNUb1N0b3JlKHByb3BlcnRpZXM6IHN0cmluZ1tdKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBwcm9wZXJ0aWVzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5nZXRUYWJsZVByb3BlcnR5VG9TdG9yZShwcm9wKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUYWJsZVByb3BlcnR5VG9TdG9yZShwcm9wZXJ0eTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICBjYXNlICdzb3J0LWNvbHVtbnMnOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldFNvcnRTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29Db2x1bW5zLWRpc3BsYXknOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbnNEaXNwbGF5U3RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdxdWljay1maWx0ZXInOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbnNRdWlja0ZpbHRlclN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29sdW1ucy1maWx0ZXInOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldENvbHVtbkZpbHRlcnNTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgICByZXN1bHQgPSB0aGlzLmdldFBhZ2VTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdGlvbic6XG4gICAgICAgIHJlc3VsdFsnc2VsZWN0aW9uJ10gPSB0aGlzLmdldFNlbGVjdGlvblN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5pdGlhbC1jb25maWd1cmF0aW9uJzpcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5nZXRJbml0aWFsQ29uZmlndXJhdGlvblN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWNvbHVtbi1hY3RpdmUnOlxuICAgICAgICByZXN1bHRbJ2ZpbHRlci1jb2x1bW4tYWN0aXZlJ10gPSB0aGlzLmNvbXBvbmVudC5pc0NvbHVtbkZpbHRlcnNBY3RpdmU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWNvbHVtbnMnOlxuICAgICAgICByZXN1bHRbJ2ZpbHRlci1jb2x1bW5zJ10gPSB0aGlzLmNvbXBvbmVudC5maWx0ZXJDb2x1bW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwZWQtY29sdW1ucyc6XG4gICAgICAgIHJlc3VsdFsnZ3JvdXBlZC1jb2x1bW5zJ10gPSB0aGlzLmNvbXBvbmVudC5ncm91cGVkQ29sdW1uc0FycmF5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwZWQtY29sdW1uLXR5cGVzJzpcbiAgICAgICAgcmVzdWx0Wydncm91cGVkLWNvbHVtbi10eXBlcyddID0gdGhpcy5jb21wb25lbnQuZ3JvdXBlZENvbHVtblR5cGVzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VzZXItc3RvcmVkLWZpbHRlcnMnOlxuICAgICAgICByZXN1bHRbJ3VzZXItc3RvcmVkLWZpbHRlcnMnXSA9IHRoaXMuc3RhdGUuc3RvcmVkRmlsdGVycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1c2VyLXN0b3JlZC1jb25maWd1cmF0aW9ucyc6XG4gICAgICAgIHJlc3VsdFsndXNlci1zdG9yZWQtY29uZmlndXJhdGlvbnMnXSA9IHRoaXMuc3RhdGUuc3RvcmVkQ29uZmlndXJhdGlvbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlsdGVyLWJ1aWxkZXInOlxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnQuZmlsdGVyQnVpbGRlcikge1xuICAgICAgICAgIHJlc3VsdFsnZmlsdGVyLWJ1aWxkZXInXSA9IHRoaXMuY29tcG9uZW50LmZpbHRlckJ1aWxkZXIuZ2V0RmlsdGVyVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uc0Rpc3BsYXlTdGF0ZSgpIHtcbiAgICBjb25zdCBvQ29sdW1uc0RhdGEgPSBbXTtcbiAgICB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLmNvbHVtbnMuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgb0NvbHVtbnNEYXRhLnB1c2goe1xuICAgICAgICBhdHRyOiBvQ29sLmF0dHIsXG4gICAgICAgIHZpc2libGU6IG9Db2wudmlzaWJsZSxcbiAgICAgICAgd2lkdGg6IG9Db2wuZ2V0V2lkdGhUb1N0b3JlKClcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAnb0NvbHVtbnMtZGlzcGxheSc6IG9Db2x1bW5zRGF0YSxcbiAgICAgICdzZWxlY3QtY29sdW1uLXZpc2libGUnOiB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5zUXVpY2tGaWx0ZXJTdGF0ZSgpIHtcbiAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zO1xuICAgIGNvbnN0IG9Db2x1bW5zRGF0YTogT0NvbHVtblNlYXJjaGFibGVbXSA9IFtdO1xuICAgIHRhYmxlT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goKG9Db2w6IE9Db2x1bW4pID0+IHtcbiAgICAgIG9Db2x1bW5zRGF0YS5wdXNoKHtcbiAgICAgICAgYXR0cjogb0NvbC5hdHRyLFxuICAgICAgICBzZWFyY2hhYmxlOiBvQ29sLnNlYXJjaGFibGUsXG4gICAgICAgIHNlYXJjaGluZzogb0NvbC5zZWFyY2hpbmdcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAnb0NvbHVtbnMnOiBvQ29sdW1uc0RhdGEsXG4gICAgICAnZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJzogdGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmUsXG4gICAgICAnZmlsdGVyJzogdGhpcy5jb21wb25lbnQub1RhYmxlUXVpY2tGaWx0ZXJDb21wb25lbnQgPyB0aGlzLmNvbXBvbmVudC5vVGFibGVRdWlja0ZpbHRlckNvbXBvbmVudC52YWx1ZSA6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJCdWlsZGVyU3RhdGUoKTogYW55IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAodGhpcy5jb21wb25lbnQuZmlsdGVyQnVpbGRlcikge1xuICAgICAgbGV0IGZpbHRlckJ1aWxkZXIgPSB0aGlzLmNvbXBvbmVudC5maWx0ZXJCdWlsZGVyLmdldEZpbHRlclZhbHVlcygpO1xuICAgICAgaWYgKCFVdGlsLmlzT2JqZWN0RW1wdHkoZmlsdGVyQnVpbGRlcikpIHtcbiAgICAgICAgcmVzdWx0WydmaWx0ZXItYnVpbGRlci12YWx1ZXMnXSA9IGZpbHRlckJ1aWxkZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5GaWx0ZXJzU3RhdGUoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKHRoaXMuY29tcG9uZW50LmRhdGFTb3VyY2UpIHtcbiAgICAgIGNvbnN0IGNvbHVtblZhbHVlRmlsdGVycyA9IHRoaXMuY29tcG9uZW50LmRhdGFTb3VyY2UuZ2V0Q29sdW1uVmFsdWVGaWx0ZXJzKCk7XG4gICAgICBpZiAoY29sdW1uVmFsdWVGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0Wydjb2x1bW4tdmFsdWUtZmlsdGVycyddID0gY29sdW1uVmFsdWVGaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFBhZ2VTdGF0ZSgpOiBhbnkge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgJ3F1ZXJ5LXJvd3MnOiB0aGlzLmNvbXBvbmVudC5tYXRwYWdpbmF0b3IgPyB0aGlzLmNvbXBvbmVudC5tYXRwYWdpbmF0b3IucGFnZVNpemUgOiAnJ1xuICAgIH07XG4gICAgaWYgKHRoaXMuY29tcG9uZW50LmN1cnJlbnRQYWdlID4gMCAmJiB0aGlzLmNvbXBvbmVudC5zdG9yZVBhZ2luYXRpb25TdGF0ZSkge1xuICAgICAgcmVzdWx0LmN1cnJlbnRQYWdlID0gdGhpcy5jb21wb25lbnQuY3VycmVudFBhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBvbmVudC5wYWdlYWJsZSAmJiB0aGlzLmNvbXBvbmVudC5zdG9yZVBhZ2luYXRpb25TdGF0ZSkge1xuICAgICAgcmVzdWx0LnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gdGhpcy5jb21wb25lbnQuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXI7XG4gICAgICByZXN1bHQucXVlcnlSZWNvcmRPZmZzZXQgPSBNYXRoLm1heChcbiAgICAgICAgKHRoaXMuY29tcG9uZW50LnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IC0gdGhpcy5jb21wb25lbnQuZGF0YVNvdXJjZS5yZW5kZXJlZERhdGEubGVuZ3RoKSxcbiAgICAgICAgKHRoaXMuY29tcG9uZW50LnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IC0gdGhpcy5jb21wb25lbnQucXVlcnlSb3dzKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTZWxlY3Rpb25TdGF0ZSgpOiBhbnkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IFtdO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudCAmJiB0aGlzLmNvbXBvbmVudC5rZWVwU2VsZWN0ZWRJdGVtcykge1xuICAgICAgLy8gc3RvcmluZyBzZWxlY3RlZCBpdGVtcyBrZXlzIHZhbHVlc1xuICAgICAgY29uc3QgdGFibGVLZXlzID0gdGhpcy5jb21wb25lbnQuZ2V0S2V5cygpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZ2V0U2VsZWN0ZWRJdGVtcygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgdGFibGVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBkYXRhW2tleV0gPSBpdGVtW2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxlY3Rpb24ucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEluaXRpYWxDb25maWd1cmF0aW9uU3RhdGUoKTogYW55IHtcbiAgICBjb25zdCBvQ29sdW1uc0RhdGE6IE9Db2x1bW5EaXNwbGF5W10gPSBbXTtcbiAgICBVdGlsLnBhcnNlQXJyYXkodGhpcy5jb21wb25lbnQudmlzaWJsZUNvbHVtbnMsIHRydWUpLmZvckVhY2goKGNvbHVtbkF0dHI6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IG9Db2wgPSB0aGlzLmNvbXBvbmVudC5nZXRPQ29sdW1uKGNvbHVtbkF0dHIpO1xuICAgICAgb0NvbHVtbnNEYXRhLnB1c2goe1xuICAgICAgICBhdHRyOiBvQ29sLmF0dHIsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiBvQ29sLmRlZmluaXRpb24gPyBvQ29sLmRlZmluaXRpb24ub3JpZ2luYWxXaWR0aCA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICdpbml0aWFsLWNvbmZpZ3VyYXRpb24nOiB7XG4gICAgICAgICdvQ29sdW1ucy1kaXNwbGF5Jzogb0NvbHVtbnNEYXRhLFxuICAgICAgICAnc29ydC1jb2x1bW5zJzogdGhpcy5jb21wb25lbnQuc29ydENvbHVtbnMsXG4gICAgICAgICdzZWxlY3QtY29sdW1uLXZpc2libGUnOiB0aGlzLmNvbXBvbmVudC5vVGFibGVPcHRpb25zLnNlbGVjdENvbHVtbi52aXNpYmxlLFxuICAgICAgICAnZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJzogdGhpcy5jb21wb25lbnQuZmlsdGVyQ2FzZVNlbnNpdGl2ZSxcbiAgICAgICAgJ3F1ZXJ5LXJvd3MnOiB0aGlzLmNvbXBvbmVudC5vcmlnaW5hbFF1ZXJ5Um93cyxcbiAgICAgICAgJ2ZpbHRlci1jb2x1bW4tYWN0aXZlLWJ5LWRlZmF1bHQnOiB0aGlzLmNvbXBvbmVudC5maWx0ZXJDb2x1bW5BY3RpdmVCeURlZmF1bHQsXG4gICAgICAgICdmaWx0ZXItY29sdW1ucyc6IHRoaXMuY29tcG9uZW50Lm9yaWdpbmFsRmlsdGVyQ29sdW1ucyxcbiAgICAgICAgJ2dyb3VwZWQtY29sdW1ucyc6IHRoaXMuY29tcG9uZW50Lm9yaWdpbmFsR3JvdXBlZENvbHVtbnNBcnJheVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0U29ydFN0YXRlKCkge1xuICAgIGNvbnN0IHNvcnRDb2x1bW5zID0gW107XG4gICAgdGhpcy5jb21wb25lbnQuc29ydD8uZ2V0U29ydENvbHVtbnMoKS5mb3JFYWNoKHNvcnREYXRhID0+IHtcbiAgICAgIHNvcnRDb2x1bW5zLnB1c2goc29ydERhdGEuaWQgKyBDb2Rlcy5DT0xVTU5TX0FMSUFTX1NFUEFSQVRPUiArIHNvcnREYXRhLmRpcmVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICdzb3J0LWNvbHVtbnMnOiBzb3J0Q29sdW1ucy5qb2luKENvZGVzLkFSUkFZX0lOUFVUX1NFUEFSQVRPUilcbiAgICB9O1xuICB9XG59XG5cblxuIl19
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, EventEmitter, Directive, Host, Self, Optional, Input, HostListener, forwardRef, Output, Injectable, Injector, Component, ContentChildren, ChangeDetectorRef, Pipe, NgModule, ViewChild, ElementRef, ViewEncapsulation, ViewContainerRef, Inject, NgZone, HostBinding, ViewChildren, ChangeDetectionStrategy, inject, CUSTOM_ELEMENTS_SCHEMA, TemplateRef, SkipSelf, isDevMode, ContentChild, Renderer2, APP_INITIALIZER } from '@angular/core';
3
3
  import moment from 'moment';
4
- import { isObservable, from, of, Subscription, Subject, Observable, timer, combineLatest, BehaviorSubject, ReplaySubject, merge, fromEvent, map as map$1 } from 'rxjs';
4
+ import { isObservable, from, of, Subscription, Subject, Observable, timer, combineLatest, BehaviorSubject, ReplaySubject, concatMap, delay, merge, fromEvent, map as map$1 } from 'rxjs';
5
5
  export { Observable, Subject } from 'rxjs';
6
6
  import * as i1$7 from '@angular/common/http';
7
7
  import { HttpClient, HttpHeaders, HttpRequest, HttpEventType, HttpErrorResponse, HttpClientModule } from '@angular/common/http';
@@ -13141,8 +13141,9 @@ class OTableComponentStateService extends AbstractComponentStateService {
13141
13141
  };
13142
13142
  }
13143
13143
  getSortState() {
13144
+ var _a;
13144
13145
  const sortColumns = [];
13145
- this.component.sort.getSortColumns().forEach(sortData => {
13146
+ (_a = this.component.sort) === null || _a === void 0 ? void 0 : _a.getSortColumns().forEach(sortData => {
13146
13147
  sortColumns.push(sortData.id + Codes.COLUMNS_ALIAS_SEPARATOR + sortData.direction);
13147
13148
  });
13148
13149
  return {
@@ -15228,6 +15229,7 @@ class OFormLayoutTabGroupComponent {
15228
15229
  this.tabsModificationsCache = [];
15229
15230
  this.dialogService = injector.get(DialogService);
15230
15231
  this.router = this.injector.get(Router);
15232
+ this.actRoute = this.injector.get(ActivatedRoute);
15231
15233
  }
15232
15234
  get state() {
15233
15235
  return this.formLayoutManager.state;
@@ -15464,38 +15466,20 @@ class OFormLayoutTabGroupComponent {
15464
15466
  this.state.tabsData = this.state.tabsData.filter(tabData => !tabData.insertionMode);
15465
15467
  if (this.state.tabsData.length >= 1 && (this.state.tabsData[0].url || '').length > 0) {
15466
15468
  this.showLoading.next(true);
15467
- const extras = {};
15468
- extras[Codes.QUERY_PARAMS] = this.state.tabsData[0].queryParams;
15469
- extras[Codes.QUERY_PARAMS][Codes.INSERTION_MODE] = `${this.state.tabsData[0].insertionMode}`;
15470
- if (this.formLayoutManager) {
15471
- this.formLayoutManager.setAsActiveFormLayoutManager();
15472
- }
15473
- this.router.navigate([this.state.tabsData[0].url], extras).then(() => {
15474
- if (this.data[0] && this.data[0].component && this.state.tabsData.length > 1) {
15475
- setTimeout(() => {
15476
- this.createTabsFromState();
15477
- }, 0);
15478
- }
15479
- else {
15480
- this.showLoading.next(false);
15481
- }
15482
- });
15483
- }
15484
- }
15485
- createTabsFromState() {
15486
- const tabComponent = this.data[0].component;
15487
- const stateTabsData = this.state.tabsData.slice(1);
15488
- if (stateTabsData.length > 0) {
15489
- stateTabsData.forEach((tabData) => {
15490
- setTimeout(() => {
15491
- const newDetailData = this.createDetailComponent(tabComponent, tabData);
15492
- this.data.push(newDetailData);
15493
- }, 0);
15469
+ const zone = this.injector.get(NgZone);
15470
+ from(this.state.tabsData).pipe(concatMap(tab => of(tab).pipe(delay(100)))).subscribe((tab) => {
15471
+ const extras = {};
15472
+ extras['relativeTo'] = this.actRoute;
15473
+ extras[Codes.QUERY_PARAMS] = tab.queryParams;
15474
+ extras[Codes.QUERY_PARAMS][Codes.INSERTION_MODE] = tab.insertionMode;
15475
+ if (this.formLayoutManager) {
15476
+ this.formLayoutManager.setAsActiveFormLayoutManager();
15477
+ }
15478
+ zone.run(() => this.router.navigate([tab.url], extras)
15479
+ .then(() => this.showLoading.next(false))
15480
+ .catch(() => this.showLoading.next(true)));
15494
15481
  });
15495
15482
  }
15496
- else {
15497
- this.showLoading.next(false);
15498
- }
15499
15483
  }
15500
15484
  createDetailComponent(component, paramsObj) {
15501
15485
  const newDetailComp = {
@@ -32496,7 +32480,7 @@ class OTableComponent extends AbstractOServiceComponent {
32496
32480
  }
32497
32481
  ;
32498
32482
  if (Util.isDefined(oTableGlobalConfig.showChartsOnDemandOption)) {
32499
- this.showReportOnDemandOption = oTableGlobalConfig.showChartsOnDemandOption;
32483
+ this.showChartsOnDemandOption = oTableGlobalConfig.showChartsOnDemandOption;
32500
32484
  }
32501
32485
  ;
32502
32486
  if (Util.isDefined(oTableGlobalConfig.showReportOnDemandOption)) {