@arsedizioni/ars-utils 18.2.110 → 18.2.111

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.
Files changed (25) hide show
  1. package/clipper.common/common/definitions.d.ts +1 -0
  2. package/clipper.ui/documents.d.ts +32 -4
  3. package/clipper.ui/public_api.d.ts +1 -1
  4. package/clipper.ui/ui/browser-dialog/browser-dialog.component.d.ts +12 -3
  5. package/clipper.ui/ui/document/document.component.d.ts +14 -13
  6. package/clipper.ui/ui/document-manager/document-manager.d.ts +44 -31
  7. package/clipper.ui/ui/document-menu/document-menu.component.d.ts +7 -4
  8. package/clipper.ui/ui/references/references.component.d.ts +3 -0
  9. package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +7 -4
  10. package/esm2022/clipper.common/common/definitions.mjs +2 -1
  11. package/esm2022/clipper.ui/documents.mjs +138 -6
  12. package/esm2022/clipper.ui/public_api.mjs +2 -2
  13. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +17 -26
  14. package/esm2022/clipper.ui/ui/document/document.component.mjs +41 -32
  15. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +75 -105
  16. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +11 -7
  17. package/esm2022/clipper.ui/ui/references/references.component.mjs +6 -5
  18. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +10 -7
  19. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +1 -0
  20. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +2669 -2563
  22. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  23. package/log.txt +0 -0
  24. package/output.txt +0 -0
  25. package/package.json +1 -1
@@ -1,19 +1,22 @@
1
1
  import { BreakpointObserver } from '@angular/cdk/layout';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject, signal } from '@angular/core';
3
- import { ClipperMessages, ClipperModel, ClipperSearchParams, ClipperSearchResult, ClipperSort } from '@arsedizioni/ars-utils/clipper.common';
4
- import { DateFormat, ScreenService, SystemUtils } from '@arsedizioni/ars-utils/core';
3
+ import { ClipperMessages, ClipperModel, ClipperSearchParams, ClipperSearchResult, ClipperService, ClipperSort } from '@arsedizioni/ars-utils/clipper.common';
4
+ import { BroadcastService, DateFormat, ScreenService, SystemUtils } from '@arsedizioni/ars-utils/core';
5
+ import { ApplicationDialogService } from '@arsedizioni/ars-utils/ui.application';
5
6
  import { startOfDay, startOfToday, subDays } from 'date-fns';
6
7
  import { Subject } from 'rxjs';
7
8
  import { ClipperDocumentManager } from '../document-manager/document-manager';
8
9
  import { ClipperSearchCalendarComponent } from '../search-calendar/search-calendar.component';
9
10
  import { ClipperSearchFacetsComponent } from '../search-facets/search-facets.component';
10
11
  import * as i0 from "@angular/core";
11
- export class ClipperSearchResultManager extends ClipperDocumentManager {
12
+ export class ClipperSearchResultManager {
12
13
  constructor() {
13
- super(...arguments);
14
14
  this.unsubscribe = new Subject();
15
15
  this.changeDetector = inject(ChangeDetectorRef);
16
+ this.clipperService = inject(ClipperService);
16
17
  this.breakpointObserver = inject(BreakpointObserver);
18
+ this.broadcastService = inject(BroadcastService);
19
+ this.dialogService = inject(ApplicationDialogService);
17
20
  this.screenService = inject(ScreenService);
18
21
  this.selection = null;
19
22
  this.snapshot = new ClipperSearchResult();
@@ -471,8 +474,8 @@ export class ClipperSearchResultManager extends ClipperDocumentManager {
471
474
  }
472
475
  }
473
476
  }
474
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchResultManager, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "facets", first: true, predicate: ["facets"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
477
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
478
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ClipperSearchResultManager, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "paginator", first: true, predicate: ["paginator"], descendants: true }, { propertyName: "facets", first: true, predicate: ["facets"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: '<div></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
476
479
  }
477
480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ClipperSearchResultManager, decorators: [{
478
481
  type: Component,
@@ -492,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
492
495
  type: ViewChild,
493
496
  args: ['calendar']
494
497
  }] } });
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBa0UsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbE8sT0FBTyxFQUNILFVBQVUsRUFDSyxhQUFhLEVBQW1CLFdBQVcsRUFDN0QsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM5RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFVeEYsTUFBTSxPQUFPLDBCQUNULFNBQVEsc0JBQXNCO0lBUGxDOztRQWFjLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDakQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztR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LEdBQUcsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOzhHQXRlUSwwQkFBMEI7a0dBQTFCLDBCQUEwQixpWEFMekIsYUFBYTs7MkZBS2QsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDO2lCQUNsRzs4QkFJMkIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNELE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBpbmplY3QsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50SW5mbywgQ2xpcHBlck1lc3NhZ2VzLCBDbGlwcGVyTW9kZWwsIENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0LCBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0LCBDbGlwcGVyU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoUmVzdWx0LCBDbGlwcGVyU29ydCB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gICAgRGF0ZUZvcm1hdCxcclxuICAgIE5hbWVWYWx1ZUl0ZW0sIFNjcmVlblNlcnZpY2UsIFNlbGVjdGFibGVNb2RlbCwgU3lzdGVtVXRpbHNcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBzdGFydE9mRGF5LCBzdGFydE9mVG9kYXksIHN1YkRheXMgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1jYWxlbmRhci9zZWFyY2gtY2FsZW5kYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1mYWNldHMvc2VhcmNoLWZhY2V0cy5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgaW1wb3J0czogW0NsaXBwZXJEb2N1bWVudE1hbmFnZXIsIENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQsIENsaXBwZXJTZWFyY2hDYWxlbmRhckNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbGlwcGVyU2VhcmNoUmVzdWx0TWFuYWdlclxyXG4gICAgZXh0ZW5kcyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyXHJcbiAgICBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdwYWdpbmF0b3InKSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XHJcbiAgICBAVmlld0NoaWxkKCdmYWNldHMnKSBmYWNldHMhOiBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnY2FsZW5kYXInKSBjYWxlbmRhciE6IENsaXBwZXJTZWFyY2hDYWxlbmRhckNvbXBvbmVudDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIHByb3RlY3RlZCBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICAgIHB1YmxpYyBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPGFueSwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCA9IG5ldyBDbGlwcGVyU2VhcmNoUmVzdWx0KCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUyQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc29ydE9wdGlvbnM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgc29ydE1vZGU6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNjcm9sbGVySWQ6IHN0cmluZyA9ICdzY3JvbGxlcl8nICsgU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVzdG9yYWJsZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBoYXNGYWNldHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc0NhbGVuZGFyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBoYXNSZWdpb25zID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycz8uZmlsdGVyKG4gPT4gbi52YWx1ZSA9PT0gJ0xSJykubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH07XHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY3JvbGwgb24gdG9wIG8gbGlzdCBhcmVhXHJcbiAgICAgKiBAcGFyYW0gdG9wOiB0aGUgdG9wIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNjcm9sbCh0b3A6IG51bWJlciA9IDApIHtcclxuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JvbGxlcklkKTtcclxuICAgICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgICAgICBlbGVtLnNjcm9sbFRvKHsgdG9wOiB0b3AsIGxlZnQ6IDAsIGJlaGF2aW9yOiAnYXV0bycgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgZXZlcnkgZWxlbWVudCBhcmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgYWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50Py5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLnNuYXBzaG90Py5pdGVtcz8ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFzdGVyIHNlbGVjdGlvbiB0b2dnbGVcclxuICAgICAqIEBwYXJhbSBzZWxlY3Q6IHRydWUgdG8gc2VsZWN0IGFsbCBlbGVtZW50cyBmYWxzZSB0byBkZXNlbGVjdCBhbGwgZWxlbWVudHNcclxuICAgICAqL1xyXG4gICAgc2VsZWN0QWxsKHNlbGVjdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2goKG46IGFueSkgPT4gdGhpcy5zZWxlY3Rpb24/LmRlc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgc2VsZWN0aW9ucyBleGlzdHNcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc0FueVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gXHJcbiAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtIG9yIG51bGwgICAgXHJcbiAgICAqL1xyXG4gICAgZ2V0U2luZ2xlU2VsZWN0aW9uKCk6IGFueSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVNlbGVjdGlvbigpID8gdGhpcy5zZWxlY3Rpb24/LmFsbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogQ2xlYXIgc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gICAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG9yIG51bGxcclxuICAgKiBAcmV0dXJucyBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xyXG4gICAqL1xyXG4gICAgY291bnRTZWxlY3Rpb25zKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICovXHJcbiAgICBnZXRTZWxldGVjdElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdLmRvY3VtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHNBbmREYXRhKCk6IGFueVtdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHsgaWQ6IG4uZG9jdW1lbnRJZCwgZGF0YTogbiB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0IGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgOiB0aGUgaXRlbXMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdEl0ZW1zKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10sIHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZlRvZGF5KCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVllYXIgPVxyXG4gICAgICAgICAgICAhcGFyYW1zLnNvcnRNb2RlIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVEZXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVEZXNjO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlSZWxldmFuY2UgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlJlbGV2YW5jZTtcclxuICAgICAgICBjb25zdCBncm91cEJ5UG9wdWxhcml0eSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUG9wdWxhcml0eTtcclxuICAgICAgICBsZXQgZ3JvdXAgPSAnJztcclxuICAgICAgICBpdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbi5kb2N1bWVudElkID0gbi5kb2N1bWVudElkID8/IG4uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy51cGRhdGVDdXJyZW50KG4sIG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuUXVlc2l0aSkge1xyXG4gICAgICAgICAgICAgICAgbi5pbmZvID0gXCJRdWVzaXRvIG7CsCBcIiArIG4ubnVtYmVyICsgXCIgZGVsIFwiICsgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIFwiZCBNTU0geXl5eVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobi5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NlZ25hbGF6aW9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gbi5leHBpcmluZ0luZm8uc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSBuLmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1syXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFydGljb2xpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5ld3MpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi50YWdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pbmZvID0gbi50YWdzLnRvVXBwZXJDYXNlKCkuc3Vic3RyaW5nKDEpLnJlcGxhY2VBbGwoXCIjXCIsIFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5KdXJpcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKHN0YXJ0T2ZUb2RheSgpLCA3KSlcclxuICAgICAgICAgICAgICAgICAgICBuLmlzTmV3ID0gbi5kYXRlID4gZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmFuY2hvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvcnM6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycy5mb3JFYWNoKChhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA9PT0gMjApIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gYW5jaG9yVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA+PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7IHRleHQ6IGEudHlwZURlc2NyaXB0aW9uIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGEudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBhLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGEudGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogYS5kb2N1bWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBhLnVyaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnlSZWxldmFudDogc2NvcmUgPiAwLjYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycyA9IGFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi52YWxpZGl0eVN0YXRlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9ICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkVW50aWxEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyaW5nRGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi52YWxpZFVudGlsRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwaXJpbmdEYXRlIDwgdG9kYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gc2Fyw6AgcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZXhwaXJpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhuLmRhdGUsIDE1KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyaW5nID0gdG9kYXkgPD0gbi5kYXRlICYmIHRvZGF5ID49IGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBuLmRhdGUgPCB0b2RheTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ3JvdXBCeVllYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHllYXIgPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSA/PyBuLnB1Ymxpc2hpbmdEYXRlLCBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09IHllYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9IHllYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVJlbGV2YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRpIHBpw7kgcmlsZXZhbnRpIHBlciBsYSByaWNlcmNhOiAnICsgcGFyYW1zLnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVBvcHVsYXJpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9ICdFbGVtZW50aSBwacO5IHBvcG9sYXJpIGluIG9yZGluZSBkZWNyZXNjZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwYXJlIHJlc3VsdHNcclxuICAgICAqIEBwYXJhbSBkYXRhIDogdGhlIG9wdGlvbmFsIHJlc3VsdCBsaXN0IHRvIHByZXBhcmVcclxuICAgICAqIEBwYXJhbSBmYWNldHMgOiB0aGUgb3B0aW9uYWwgZmFjZXRzIGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICogQHBhcmFtIG1vbnRocyA6IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBtb250aHMgXHJcbiAgICAgKiBAcGFyYW0gbW9udGggOiB0aGUgb3B0aW9uYWwgc25hcHNob3QgbW9udGhcclxuICAgICAqIEBwYXJhbSBkYXRlIDogdGhlIG9wdGluYWwgc25hcHNob3QgY3VycmVudCBkYXRlXHJcbiAgICAgKi9cclxuICAgIHByZXBhcmVSZXN1bHRzKFxyXG4gICAgICAgIGRhdGE/OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBmYWNldHM/OiBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBtb250aHM/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgbW9udGg/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90Lml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRJdGVtcyh0aGlzLnNuYXBzaG90Lml0ZW1zLCB0aGlzLmZpbHRlclBhcmFtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZhY2V0cyB8fCBtb250aHMgfHwgbW9udGgpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5oYXNDYWxlbmRhci5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cz8udXBkYXRlKGZhY2V0cy5mYWNldHMsIGZhY2V0cy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMgPSB0aGlzLmZhY2V0cy5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMuaGFzVG9vTWFueVJlc3VsdHMgPSB0aGlzLnNuYXBzaG90LnRvdGFsID49IDEwMDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9udGhzIHx8IG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8udXBkYXRlKG1vbnRocywgJ21vbnRocycsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy51cGRhdGUobW9udGgsICdtb250aCcsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJldHVybiBpdGVtIHN0YXRlIGNzcyBjbGFzc1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ2V4cGlyZWQtYmcnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAncG9wdWxhci1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMykgcmV0dXJuICd2ZXJ5LXBvcHVsYXItYmcnO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlKSByZXR1cm4gJ05vbiBsZXR0byc7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ05vbiBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIGFsdG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIG1vbHRvIGFsdG8nO1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIHRoZSBpdGVtIGljb25cclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1JY29uKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLm1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6IHJldHVybiAnZ2F2ZWwnO1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BcnRpY29saTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuUXVlc2l0aTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTWV0b2RpRGlBbmFsaXNpOiByZXR1cm4gJ2V4dGVuc2lvbic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAndXBkYXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHRoZSByZWFkIGZsYWdcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRvZ2dsZVJlYWQoaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbywgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkKCFpdGVtPy5pc1JlYWQsIGl0ZW0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogVG9nZ2xlIHRoZSBzZWxlY3Rpb24gZmxhZ1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAqL1xyXG4gICAgdG9nZ2xlU2VsZWN0aW9uKGl0ZW06IGFueSwgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24/LnRvZ2dsZShpdGVtLCBpdGVtLmRvY3VtZW50SWQpXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICAgKi9cclxuICAgIHNldFJlYWQodmFsdWU6IGJvb2xlYW4sIGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8gPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGRvY3VtZW50SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gW2l0ZW0uZG9jdW1lbnRJZF07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gdGhpcy5zZWxlY3Rpb24/LmFsbD8ubWFwKG4gPT4gbi5kb2N1bWVudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS51cGRhdGVTdGF0ZSh7IGRvY3VtZW50SWRzOiBkb2N1bWVudElkcywgaXNSZWFkOiB2YWx1ZSB9XHJcbiAgICAgICAgKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLy9cclxuICAgIC8vIFJlc3RvcmFibGVcclxuICAgIC8vL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZSByZXN0b3JhYmxlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsIDogdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNhdmUoaWQ6IHN0cmluZywgc2Nyb2xsOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5zbmFwc2hvdD8udG90YWwgPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzPy5zYXZlKCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHRoaXMuZmlsdGVyUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBzY3JvbGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiB7IG1vZGU6IHRoaXMuc29ydE1vZGUsIG9wdGlvbnM6IHRoaXMuc29ydE9wdGlvbnMgfSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuc25hcHNob3RcclxuICAgICAgICAgICAgICAgICAgICA/IHsgaXRlbXM6IHRoaXMuc25hcHNob3QuaXRlbXMsIHRvdGFsOiB0aGlzLnNuYXBzaG90LnRvdGFsIH1cclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICovXHJcbiAgICByZXN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaWQpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IGRhdGEuZmlsdGVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE1vZGUgPSBkYXRhLnNvcnQubW9kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSBkYXRhLnNvcnQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZhY2V0cyAmJiBkYXRhLmZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzLnJlc3RvcmUoZGF0YS5mYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldChkYXRhLmZhY2V0cy5oYXNGYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmIGRhdGEucGFnaW5hdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gZGF0YS5wYWdpbmF0b3IucGFnZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9IGRhdGEucGFnaW5hdG9yLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gZGF0YS5wYWdpbmF0b3IudG90YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfU0VBUkNIX1JFU1RPUkVELCBkYXRhLmZpbHRlclBhcmFtcylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCB0b3BcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsKGRhdGEuc2Nyb2xsID8/IDApO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBa0UsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xQLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsVUFBVSxFQUNLLGFBQWEsRUFBbUIsV0FBVyxFQUM3RCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQVV4RixNQUFNLE9BQU8sMEJBQTBCO0lBTnZDO1FBWWMsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIs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RUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7Z0JBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRXBDLGFBQWE7Z0JBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0F4ZVEsMEJBQTBCO2tHQUExQiwwQkFBMEIsMFZBTHpCLGFBQWE7OzJGQUtkLDBCQUEwQjtrQkFOdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbEc7OEJBRzJCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0ksUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgaW5qZWN0LFxyXG4gICAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZm8sIENsaXBwZXJNZXNzYWdlcywgQ2xpcHBlck1vZGVsLCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCwgQ2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdCwgQ2xpcHBlclNlYXJjaFBhcmFtcywgQ2xpcHBlclNlYXJjaFJlc3VsdCwgQ2xpcHBlclNlcnZpY2UsIENsaXBwZXJTb3J0IH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBCcm9hZGNhc3RTZXJ2aWNlLFxyXG4gICAgRGF0ZUZvcm1hdCxcclxuICAgIE5hbWVWYWx1ZUl0ZW0sIFNjcmVlblNlcnZpY2UsIFNlbGVjdGFibGVNb2RlbCwgU3lzdGVtVXRpbHNcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbkRpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgc3RhcnRPZkRheSwgc3RhcnRPZlRvZGF5LCBzdWJEYXlzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1hbmFnZXIgfSBmcm9tICcuLi9kb2N1bWVudC1tYW5hZ2VyL2RvY3VtZW50LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtY2FsZW5kYXIvc2VhcmNoLWNhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGltcG9ydHM6IFtDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyLCBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50LCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlYXJjaFJlc3VsdE1hbmFnZXJcclxuICAgIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICAgIEBWaWV3Q2hpbGQoJ2ZhY2V0cycpIGZhY2V0cyE6IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyITogQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50O1xyXG5cclxuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIGNsaXBwZXJTZXJ2aWNlID0gaW5qZWN0KENsaXBwZXJTZXJ2aWNlKTtcclxuICAgIHByb3RlY3RlZCBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICAgIHByb3RlY3RlZCBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQXBwbGljYXRpb25EaWFsb2dTZXJ2aWNlKTtcclxuICAgIHB1YmxpYyBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPGFueSwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCA9IG5ldyBDbGlwcGVyU2VhcmNoUmVzdWx0KCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUyQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc29ydE9wdGlvbnM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgc29ydE1vZGU6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNjcm9sbGVySWQ6IHN0cmluZyA9ICdzY3JvbGxlcl8nICsgU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVzdG9yYWJsZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBoYXNGYWNldHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc0NhbGVuZGFyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBoYXNSZWdpb25zID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycz8uZmlsdGVyKG4gPT4gbi52YWx1ZSA9PT0gJ0xSJykubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH07XHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIG4uaXNNZW51T3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTY3JvbGwgb24gdG9wIG8gbGlzdCBhcmVhXHJcbiAgICAgKiBAcGFyYW0gdG9wOiB0aGUgdG9wIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNjcm9sbCh0b3A6IG51bWJlciA9IDApIHtcclxuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JvbGxlcklkKTtcclxuICAgICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgICAgICBlbGVtLnNjcm9sbFRvKHsgdG9wOiB0b3AsIGxlZnQ6IDAsIGJlaGF2aW9yOiAnYXV0bycgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgaWYgZXZlcnkgZWxlbWVudCBhcmUgc2VsZWN0ZWRcclxuICAgICAqL1xyXG4gICAgYWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50Py5zZWxlY3RlZD8ubGVuZ3RoID09PSB0aGlzLnNuYXBzaG90Py5pdGVtcz8ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFzdGVyIHNlbGVjdGlvbiB0b2dnbGVcclxuICAgICAqIEBwYXJhbSBzZWxlY3Q6IHRydWUgdG8gc2VsZWN0IGFsbCBlbGVtZW50cyBmYWxzZSB0byBkZXNlbGVjdCBhbGwgZWxlbWVudHNcclxuICAgICAqL1xyXG4gICAgc2VsZWN0QWxsKHNlbGVjdDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBpZiAoc2VsZWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKChuOiBhbnkpID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2goKG46IGFueSkgPT4gdGhpcy5zZWxlY3Rpb24/LmRlc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgc2VsZWN0aW9ucyBleGlzdHNcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc0FueVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gXHJcbiAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtIG9yIG51bGwgICAgXHJcbiAgICAqL1xyXG4gICAgZ2V0U2luZ2xlU2VsZWN0aW9uKCk6IGFueSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVNlbGVjdGlvbigpID8gdGhpcy5zZWxlY3Rpb24/LmFsbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogQ2xlYXIgc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gICAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG9yIG51bGxcclxuICAgKiBAcmV0dXJucyBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xyXG4gICAqL1xyXG4gICAgY291bnRTZWxlY3Rpb25zKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICovXHJcbiAgICBnZXRTZWxldGVjdElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdLmRvY3VtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHNBbmREYXRhKCk6IGFueVtdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHsgaWQ6IG4uZG9jdW1lbnRJZCwgZGF0YTogbiB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0IGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgOiB0aGUgaXRlbXMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdEl0ZW1zKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10sIHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZlRvZGF5KCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVllYXIgPVxyXG4gICAgICAgICAgICAhcGFyYW1zLnNvcnRNb2RlIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVEZXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVEZXNjO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlSZWxldmFuY2UgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlJlbGV2YW5jZTtcclxuICAgICAgICBjb25zdCBncm91cEJ5UG9wdWxhcml0eSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUG9wdWxhcml0eTtcclxuICAgICAgICBsZXQgZ3JvdXAgPSAnJztcclxuICAgICAgICBpdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbi5kb2N1bWVudElkID0gbi5kb2N1bWVudElkID8/IG4uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy51cGRhdGVDdXJyZW50KG4sIG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuUXVlc2l0aSkge1xyXG4gICAgICAgICAgICAgICAgbi5pbmZvID0gXCJRdWVzaXRvIG7CsCBcIiArIG4ubnVtYmVyICsgXCIgZGVsIFwiICsgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIFwiZCBNTU0geXl5eVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobi5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NlZ25hbGF6aW9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gbi5leHBpcmluZ0luZm8uc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSBuLmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1syXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFydGljb2xpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5ld3MpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi50YWdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pbmZvID0gbi50YWdzLnRvVXBwZXJDYXNlKCkuc3Vic3RyaW5nKDEpLnJlcGxhY2VBbGwoXCIjXCIsIFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5KdXJpcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKHN0YXJ0T2ZUb2RheSgpLCA3KSlcclxuICAgICAgICAgICAgICAgICAgICBuLmlzTmV3ID0gbi5kYXRlID4gZDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmFuY2hvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvcnM6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycy5mb3JFYWNoKChhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA9PT0gMjApIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSAhPT0gYW5jaG9yVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEudHlwZSA+PSAzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7IHRleHQ6IGEudHlwZURlc2NyaXB0aW9uIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVHlwZSA9IGEudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcmUgPSBhLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gMykgc2NvcmUgLT0gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGEudGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogYS5kb2N1bWVudElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBhLnVyaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnlSZWxldmFudDogc2NvcmUgPiAwLjYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycyA9IGFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi52YWxpZGl0eVN0YXRlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9ICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkVW50aWxEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyaW5nRGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi52YWxpZFVudGlsRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwaXJpbmdEYXRlIDwgdG9kYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gc2Fyw6AgcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZXhwaXJpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhuLmRhdGUsIDE1KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyaW5nID0gdG9kYXkgPD0gbi5kYXRlICYmIHRvZGF5ID49IGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBuLmRhdGUgPCB0b2RheTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ3JvdXBCeVllYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHllYXIgPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSA/PyBuLnB1Ymxpc2hpbmdEYXRlLCBEYXRlRm9ybWF0LkxvbmdNb250aEFuZFllYXIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09IHllYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9IHllYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVJlbGV2YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRpIHBpw7kgcmlsZXZhbnRpIHBlciBsYSByaWNlcmNhOiAnICsgcGFyYW1zLnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBCeVBvcHVsYXJpdHkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9ICdFbGVtZW50aSBwacO5IHBvcG9sYXJpIGluIG9yZGluZSBkZWNyZXNjZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwYXJlIHJlc3VsdHNcclxuICAgICAqIEBwYXJhbSBkYXRhIDogdGhlIG9wdGlvbmFsIHJlc3VsdCBsaXN0IHRvIHByZXBhcmVcclxuICAgICAqIEBwYXJhbSBmYWNldHMgOiB0aGUgb3B0aW9uYWwgZmFjZXRzIGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICogQHBhcmFtIG1vbnRocyA6IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBtb250aHMgXHJcbiAgICAgKiBAcGFyYW0gbW9udGggOiB0aGUgb3B0aW9uYWwgc25hcHNob3QgbW9udGhcclxuICAgICAqIEBwYXJhbSBkYXRlIDogdGhlIG9wdGluYWwgc25hcHNob3QgY3VycmVudCBkYXRlXHJcbiAgICAgKi9cclxuICAgIHByZXBhcmVSZXN1bHRzKFxyXG4gICAgICAgIGRhdGE/OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBmYWNldHM/OiBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBtb250aHM/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgbW9udGg/OiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJTbmFwc2hvdFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgZGF0ZT86IERhdGUgfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90Lml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRJdGVtcyh0aGlzLnNuYXBzaG90Lml0ZW1zLCB0aGlzLmZpbHRlclBhcmFtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZhY2V0cyB8fCBtb250aHMgfHwgbW9udGgpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5oYXNDYWxlbmRhci5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cz8udXBkYXRlKGZhY2V0cy5mYWNldHMsIGZhY2V0cy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMgPSB0aGlzLmZhY2V0cy5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMuaGFzVG9vTWFueVJlc3VsdHMgPSB0aGlzLnNuYXBzaG90LnRvdGFsID49IDEwMDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9udGhzIHx8IG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8udXBkYXRlKG1vbnRocywgJ21vbnRocycsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtb250aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy51cGRhdGUobW9udGgsICdtb250aCcsIGRhdGUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFJldHVybiBpdGVtIHN0YXRlIGNzcyBjbGFzc1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbVN0YXRlQ3NzQ2xhc3MoaXRlbTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ2V4cGlyZWQtYmcnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAncG9wdWxhci1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMykgcmV0dXJuICd2ZXJ5LXBvcHVsYXItYmcnO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlKSByZXR1cm4gJ05vbiBsZXR0byc7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ05vbiBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIGFsdG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIG1vbHRvIGFsdG8nO1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIHRoZSBpdGVtIGljb25cclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1JY29uKGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLm1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6IHJldHVybiAnZ2F2ZWwnO1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BcnRpY29saTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuUXVlc2l0aTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTWV0b2RpRGlBbmFsaXNpOiByZXR1cm4gJ2V4dGVuc2lvbic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAndXBkYXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHRoZSByZWFkIGZsYWdcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRvZ2dsZVJlYWQoaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbywgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkKCFpdGVtPy5pc1JlYWQsIGl0ZW0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogVG9nZ2xlIHRoZSBzZWxlY3Rpb24gZmxhZ1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAqL1xyXG4gICAgdG9nZ2xlU2VsZWN0aW9uKGl0ZW06IGFueSwgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24/LnRvZ2dsZShpdGVtLCBpdGVtLmRvY3VtZW50SWQpXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICAgKi9cclxuICAgIHNldFJlYWQodmFsdWU6IGJvb2xlYW4sIGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8gPSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGRvY3VtZW50SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gW2l0ZW0uZG9jdW1lbnRJZF07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50SWRzID0gdGhpcy5zZWxlY3Rpb24/LmFsbD8ubWFwKG4gPT4gbi5kb2N1bWVudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS51cGRhdGVTdGF0ZSh7IGRvY3VtZW50SWRzOiBkb2N1bWVudElkcywgaXNSZWFkOiB2YWx1ZSB9XHJcbiAgICAgICAgKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLy9cclxuICAgIC8vIFJlc3RvcmFibGVcclxuICAgIC8vL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZSByZXN0b3JhYmxlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsIDogdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNhdmUoaWQ6IHN0cmluZywgc2Nyb2xsOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5zbmFwc2hvdD8udG90YWwgPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzPy5zYXZlKCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHRoaXMuZmlsdGVyUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBzY3JvbGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiB7IG1vZGU6IHRoaXMuc29ydE1vZGUsIG9wdGlvbnM6IHRoaXMuc29ydE9wdGlvbnMgfSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuc25hcHNob3RcclxuICAgICAgICAgICAgICAgICAgICA/IHsgaXRlbXM6IHRoaXMuc25hcHNob3QuaXRlbXMsIHRvdGFsOiB0aGlzLnNuYXBzaG90LnRvdGFsIH1cclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICovXHJcbiAgICByZXN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaWQpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IGRhdGEuZmlsdGVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE1vZGUgPSBkYXRhLnNvcnQubW9kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSBkYXRhLnNvcnQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZhY2V0cyAmJiBkYXRhLmZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzLnJlc3RvcmUoZGF0YS5mYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldChkYXRhLmZhY2V0cy5oYXNGYWNldHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmIGRhdGEucGFnaW5hdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gZGF0YS5wYWdpbmF0b3IucGFnZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9IGRhdGEucGFnaW5hdG9yLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IubGVuZ3RoID0gZGF0YS5wYWdpbmF0b3IudG90YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfU0VBUkNIX1JFU1RPUkVELCBkYXRhLmZpbHRlclBhcmFtcylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNjcm9sbCB0b3BcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsKGRhdGEuc2Nyb2xsID8/IDApO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -40,6 +40,7 @@ const ClipperMessages = {
40
40
 
41
41
  var ClipperSelectionMode;
42
42
  (function (ClipperSelectionMode) {
43
+ ClipperSelectionMode[ClipperSelectionMode["None"] = 0] = "None";
43
44
  ClipperSelectionMode[ClipperSelectionMode["Single"] = 1] = "Single";
44
45
  ClipperSelectionMode[ClipperSelectionMode["Multi"] = 2] = "Multi";
45
46
  ClipperSelectionMode[ClipperSelectionMode["Any"] = 3] = "Any";