principal-dashboard-lib-v2 0.0.19 → 0.0.21

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.
@@ -11,7 +11,7 @@ export class ChartheaderComponent {
11
11
  this.isChartView = true;
12
12
  }
13
13
  ngOnInit() {
14
- this.libVersion = "0.0.19";
14
+ this.libVersion = "0.0.21";
15
15
  // this.myIcon = document.getElementById('myIconImg');
16
16
  // this.changeChatType()
17
17
  }
@@ -46,4 +46,4 @@ ChartheaderComponent.decorators = [
46
46
  ChartheaderComponent.ctorParameters = () => [
47
47
  { type: PrincipalDashboardLibV2Service }
48
48
  ];
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsNnVCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydFR5cGUgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jaGFydGhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydGhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0aGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxuICApIHt9XG4gIFxuICAvL3ZhcmlhYmxlc1xuICBteXR5cGUgPSBDaGFydFR5cGUuVGltZWxpbmU7XG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuICBteUljb246IGFueTtcbiAgbGliVmVyc2lvbjphbnk7XG4gIGlzQ2hhcnRWaWV3PXRydWU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saWJWZXJzaW9uID0gXCIwLjAuMTlcIjtcbiAgICAvLyB0aGlzLm15SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUljb25JbWcnKTtcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXG4gIH1cbiAgY2hhbmdlQ2hhdFR5cGUoKSB7XG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IGZhbHNlO1xuICAgICAgdGhpcy5teXR5cGUgPSBDaGFydFR5cGUuVGFibGU7XG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XG4gICAgICB0aGlzLm15dHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcbiAgICAgXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgfVxuICB9XG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5uZXh0KGZhbHNlKTtcbiAgfVxuICBjaGFuZ2VEYXRhVHlwZVVzZXIoKSB7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gdHJ1ZTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsNnVCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydFR5cGUgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XG5kZWNsYXJlIGxldCByZXF1aXJlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jaGFydGhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydGhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0aGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxuICApIHt9XG4gIFxuICAvL3ZhcmlhYmxlc1xuICBteXR5cGUgPSBDaGFydFR5cGUuVGltZWxpbmU7XG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XG4gIGlzVXNlcldpc2UgPSB0cnVlO1xuICBteUljb246IGFueTtcbiAgbGliVmVyc2lvbjphbnk7XG4gIGlzQ2hhcnRWaWV3PXRydWU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saWJWZXJzaW9uID0gXCIwLjAuMjFcIjtcbiAgICAvLyB0aGlzLm15SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUljb25JbWcnKTtcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXG4gIH1cbiAgY2hhbmdlQ2hhdFR5cGUoKSB7XG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IGZhbHNlO1xuICAgICAgdGhpcy5teXR5cGUgPSBDaGFydFR5cGUuVGFibGU7XG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XG4gICAgICB0aGlzLm15dHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcbiAgICAgXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XG4gICAgfVxuICB9XG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xuICAgIHRoaXMuaXNVc2VyV2lzZSA9IGZhbHNlO1xuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5uZXh0KGZhbHNlKTtcbiAgfVxuICBjaGFuZ2VEYXRhVHlwZVVzZXIoKSB7XG4gICAgdGhpcy5pc1VzZXJXaXNlID0gdHJ1ZTtcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
@@ -23,8 +23,8 @@ export class PrincipalDashboardLibV2Component {
23
23
  PrincipalDashboardLibV2Component.decorators = [
24
24
  { type: Component, args: [{
25
25
  selector: 'lib-principal-dashboard-lib-v2',
26
- template: "<div id=\"reprtModule\">\n <div id=\"pd-mainDiv\" class=\"pd-mainContainer\">\n <lib-header [data]=\"data\" (userSelectedDate)=\"onUserSelectDate($event)\">\n </lib-header>\n <lib-chartheader></lib-chartheader>\n \n <div id=\"pd-preloader\" class=\"pd-preloaderDiv\" *ngIf=\"responseStatus !== 'true' && !data\">\n {{messageForUser}}\n </div>\n <lib-chartview *ngIf=\"data\" [data]=\"data\"></lib-chartview>\n <lib-tableview *ngIf=\"data\" [data]=\"data\"></lib-tableview>\n <lib-detailedview *ngIf=\"data\" [data]=\"data\"></lib-detailedview>\n \n </div>\n</div>\n ",
27
- styles: [".pd-mainContainer{width:100%;height:100%}.pd-mainContainer .pd-preloaderDiv{text-align:center;line-height:27;position:absolute;width:100%;height:87%;top:33px;z-index:2}.bs-datepicker-head{background-color:#000!important}"]
26
+ template: "<div id=\"reprtModule\">\n <div id=\"pd-mainDiv\" class=\"pd-mainContainer\">\n <lib-header [data]=\"data\" (userSelectedDate)=\"onUserSelectDate($event)\">\n </lib-header>\n <lib-chartheader></lib-chartheader>\n \n <div id=\"pd-preloader\" class=\"pd-preloaderDiv\" *ngIf=\"responseStatus !== 'true' && !data\">\n {{messageForUser}} \n </div>\n <lib-chartview *ngIf=\"data\" [data]=\"data\"></lib-chartview>\n <lib-tableview *ngIf=\"data\" [data]=\"data\"></lib-tableview>\n <lib-detailedview *ngIf=\"data\" [data]=\"data\"></lib-detailedview>\n \n </div>\n</div>\n ",
27
+ styles: [".pd-mainContainer{width:100%;height:100%}.pd-mainContainer .pd-preloaderDiv{text-align:center;line-height:27;position:absolute;width:100%;height:87%;z-index:2}.bs-datepicker-head{background-color:#000!important}"]
28
28
  },] }
29
29
  ];
30
30
  PrincipalDashboardLibV2Component.ctorParameters = () => [];
@@ -33,4 +33,4 @@ PrincipalDashboardLibV2Component.propDecorators = {
33
33
  responseStatus: [{ type: Input }],
34
34
  userSelectedDate: [{ type: Output }]
35
35
  };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQWEsS0FBSyxFQUFDLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU96RixNQUFNLE9BQU8sZ0NBQWdDO0lBUTNDO1FBRlUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxtQkFBYyxHQUFHLFdBQVcsQ0FBQztJQUNiLENBQUM7SUFOakIsSUFBYSxjQUFjLENBQUMsR0FBUTtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsNkVBQTZFO0lBQy9FLENBQUM7SUFLRCxRQUFRO1FBRU4sMkNBQTJDO0lBQzdDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxDQUFLO1FBQ3BCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OztZQTFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsaW9CQUEwRDs7YUFFM0Q7Ozs7bUJBRUUsS0FBSzs2QkFDTCxLQUFLOytCQUlMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCAsT3V0cHV0LCBWaWV3Q2hpbGQsIElucHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByaW5jaXBhbERhc2hib2FyZExpYlYyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YTtcbiAgQElucHV0KCkgc2V0IHJlc3BvbnNlU3RhdHVzKHJlczogYW55KSB7XG4gICAgIHRoaXMuc2V0TWVzc2FnZUZvclVzZXIocmVzKTtcbiAgICAvLyAgY29uc29sZS5sb2coXCIgIEBJbnB1dCgpIHNldCByZXNwb25zZVN0YXR1cyhyZXM6IGFueSkgPj4+Pj4+Pj4+Pj4+LlwiLHJlcyk7XG4gIH1cbiAgQE91dHB1dCgpIHVzZXJTZWxlY3RlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG1lc3NhZ2VGb3JVc2VyID0gXCJMb2RpbmcuLi5cIjtcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIiBJTiAtLT4gNyBkYXRhXCIsdGhpcy5kYXRhKTtcbiAgfVxuICBzZXRNZXNzYWdlRm9yVXNlcihyZXM6IGFueSl7XG4gICAgdGhpcy5tZXNzYWdlRm9yVXNlciA9IHJlcztcbiAgfVxuICBvblVzZXJTZWxlY3REYXRlKGU6YW55KXtcbiAgICAvLyBjb25zb2xlLmxvZyhcIiBJTiAtLT4gMVwiKTtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZS5lbWl0KGUpO1xuICB9XG4gIFxuXG59XG4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQWEsS0FBSyxFQUFDLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU96RixNQUFNLE9BQU8sZ0NBQWdDO0lBUTNDO1FBRlUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxtQkFBYyxHQUFHLFdBQVcsQ0FBQztJQUNiLENBQUM7SUFOakIsSUFBYSxjQUFjLENBQUMsR0FBUTtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsNkVBQTZFO0lBQy9FLENBQUM7SUFLRCxRQUFRO1FBRU4sMkNBQTJDO0lBQzdDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxDQUFLO1FBQ3BCLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OztZQTFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztnQkFDMUMsa29CQUEwRDs7YUFFM0Q7Ozs7bUJBRUUsS0FBSzs2QkFDTCxLQUFLOytCQUlMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCAsT3V0cHV0LCBWaWV3Q2hpbGQsIElucHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmluY2lwYWwtZGFzaGJvYXJkLWxpYi12Mi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByaW5jaXBhbERhc2hib2FyZExpYlYyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YTtcbiAgQElucHV0KCkgc2V0IHJlc3BvbnNlU3RhdHVzKHJlczogYW55KSB7XG4gICAgIHRoaXMuc2V0TWVzc2FnZUZvclVzZXIocmVzKTtcbiAgICAvLyAgY29uc29sZS5sb2coXCIgIEBJbnB1dCgpIHNldCByZXNwb25zZVN0YXR1cyhyZXM6IGFueSkgPj4+Pj4+Pj4+Pj4+LlwiLHJlcyk7XG4gIH1cbiAgQE91dHB1dCgpIHVzZXJTZWxlY3RlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG1lc3NhZ2VGb3JVc2VyID0gXCJMb2RpbmcuLi5cIjtcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIiBJTiAtLT4gNyBkYXRhXCIsdGhpcy5kYXRhKTtcbiAgfVxuICBzZXRNZXNzYWdlRm9yVXNlcihyZXM6IGFueSl7XG4gICAgdGhpcy5tZXNzYWdlRm9yVXNlciA9IHJlcztcbiAgfVxuICBvblVzZXJTZWxlY3REYXRlKGU6YW55KXtcbiAgICAvLyBjb25zb2xlLmxvZyhcIiBJTiAtLT4gMVwiKTtcbiAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZS5lbWl0KGUpO1xuICB9XG4gIFxuXG59XG4iXX0=
@@ -358,12 +358,15 @@ export class PrincipalDashboardLibV2Service {
358
358
  let dataTableforChart = new Array();
359
359
  dataTableforChart = [];
360
360
  if (this.userConsoleData) {
361
+ console.log("chartDataUserWiseNew-->>", this.userConsoleData);
361
362
  if (this.userConsoleData.length > 0) {
362
363
  for (let i = 0; i < this.userConsoleData.length; i++) {
363
- console.log("chartDataUserWiseNew-->>", this.userConsoleData[i].userName);
364
364
  if (this.userConsoleData[i].userName === undefined) {
365
365
  this.userConsoleData[i].userName = "-";
366
366
  }
367
+ if (this.userConsoleData[i].userName === "-" || this.userConsoleData[i].userName === "--") {
368
+ this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only
369
+ }
367
370
  let userData = [this.userConsoleData[i].userName, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
368
371
  dataTableforChart.push(userData);
369
372
  //console.log("chartDataUserWiseNewNew-->>",userData)
@@ -466,6 +469,9 @@ export class PrincipalDashboardLibV2Service {
466
469
  if (AlluserDetails[i].userName === undefined) {
467
470
  AlluserDetails[i].userName = "--";
468
471
  }
472
+ if (AlluserDetails[i].userName === "--") {
473
+ //AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only
474
+ }
469
475
  let userData = [AlluserDetails[i].userName, AlluserDetails[i].startTime, AlluserDetails[i].endTime];
470
476
  dataTableforChart.push(userData);
471
477
  }
@@ -778,4 +784,4 @@ PrincipalDashboardLibV2Service.decorators = [
778
784
  },] }
779
785
  ];
780
786
  PrincipalDashboardLibV2Service.ctorParameters = () => [];
781
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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QkFBZ0IsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxPQUFPLEtBQUssZ0JBQWdCLEdBQUcsQ0FBQztJQUM1QyxDQUFDOzs7O1lBdHpCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2Uge1xucHVibGljIHJlc291cmVNZXRhRGF0YTphbnk7XG5wdWJsaWMgdXNlcnNNZXRhRGF0YTphbnk7XG5wdWJsaWMgc2Nob29sVGVybWluYWxEYXRhOmFueTtcbnB1YmxpYyB1c2VyQ29uc29sZURhdGE6YW55O1xuXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSQgPSB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkuYXNPYnNlcnZhYmxlKCk7XG5cbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG5wdWJsaWMgaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkkID0gdGhpcy5pc1VzZXJSZXFpdXJlZERhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcblxuIHB1YmxpYyBteWNoYXJ0VHlwZTogYW55ID0gJyc7XG4gIHB1YmxpYyBkYXRhVHlwZTogYW55ID0gJyc7XG4gIHB1YmxpYyB1c2VyQWxsRGF0YTogYW55ID0gJyc7XG4gIHB1YmxpYyB1c2VyTWV0YWRhdGE6IGFueSA9IHt1c2VyRGV0YWlsczpbXSxyZXNvdXJjZURldGFpbHM6W119O1xuICBwdWJsaWMgcmVzb3VyZU1ldGFkYXRhID0gbmV3IEFycmF5KCk7XG4gIHB1YmxpYyB1c2VyRGV0YWlsT2JqZWN0OiBhbnkgPSB7fTtcbiAgcHVibGljIHVzZXJsaXN0OmFueSA9IGZhbHNlO1xuICBwdWJsaWMgbXlFbmRUaW1lIDphbnk7XG4gXG4gIC8vZm9yIGNoYW5nZSBjaGFydCBUeXBlXG4gIHB1YmxpYyBjaGFydFR5cGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMubXljaGFydFR5cGUpO1xuICBwdWJsaWMgY2hhcnRUeXBlJCA9IHRoaXMuY2hhcnRUeXBlLmFzT2JzZXJ2YWJsZSgpO1xuICAvL2ZvciBjaGFuZ2UgdXNlcldpc2UgVG8gY2xhc3NSb29tIHdpc2Ugb3IgdmljZSB2ZXJzYVxuICBwdWJsaWMgaXNVc2VyV2lzZV9kYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcbiAgcHVibGljIGlzVXNlcldpc2VfZGF0YSQgPSB0aGlzLmlzVXNlcldpc2VfZGF0YS5hc09ic2VydmFibGUoKTtcbiAgLy8gZm9yIGFsbCB1c2VyIGFuZCBjdXJyZW50IHVzZXIgaW5mb3JtYXRpb25cbiAgcHVibGljIGlzQWxsVXNlcnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlcmxpc3QpO1xuICBwdWJsaWMgaXNBbGxVc2VycyQgPSB0aGlzLmlzQWxsVXNlcnMuYXNPYnNlcnZhYmxlKCk7XG4gIC8vZm9yIGdldCBkZXRhaWxzIG9mIHNlbGVjdGVkIHVzZXJcbiAgcHVibGljIGRldGFpbGVkdmlld0RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlck1ldGFkYXRhKTtcbiAgcHVibGljIGRldGFpbGVkdmlld0RhdGEkID0gdGhpcy5kZXRhaWxlZHZpZXdEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbiBcbiAgZ2VuYXJhdGVSZXNvdXJzZVJlcWl1cmVkRGF0YShkYXRhOiBhbnkpOiBhbnkge1xuICAgIHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5uZXh0KGZhbHNlKTtcbiAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xuICAgIFxuICAgICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcbiAgICAgICAgbGV0IHJlc291c2VJRDogYW55O1xuICAgICAgICBsZXQgdGl0bGU6IGFueTtcbiAgICAgICAgbGV0IHN1YmplY3Q6IGFueTtcbiAgICAgICAgbGV0IGdyYWRlOiBhbnk7XG4gICAgICAgIGxldCBjaGFwdGVyOiBhbnk7XG4gICAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XG4gICAgICAgIGxldCB0eXBlOiBhbnk7XG4gICAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhID0gZGF0YS5yZXNvdXJjZXNNZXRhZGF0YS5yZXNvdXJjZU1ldGFkYXRhO1xuICAgICAgIFxuICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhIT0gdW5kZWZpbmVkICYmIHJlc291cmNlTWV0YWRhdGEubGVuZ3RoPjApIHtcbiAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhLmxlbmd0aDtpKyspe1xuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9yZXNvdXNlSURcbiAgICAgICAgICAgIHJlc291c2VJRCA9IHJlc291cmNlTWV0YWRhdGFbaV0ucmVzb3VyY2VJZDtcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc3ViamVjdFxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzdWJqZWN0ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5zdWJqZWN0LnRpdGxlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9ncmFkZVxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmdyYWRlLnRpdGxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5ncmFkZS50aXRsZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncmFkZSA9ICcnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBncmFkZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vY2hhcHRlclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmNoYXB0ZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFwdGVyID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZWFjaGluZ3BvaW50XG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQudGl0bGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQudGl0bGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90eXBlXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udHlwZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdHlwZSA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhW2ldLnR5cGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdHlwZSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3RpdGxlXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aXRsZSA9IHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRpdGxlID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHtcbiAgICAgICAgICAgICAgcmVzb3VzZUlEOnJlc291c2VJRCxcbiAgICAgICAgICAgICAgc3ViamVjdDpzdWJqZWN0LFxuICAgICAgICAgICAgICBncmFkZTpncmFkZSxcbiAgICAgICAgICAgICAgY2hhcHRlcjpjaGFwdGVyLFxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50OnRlYWNoaW5ncG9pbnQsXG4gICAgICAgICAgICAgIHR5cGU6dHlwZSxcbiAgICAgICAgICAgICAgdGl0bGU6dGl0bGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc291cmNlTWV0YWRhdGFNYXRyaXgucHVzaChyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEpO1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJlTWV0YURhdGEgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xuICAgICAgICAgICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgLy8gdGhpcy5yZXNvdXJlTWV0YURhdGEgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhTWF0cml4O1xuICB9XG4gIGdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YShkYXRhOiBhbnkpOiBhbnkge1xuICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dChmYWxzZSk7XG4gICAgbGV0IHVzZXJzTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZCA9IG5ldyBBcnJheSgpO1xuICAgIGxldCBzY2hvb2xUZXJtaW5hbE1hdHJpeCA9IG5ldyBBcnJheSgpO1xuICAgIGxldCB1c2VyQ29uc29sZU1hdHJpeCA9IG5ldyBBcnJheSgpO1xuICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XG4gICAgICBsZXQgdXNlckNvbnNvbGUgPSBkYXRhLnVzZXJzQ29uc29sZS51c2VyQ29uc29sZTtcbiAgICAgIGxldCB1c2Vyc01ldGFkYXRhID0gZGF0YS51c2Vyc01ldGFkYXRhLnVzZXJNZXRhZGF0YTtcbiAgICAgIGxldCBzY2hvb2xUZXJtaW5hbCA9IGRhdGEuc2Nob29sVGVybWluYWxzLnNjaG9vbFRlcm1pbmFsO1xuICAgICAgXG4gICAgICBpZih1c2Vyc01ldGFkYXRhIT0gbnVsbCAmJiB1c2Vyc01ldGFkYXRhLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgdXNlcklkOiBhbnk7XG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XG4gICAgICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xuICAgICAgICAgIGxldCBsaXN0T2ZVc2VyOmFueSA9IHt9XG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlcklkIT1cIlwiKSB7XG4gICAgICAgICAgICB1c2VySWQgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJJZDtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiLS1jaGFydERhdGFVc2VyV2lzZS0tPj5cIix1c2Vyc01ldGFkYXRhW2ldLmZ1bGxOYW1lKVxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB1c2VyTmFtZSA9IHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gJyc7XG4gICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzID0gdXNlcnNNZXRhZGF0YVtpXS51c2VyU3ViamVjdHMgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgICAgICBsaXN0T2ZVc2VyID0ge1xuICAgICAgICAgICAgICB1c2VySWQ6dXNlcklkLCBcbiAgICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsIFxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5wdXNoKGxpc3RPZlVzZXIpOyAgICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSBvZiBhbGwgdXNlcnNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlck5hbWUgPT09IGVsZW1lbnQudXNlck5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQucHVzaCh1c2Vyc01ldGFkYXRhTWF0cml4W2ldKTsgIC8vYXJyYXkgb2Ygc2FtZSBuYW1lIHVzZXJzXG4gICAgICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnNwbGljZShpLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGUgc2FtZSBuYW1lIHVzZXJzIGZyb20gdXNlcm1ldGFkYXRhTWF0cml4XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBjb25zdCByYW5kb21OdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIC8vIHJhbmRvbU51bWJlci5pbm5lckhUTUwgPSBpLnRvU3RyaW5nKCk7XG4gICAgICAgIC8vdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSA9IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0udXNlck5hbWUgKyBcIiAtLS0gXCIgKyBpO1xuICAgICAgICAvL3NhdHlhaml0IDI4IGF1ZyAyMDI0IHJlbW92ZWQgY291bnQgZnJvbSB1c2VyTmFtZVxuICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lID0gdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZTtcbiAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5wdXNoKHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0pOyAgICAgICAgICAgIC8vYWRkaW5nIHNhbWUgbmFtZSB1c2VycyBpbiB1c2VybWV0YWRhdGFNYXRyaXggd2l0aCBzb21lIHJhbmRvbSBjaGFyYXRvcnNcbiAgICAgICAgdGhpcy51c2Vyc01ldGFEYXRhID0gdXNlcnNNZXRhZGF0YU1hdHJpeDtcbiAgICAgIH1cbiAgICAgIGlmKHNjaG9vbFRlcm1pbmFsICE9IG51bGwgJiYgc2Nob29sVGVybWluYWwubGVuZ3RoID4gMCl7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgc2Nob29sSWQ6YW55O1xuICAgICAgICAgIGxldCB0ZXJtaW5hbEtleTphbnk7XG4gICAgICAgICAgbGV0IHRlcm1pbmFsVHlwZTphbnk7XG4gICAgICAgICAgbGV0IGxvY2F0aW9uOmFueTtcbiAgICAgICAgICBsZXQgc2Nob29sVGVybWluYWxEYXRhOmFueSA9IHt9O1xuICAgIFxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc2Nob29sSWRcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2Nob29sSWQgPSBzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY2hvb2xJZCA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsS2V5XG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRlcm1pbmFsS2V5ID0gc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVybWluYWxLZXkgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbFR5cGVcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsVHlwZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL2xvY2F0aW9uXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxldCBtZXRhZGF0YUpTT04gPSBKU09OLnBhcnNlKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbG9jYXRpb24gPSBtZXRhZGF0YUpTT04ubG9jYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJtZXRhZGF0YUpTT05cIixsb2NhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvY2F0aW9uID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xuICAgICAgICAgIHNjaG9vbElkOnNjaG9vbElkLFxuICAgICAgICAgIHRlcm1pbmFsS2V5OnRlcm1pbmFsS2V5LFxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXG4gICAgICAgICAgbG9jYXRpb246bG9jYXRpb25cbiAgICAgICAgfTtcbiAgXG4gICAgICAgIGNvbnNvbGUubG9nKCdjY2MtLScsc2Nob29sVGVybWluYWxEYXRhKVxuICAgICAgICAgc2Nob29sVGVybWluYWxNYXRyaXgucHVzaChzY2hvb2xUZXJtaW5hbERhdGEpO1xuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdXNlckNvbnNvbGUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcbiAgICAgICAgICBsZXQgZW5kVGltZTogYW55O1xuICAgICAgICAgIGxldCBkdXJhdGlvbjogYW55O1xuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcbiAgICAgICAgICBsZXQgdGVybWluYWxJUDogYW55O1xuICAgICAgICAgIGxldCB1c2VyQ29uc29sZVJlc291cmNlczogYW55O1xuICAgICAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURTOiBhbnk7XG4gICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IFtdO1xuICAgICAgICAgIGxldCByZXNvdXJjZUR1cmF0aW9uRnJvbUNvbnNvbGUgPSBbXTtcbiAgICAgICAgICBsZXQgdXNlck5hbWU6IGFueTtcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XG4gICAgICAgICAgbGV0IHRlcm1pbmFsTG9jYXRpb246IGFueTtcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB1c2VySWQgPSB1c2VyQ29uc29sZVtpbmRleF0udXNlcklkOyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1c2VySWQgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gc3RhcnRUaW1lIFxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uc3RhcnRUaW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWU7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBlbmRUaW1lIFxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVbaW5kZXhdLmVuZFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgIHRoaXMubXlFbmRUaW1lID0gZW5kVGltZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5kVGltZSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEdXJhdGlvblxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHVyYXRpb24gPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUFxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udGVybWluYWxJUCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVybWluYWxJUCA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB1c2VyQ29uc29sZVJlc291cmNlc1xuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSB1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcbiAgICAgICAgICAgIGlmICh1c2VyQ29uc29sZVJlc291cmNlcy51c2VyQ29uc29sZVJlc291cmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgLy8gc2F0eWFqaXQgcmVzb3VyY2Ugd2lzZSBkdXJhdGlvbiBhZGRlZFxuICAgICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcy51c2VyQ29uc29sZVJlc291cmNlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhLnB1c2goaXRlbS5yZXNvdXJjZUlkKTsgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgICAgICByZXNvdXJjZUR1cmF0aW9uRnJvbUNvbnNvbGUucHVzaChpdGVtLmR1cmF0aW9uKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIC8vIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2VbaW5kZXhdcmVzb3VyY2VJZDsgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IFtdO1xuICAgICAgICAgICAgICByZXNvdXJjZUR1cmF0aW9uRnJvbUNvbnNvbGUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh1c2VySWQgPT09IHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlcklkKSB7XG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHRlcm1pbmFsSVAgYW5kIHRlcm1pbmFsTG9jYXRpb25cbiAgICAgICAgIFxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXVwiLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldKTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpO1xuICAgICAgICAgICAgaWYgKHRlcm1pbmFsSVAgPT09IHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldLnRlcm1pbmFsS2V5KSB7XG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgdGVybWluYWxMb2NhdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGVybWluYWxMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8IHRlcm1pbmFsTG9jYXRpb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHVzZXJEYXRhID0ge1xuICAgICAgICAgICAgdXNlcklkOiB1c2VySWQsXG4gICAgICAgICAgICB1c2VyTmFtZTogdXNlck5hbWUsXG4gICAgICAgICAgICBzdGFydFRpbWU6IG5ldyBEYXRlKHN0YXJ0VGltZSksXG4gICAgICAgICAgICBlbmRUaW1lOiBuZXcgRGF0ZShlbmRUaW1lKSxcbiAgICAgICAgICAgIHRlcm1pbmFsSVA6IHRlcm1pbmFsSVAsXG4gICAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSxcbiAgICAgICAgICAgIHJlc291cmNlRHVyYXRpb25Gcm9tQ29uc29sZTogcmVzb3VyY2VEdXJhdGlvbkZyb21Db25zb2xlLFxuICAgICAgICAgICAgZHVyYXRpb246ZHVyYXRpb24sXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXG4gICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXG4gICAgICAgICAgfTtcbiAgICAgICAgICB1c2VyQ29uc29sZU1hdHJpeC5wdXNoKHVzZXJEYXRhKTtcbiAgICAgICAgICB0aGlzLnVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlTWF0cml4O1xuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICB9XG4gICAgfVxuICAvLyBjb25zb2xlLmxvZyh1c2Vyc01ldGFkYXRhTWF0cml4LHNjaG9vbFRlcm1pbmFsTWF0cml4LHVzZXJDb25zb2xlTWF0cml4KTtcbiAgICAgcmV0dXJuIHtcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcbiAgICAgIHNjaG9vbFRlcm1pbmFsRGF0YTpzY2hvb2xUZXJtaW5hbE1hdHJpeCxcbiAgICAgIHVzZXJDb25zb2xlRGF0YTogdXNlckNvbnNvbGVNYXRyaXhcbiAgICB9XG4gIH1cbiAgdXNlcldpc2VDaGFydERhdGEoKXtcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hhcnREYXRhVXNlcldpc2VOZXctLT4+XCIsdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUpXG4gICAgICAgICAgaWYodGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS51c2VyTmFtZSA9IFwiLVwiXG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS51c2VyTmFtZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlTmV3TmV3LS0+PlwiLHVzZXJEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcbiAgfVxuICBjbGFzc1Jvb21XaXNlQ2hhcnREYXRhKCl7XG4gICAgbGV0IGRhdGFUYWJsZWZvckNoYXJ0ID0gbmV3IEFycmF5KCk7XG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XG4gICAgICBcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2JiYi0tPicsdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbilcbiAgICAgICAgbGV0IHJvb21OYW1lID0gdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbjtcblxuICAgICAgICBpZihyb29tTmFtZSA9PT0gXCJcIil7XG4gICAgICAgICAgLy9yb29tTmFtZSA9IFwiTm8gTmFtZVwiXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYXRpb24gPSByb29tTmFtZSArXCIgLSBcIisgdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxJUFxuICAgICAgICBjb25zb2xlLmxvZygnYmJibG9jYXRpb24tLT4nLGxvY2F0aW9uKVxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbbG9jYXRpb24sdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNsYXNzUm9vbVdpc2VDaGFydERhdGFcIixkYXRhVGFibGVmb3JDaGFydCk7XG4gICAgcmV0dXJuIGRhdGFUYWJsZWZvckNoYXJ0O1xuICAgIFxuICB9XG5cblxuICBuZXdHZXRDdXJyZW50Q2xhc3Nyb29tRGF0YSgpe1xuXG4gICAgbGV0IGRhdGFUYWJsZWZvckNoYXJ0ID0gbmV3IEFycmF5KCk7XG4gICAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xuICAgICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEpe1xuICAgICAgICBcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCdiYmItLT4nLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsTG9jYXRpb24pXG4gICAgICAgICAgbGV0IHJvb21OYW1lID0gdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbjtcbiAgICAgICAgICBsZXQgbG9jYXRpb24gPSByb29tTmFtZSArXCIgLSBcIisgdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxJUFxuICAgICAgICAgIGNvbnNvbGUubG9nKCdiYmJsb2NhdGlvbi0tPicsbG9jYXRpb24pXG4gICAgICAgICAgLy9sZXQgdXNlckRhdGEgPSBbbG9jYXRpb25dO1xuICAgICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2gobG9jYXRpb24pO1xuICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuY2xhc3NSb29tV2lzZUNoYXJ0RGF0YVwiLGRhdGFUYWJsZWZvckNoYXJ0KTtcbiAgICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gdGhpcy51bmlxKGRhdGFUYWJsZWZvckNoYXJ0KTtcbiAgICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcbiAgfVxuXG4gIHVuaXEoYSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoYSkpO1xuICB9XG5cbiAgYWxsVXNlckNoYXJ0RGF0YSgpe1xuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XG4gICAgbGV0IEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9bmV3IEFycmF5KCk7XG4gICAgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID0gW107XG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcbiAgICAgIGxldCBpbkFjdGl2ZXVzZXJOYW1lOiBhbnk7XG4gICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XG4gICAgICBsZXQgbXlJRDogYW55O1xuICAgICAgbGV0IEFsbHVzZXJEZXRhaWxzID1uZXcgQXJyYXkoKTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pXG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICBteUlEID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJJZDtcbiAgICAgICAgaW5BY3RpdmV1c2VyTmFtZSA9IHRoaXMudXNlcnNNZXRhRGF0YVtpXS51c2VyTmFtZTtcbiAgICAgICAgLy9pZihpbkFjdGl2ZXVzZXJOYW1lID09PSB1bmRlZmluZWQpXG4gICAgICAgIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImFsbHVzZXItMS0+PlwiLGluQWN0aXZldXNlck5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB1c2VyU3ViamVjdHMgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlclN1YmplY3RzO1xuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkOm15SUQsXG4gICAgICAgICAgdXNlck5hbWU6IGluQWN0aXZldXNlck5hbWUsXG4gICAgICAgICAgc3RhcnRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcbiAgICAgICAgICB0ZXJtaW5hbElQOlwiXCIsXG4gICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhOltdLFxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxuICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb246XCJcIixcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXG4gICAgICB9O1xuICAgICAgICAvL0FsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XG4gIFxuICAgICAgICBsZXQgbXlUYWJsZVJvd3VzZXJDb25zb2xlRGF0YSA9IHtcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcbiAgICAgICAgICB1c2VyTmFtZTogaW5BY3RpdmV1c2VyTmFtZSxcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcbiAgICAgICAgICBlbmRUaW1lOlwiXCIsXG4gICAgICAgICAgdGVybWluYWxJUDpcIlwiLFxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcbiAgICAgICAgICBkdXJhdGlvbjowLFxuICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb246XCJcIixcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXG4gICAgICAgIH07XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJhbGx1c2VyLTItPj5cIixpbkFjdGl2ZXVzZXJOYW1lKTtcbiAgICAgICAgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0LnB1c2gobXlUYWJsZVJvd3VzZXJDb25zb2xlRGF0YSk7XG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IEFsbHVzZXJEZXRhaWxzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImFsbHVzZXItMy0+PlwiLEFsbHVzZXJEZXRhaWxzW2ldLnVzZXJOYW1lKTtcbiAgICAgICAgICBpZihBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIEFsbHVzZXJEZXRhaWxzW2ldLnVzZXJOYW1lID0gXCItLVwiXG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sNTApXG5cbiAgICAgIC8qXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zb2xlLmxvZyhcImFsbHVzZXItMy0+PlwiLEFsbHVzZXJEZXRhaWxzW2ldLnVzZXJOYW1lKTtcbiAgICAgICAgaWYoQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUgPSBcIigtKVwiXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUsQWxsdXNlckRldGFpbHNbaV0uc3RhcnRUaW1lLEFsbHVzZXJEZXRhaWxzW2ldLmVuZFRpbWVdO1xuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcbiAgICAgIH0qL1xuICAgIH1cbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOkFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydH1cbiAgfVxuICBhbGxSb29tc0RhdGEoKXtcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcbiAgICBhbGxSb29tc0RldGFpbHMgPSBbXTtcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSAmJiB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YSl7XG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcbiAgICAgIGxldCBpbkFjdGl2ZUNsYXNzUm9vbTogYW55O1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYmJiIGFsbFJvb20tLT5cIix0aGlzLnVzZXJDb25zb2xlRGF0YVtpXSlcbiAgICAgICAgbGV0IHJvb21OYW1lID0gdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbjtcbiAgICAgICAgbGV0IHJvb21JUCA9IHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsSVA7XG5cbiAgICAgICAgaWYocm9vbU5hbWUgPT09IFwiXCIgfHwgcm9vbU5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgcm9vbU5hbWUgPSBcIk5vIE5hbWVcIlxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgbG9jYXRpb24gPSByb29tTmFtZSArXCIgLSBcIisgcm9vbUlQO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCdiYmJiUm9vbScsbG9jYXRpb24pXG4gICAgICAgIFxuICAgICAgIC8vIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbElQLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcbiAgICAgICAgbGV0IHVzZXJEYXRhID0gW2xvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICB9XG4gICAgIFxuICAgICAgbGV0IGluYWN0aXZlUm9vbk5hbWU7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwic2Nob29sVGVybWluYWxEYXRhXCIsdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpO1xuICAgICAgICBcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbiArICcgLSAnICsgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGFbaV0udGVybWluYWxLZXk7XG4gICAgICAgIC8vaW5hY3RpdmVSb29uTmFtZSA9IHRoaXMuc2Nob29sVGVybWluYWxEYXRhW2ldLmxvY2F0aW9uO1xuICAgICAgICBcbiAgICAgICAgbXlDaGFydFJvd0RhdGEgPSB7XG4gICAgICAgICAgdXNlcklkOlwiXCIsXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcbiAgICAgICAgICBzdGFydFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxuICAgICAgICAgIGVuZFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxuICAgICAgICAgIHRlcm1pbmFsSVA6aW5BY3RpdmVDbGFzc1Jvb20sXG4gICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhOltdLFxuICAgICAgICAgIGR1cmF0aW9uOjAsXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxuICAgICAgICAgIHVzZXJTdWJqZWN0czpcIlwiXG4gICAgICAgIH07XG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcbiAgICAgICAgbGV0IG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEgPSBbaW5BY3RpdmVDbGFzc1Jvb20sbmV3IERhdGUodGhpcy5teUVuZFRpbWUpLG5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKV07XG4gICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XG4gICAgICB9XG4gICAgIFxuICAgIH1cbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XG4gIH1cbiAgZGF0YUZvclRhYmxlVmlldyh1c2VyQ29uc29sZU1hdHJpeDogYW55LHJlc291cmNlTWV0YWRhdGFNYXRyaXg6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiQUFBIHVzZXJDb25zb2xlTWF0cml4XCIsdXNlckNvbnNvbGVNYXRyaXgpO1xuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xuICAgIGxldCByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IG5ldyBBcnJheSgpO1xuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xuICAgIHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8dXNlckNvbnNvbGVNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcbiAgICAgIGxldCBlbmRUaW1lOiBhbnk7XG4gICAgICBsZXQgZHVyYXRpb246IGFueTtcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XG4gICAgICBsZXQgc3ViamVjdDogYW55O1xuICAgICAgbGV0IGdyYWRlOiBhbnk7XG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xuICAgICAgbGV0IEFzc2VzdERldGFpbDogYW55O1xuICAgICAgbGV0IHJlc291cmNlVHlwZTogYW55O1xuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XG4gICAgICBsZXQgbG9jYXRpb246IGFueTtcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XG4gICAgICBcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uOiBhbnk7XG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvckV4Y2VsID0gbmV3IEFycmF5KCk7XG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW107XG4gICAgICB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBbXTtcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxuICBcblxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XG4gICAgICB0ZWFjaGVyTmFtZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnVzZXJOYW1lO1xuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3RhcnQgVGltZSAgYW5kIEVuZFRpbWUgXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xuICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xuICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xuICAgICAgfVxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgZHVyYXRpb25cbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBUZXJtaW5hbCBsb2FjdGlvbiBhbmQgdGVybWluYWwgSVBcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udGVybWluYWxMb2NhdGlvbjtcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XG4gICAgIFxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHNEdXJhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlRHVyYXRpb25Gcm9tQ29uc29sZTtcblxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB0ZWFjaGluZ3BvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlc291cmNlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbdGVhY2hlck5hbWUsdGVhY2hlclN1YmplY3QsY3VycmVudERhdGUsc3RhcnRUaW1lLGVuZFRpbWUsZHVyYXRpb24scm9vbURldGFpbCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCxBc3Nlc3REZXRhaWxdO1xuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XG4gICAgICAgXG4gICAgICB9ZWxzZXtcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEc1trXSA9PT0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5yZXNvdXNlSUQpIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIC8vIHNhdHlhaml0XG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XG4gICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5ncmFkZTtcbiAgICAgICAgICAgICAgY2hhcHRlciA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0uY2hhcHRlcjtcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcbiAgICAgICAgICAgICAgaWYocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZS50b0xvd2VyQ2FzZSgpID09PSAnd2hpdGVib2FyZCcgfHwgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZS50b0xvd2VyQ2FzZSgpID09PSAncXVlc3Rpb24nKXtcbiAgICAgICAgICAgICAgICAvL0Fzc2VzdERldGFpbCA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUpICsgJyA6ICcgKyByZXNvdXJjZU1ldGFkYXRhSURzRHVyYXRpb25ba10gKyAnIHNlYyc7XG5cbiAgICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArICcgOiAnICsgdGhpcy5jb252ZXJ0U2Vjb25kcyhyZXNvdXJjZU1ldGFkYXRhSURzRHVyYXRpb25ba10pO1xuXG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0U2Vjb25kc1xuXG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIC8vQXNzZXN0RGV0YWlsID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSkgKyBcIiA6IFwiICsgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZSArICcgOiAnICsgcmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uW2tdICsgJyBzZWMnO1xuXG4gICAgICAgICAgICAgICAgQXNzZXN0RGV0YWlsID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSkgKyBcIiA6IFwiICsgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZSArICcgOiAnICsgdGhpcy5jb252ZXJ0U2Vjb25kcyhyZXNvdXJjZU1ldGFkYXRhSURzRHVyYXRpb25ba10pO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgIC8vQXNzZXN0RGV0YWlsID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSkgKyBcIiA6IFwiICsgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZSArICcgOiAnICsgcmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uW2tdO1xuXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcbiAgICAgICAgICAgICAgcmVzb3VyY2VNYXRyaXhGb3JUYWJsZUNoYXJ0LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xuICAgICAgICAgICAgICAgIHRlYWNoZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJvb21EZXRhaWwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XG4gIH1cbiAgZGF0YUZvckRldGFpbGVkVmlldyh1c2VyQ29uc29sZU1hdHJpeDogYW55LHJlc291cmNlTWV0YWRhdGFNYXRyaXg6IGFueSwgcm93TGFiZWw6IGFueSkge1xuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgIGRldGFpbGVkVmlld19Vc2VyRGF0YU1hdHJpeCA9IFtdO1xuICAgIGxldCBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XG4gIFxuICAgICAgbGV0IHN0YXJ0VGltZTogYW55O1xuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcbiAgICAgIGxldCBkdXJhdGlvbjogYW55O1xuICAgICAgbGV0IHRlcm1pbmFsSVA6IGFueTtcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XG4gICAgICBsZXQgZ3JhZGU6IGFueTtcbiAgICAgIGxldCBjaGFwdGVyOiBhbnk7XG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XG4gICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcbiAgICAgIGxldCB0ZWFjaGVyU3ViamVjdDogYW55O1xuICAgICAgbGV0IGN1cnJlbnREYXRlOiBhbnk7XG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xuICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRHNkdXJhdGlvbjogYW55O1xuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XG4gICAgICByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IFtdO1xuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXG4gICAgICB0ZWFjaGVyU3ViamVjdCA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS51c2VyU3ViamVjdHM7XG4gICAgICB0ZWFjaGVyTmFtZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS51c2VyTmFtZTtcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUgIT0gdW5kZWZpbmVkICYmIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUgIT0gXCJcIikgJiYgKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gXCJcIikpIHtcbiAgICAgICAgc3RhcnRUaW1lID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZS5nZXREYXRlKCkgKyAnLycgKyB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldE1vbnRoKCkgKyAnLycgKyB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldEZ1bGxZZWFyKCk7XG4gICAgICB9XG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxuICAgICAgZHVyYXRpb24gPSBNYXRoLmZsb29yKHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5kdXJhdGlvbik7XG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBUZXJtaW5hbCBsb2FjdGlvbiBhbmQgdGVybWluYWwgSVBcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XG4gICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsSVA7XG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEc2R1cmF0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnJlc291cmNlRHVyYXRpb25Gcm9tQ29uc29sZTtcblxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxuICAgICAgXG4gICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGggPT0gMCkge1xuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgY2hhcHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xuICAgICAgICAvLyByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IFtzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCxBc3Nlc3REZXRhaWxdO1xuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIC8vc2F0eWFqaXRcbiAgICAgICAgIC8vcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IFtyZXNvdXNlSUQsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsdHlwZSx0aXRsZV1cbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCByZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEc1trXSA9PT0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5yZXNvdXNlSUQpIHtcbiAgICAgICAgICAgICAgc3ViamVjdCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0uc3ViamVjdDtcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5jaGFwdGVyO1xuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50ZWFjaGluZ3BvaW50O1xuICAgICAgICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRpdGxlLnRvTG93ZXJDYXNlKCkgPT09ICd3aGl0ZWJvYXJkJyB8fCByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRpdGxlLnRvTG93ZXJDYXNlKCkgPT09ICdxdWVzdGlvbicpe1xuICAgICAgICAgICAgICAgIC8vQXNzZXN0RGV0YWlsID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlICsgXCI6IFwiICsgcmVzb3VyY2VNZXRhZGF0YUlEc2R1cmF0aW9uW2tdICsgJyBzZWMnO1xuICAgICAgICAgICAgICAgIEFzc2VzdERldGFpbCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHRoaXMuY29udmVydFNlY29uZHMocmVzb3VyY2VNZXRhZGF0YUlEc2R1cmF0aW9uW2tdKTtcbiAgICAgICAgICAgICAgICAvL2NvbnZlcnRTZWNvbmRzXG4gICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIC8vQXNzZXN0RGV0YWlsID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlICsgXCI6IFwiICsgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFJRHNkdXJhdGlvbltrXSArICcgc2VjJztcbiAgICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUgKyBcIjogXCIgKyByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRpdGxlICsgXCI6IFwiICsgdGhpcy5jb252ZXJ0U2Vjb25kcyhyZXNvdXJjZU1ldGFkYXRhSURzZHVyYXRpb25ba10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcbiAgICAgICAgICAgICAgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeC5wdXNoKHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gICBcbiAgICAgIFxuICAgIHJldHVybiB7dXNlckRldGFpbHM6ZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4LHJlc291cmNlRGV0YWlsczpkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4fTtcbiAgfVxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxuICAgZ2V0RGlzcGxheXR5cGVWYWx1ZShrZXk6IGFueSkge1xuICAgIGxldCBhc3NldFR5cGVDb25maWcgPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiYXNzZXRfbWVkaWFcIixcbiAgICAgICAgZGlzcGxheTogXCJNZWRpYVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImFzc2V0X3ByaW50XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiUXVpelwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInF1ZXN0aW9uXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiUXVlc3Rpb25cIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjaGFwdGVyXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInRwXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiVG9waWNcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ3aGl0ZWJvYXJkXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiV2hpdGVib2FyZFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcIndpZGdldFwiLFxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxuICAgICAgICBkaXNwbGF5OiBcImNNZWRpYVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNhc3NldF9wcmludFwiLFxuICAgICAgICBkaXNwbGF5OiBcImNQcmludFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcImNxdWl6XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcbiAgICAgICAgZGlzcGxheTogXCJjUXVlc3Rpb25cIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJpbWFnZVwiLFxuICAgICAgICBkaXNwbGF5OiBcIkltYWdlXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwidmlkZW9cIixcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXG4gICAgICB9LFxuXG4gICAgXTtcbiAgICBsZXQgZGlzcGxheVZhbHVlID0ga2V5O1xuICAgIGFzc2V0VHlwZUNvbmZpZy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xuICAgICAgICBkaXNwbGF5VmFsdWUgPSB2YWx1ZS5kaXNwbGF5O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XG5cbiAgfVxuXG4gIGNvbnZlcnRTZWNvbmRzKHNlY29uZHMpIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSBzZWNvbmRzICUgNjA7XG4gICAgcmV0dXJuIGAke21pbnV0ZXN9bSAke3JlbWFpbmluZ1NlY29uZHN9c2A7XG4gIH1cbn1cbiJdfQ==
787
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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Q0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO2dCQUN0QixZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFFdEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEdBQUcsT0FBTyxLQUFLLGdCQUFnQixHQUFHLENBQUM7SUFDNUMsQ0FBQzs7OztZQTl6QkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIHtcbnB1YmxpYyByZXNvdXJlTWV0YURhdGE6YW55O1xucHVibGljIHVzZXJzTWV0YURhdGE6YW55O1xucHVibGljIHNjaG9vbFRlcm1pbmFsRGF0YTphbnk7XG5wdWJsaWMgdXNlckNvbnNvbGVEYXRhOmFueTtcblxucHVibGljIGlzUmVzb3VyZU1ldGFEYXRhUmVhZHkgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xucHVibGljIGlzUmVzb3VyZU1ldGFEYXRhUmVhZHkkID0gdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xuXG5wdWJsaWMgaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xucHVibGljIGlzVXNlclJlcWl1cmVkRGF0YVJlYWR5JCA9IHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkuYXNPYnNlcnZhYmxlKCk7XG5cbiBwdWJsaWMgbXljaGFydFR5cGU6IGFueSA9ICcnO1xuICBwdWJsaWMgZGF0YVR5cGU6IGFueSA9ICcnO1xuICBwdWJsaWMgdXNlckFsbERhdGE6IGFueSA9ICcnO1xuICBwdWJsaWMgdXNlck1ldGFkYXRhOiBhbnkgPSB7dXNlckRldGFpbHM6W10scmVzb3VyY2VEZXRhaWxzOltdfTtcbiAgcHVibGljIHJlc291cmVNZXRhZGF0YSA9IG5ldyBBcnJheSgpO1xuICBwdWJsaWMgdXNlckRldGFpbE9iamVjdDogYW55ID0ge307XG4gIHB1YmxpYyB1c2VybGlzdDphbnkgPSBmYWxzZTtcbiAgcHVibGljIG15RW5kVGltZSA6YW55O1xuIFxuICAvL2ZvciBjaGFuZ2UgY2hhcnQgVHlwZVxuICBwdWJsaWMgY2hhcnRUeXBlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLm15Y2hhcnRUeXBlKTtcbiAgcHVibGljIGNoYXJ0VHlwZSQgPSB0aGlzLmNoYXJ0VHlwZS5hc09ic2VydmFibGUoKTtcbiAgLy9mb3IgY2hhbmdlIHVzZXJXaXNlIFRvIGNsYXNzUm9vbSB3aXNlIG9yIHZpY2UgdmVyc2FcbiAgcHVibGljIGlzVXNlcldpc2VfZGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEkID0gdGhpcy5pc1VzZXJXaXNlX2RhdGEuYXNPYnNlcnZhYmxlKCk7XG4gIC8vIGZvciBhbGwgdXNlciBhbmQgY3VycmVudCB1c2VyIGluZm9ybWF0aW9uXG4gIHB1YmxpYyBpc0FsbFVzZXJzID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnVzZXJsaXN0KTtcbiAgcHVibGljIGlzQWxsVXNlcnMkID0gdGhpcy5pc0FsbFVzZXJzLmFzT2JzZXJ2YWJsZSgpO1xuICAvL2ZvciBnZXQgZGV0YWlscyBvZiBzZWxlY3RlZCB1c2VyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnVzZXJNZXRhZGF0YSk7XG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhJCA9IHRoaXMuZGV0YWlsZWR2aWV3RGF0YS5hc09ic2VydmFibGUoKTtcblxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG4gXG4gIGdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dChmYWxzZSk7XG4gICAgbGV0IHJlc291cmNlTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICBcbiAgICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XG4gICAgICAgIGxldCByZXNvdXNlSUQ6IGFueTtcbiAgICAgICAgbGV0IHRpdGxlOiBhbnk7XG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XG4gICAgICAgIGxldCBncmFkZTogYW55O1xuICAgICAgICBsZXQgY2hhcHRlcjogYW55O1xuICAgICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xuICAgICAgICBsZXQgdHlwZTogYW55O1xuICAgICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YSA9IGRhdGEucmVzb3VyY2VzTWV0YWRhdGEucmVzb3VyY2VNZXRhZGF0YTtcbiAgICAgICBcbiAgICAgICAgaWYocmVzb3VyY2VNZXRhZGF0YSE9IHVuZGVmaW5lZCAmJiByZXNvdXJjZU1ldGFkYXRhLmxlbmd0aD4wKSB7XG4gICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VNZXRhZGF0YS5sZW5ndGg7aSsrKXtcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vcmVzb3VzZUlEXG4gICAgICAgICAgICByZXNvdXNlSUQgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnJlc291cmNlSWQ7XG4gICAgICAgICAgICAvLy0tLS0tLS0tLS0vL3N1YmplY3RcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3ViamVjdCA9IHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWJqZWN0ID0gJyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vZ3JhZGVcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLmdyYWRlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5ncmFkZS50aXRsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JhZGUgPSAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZ3JhZGUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL2NoYXB0ZXJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY2hhcHRlciA9IHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVhY2hpbmdwb2ludFxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRlYWNoaW5ncG9pbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdHlwZVxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnR5cGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHR5cGUgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHR5cGUgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90aXRsZVxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGl0bGUgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aXRsZSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSB7XG4gICAgICAgICAgICAgIHJlc291c2VJRDpyZXNvdXNlSUQsXG4gICAgICAgICAgICAgIHN1YmplY3Q6c3ViamVjdCxcbiAgICAgICAgICAgICAgZ3JhZGU6Z3JhZGUsXG4gICAgICAgICAgICAgIGNoYXB0ZXI6Y2hhcHRlcixcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludDp0ZWFjaGluZ3BvaW50LFxuICAgICAgICAgICAgICB0eXBlOnR5cGUsXG4gICAgICAgICAgICAgIHRpdGxlOnRpdGxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvdXJjZU1ldGFkYXRhTWF0cml4LnB1c2gocmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhKTtcbiAgICAgICAgICAgIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcbiAgICAgICAgICAgIHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5uZXh0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIC8vIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcbiAgfVxuICBnZW5hcmF0ZVVzZXJSZXFpdXJlZERhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xuICAgIGxldCB1c2Vyc01ldGFkYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XG4gICAgbGV0IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQgPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgc2Nob29sVGVybWluYWxNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgdXNlckNvbnNvbGVNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICBpZihkYXRhICYmIGRhdGEgIT09IG51bGwpe1xuICAgICAgbGV0IHVzZXJDb25zb2xlID0gZGF0YS51c2Vyc0NvbnNvbGUudXNlckNvbnNvbGU7XG4gICAgICBsZXQgdXNlcnNNZXRhZGF0YSA9IGRhdGEudXNlcnNNZXRhZGF0YS51c2VyTWV0YWRhdGE7XG4gICAgICBsZXQgc2Nob29sVGVybWluYWwgPSBkYXRhLnNjaG9vbFRlcm1pbmFscy5zY2hvb2xUZXJtaW5hbDtcbiAgICAgIFxuICAgICAgaWYodXNlcnNNZXRhZGF0YSE9IG51bGwgJiYgdXNlcnNNZXRhZGF0YS5sZW5ndGggPiAwKXtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2Vyc01ldGFkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xuICAgICAgICAgIGxldCB1c2VyTmFtZTogYW55O1xuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6IGFueTtcbiAgICAgICAgICBsZXQgbGlzdE9mVXNlcjphbnkgPSB7fVxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLnVzZXJJZCE9XCJcIikge1xuICAgICAgICAgICAgdXNlcklkID0gdXNlcnNNZXRhZGF0YVtpXS51c2VySWQ7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIi0tY2hhcnREYXRhVXNlcldpc2UtLT4+XCIsdXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSlcbiAgICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLmZ1bGxOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXNlck5hbWUgPSB1c2Vyc01ldGFkYXRhW2ldLmZ1bGxOYW1lIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1c2VyTmFtZSA9ICcnO1xuICAgICAgICAgICAgfVxuICBcbiAgICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9IHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICAgICAgbGlzdE9mVXNlciA9IHtcbiAgICAgICAgICAgICAgdXNlcklkOnVzZXJJZCwgXG4gICAgICAgICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLCBcbiAgICAgICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaChsaXN0T2ZVc2VyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgb2YgYWxsIHVzZXJzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJzTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJOYW1lID09PSBlbGVtZW50LnVzZXJOYW1lKSB7XG4gICAgICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkLnB1c2godXNlcnNNZXRhZGF0YU1hdHJpeFtpXSk7ICAvL2FycmF5IG9mIHNhbWUgbmFtZSB1c2Vyc1xuICAgICAgICAgICAgdXNlcnNNZXRhZGF0YU1hdHJpeC5zcGxpY2UoaSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhlIHNhbWUgbmFtZSB1c2VycyBmcm9tIHVzZXJtZXRhZGF0YU1hdHJpeFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gY29uc3QgcmFuZG9tTnVtYmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAvLyByYW5kb21OdW1iZXIuaW5uZXJIVE1MID0gaS50b1N0cmluZygpO1xuICAgICAgICAvL3VzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0udXNlck5hbWUgPSB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lICsgXCIgLS0tIFwiICsgaTtcbiAgICAgICAgLy9zYXR5YWppdCAyOCBhdWcgMjAyNCByZW1vdmVkIGNvdW50IGZyb20gdXNlck5hbWVcbiAgICAgICAgdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSA9IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWRbaV0udXNlck5hbWU7XG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaCh1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldKTsgICAgICAgICAgICAvL2FkZGluZyBzYW1lIG5hbWUgdXNlcnMgaW4gdXNlcm1ldGFkYXRhTWF0cml4IHdpdGggc29tZSByYW5kb20gY2hhcmF0b3JzXG4gICAgICAgIHRoaXMudXNlcnNNZXRhRGF0YSA9IHVzZXJzTWV0YWRhdGFNYXRyaXg7XG4gICAgICB9XG4gICAgICBpZihzY2hvb2xUZXJtaW5hbCAhPSBudWxsICYmIHNjaG9vbFRlcm1pbmFsLmxlbmd0aCA+IDApe1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IHNjaG9vbElkOmFueTtcbiAgICAgICAgICBsZXQgdGVybWluYWxLZXk6YW55O1xuICAgICAgICAgIGxldCB0ZXJtaW5hbFR5cGU6YW55O1xuICAgICAgICAgIGxldCBsb2NhdGlvbjphbnk7XG4gICAgICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsRGF0YTphbnkgPSB7fTtcbiAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3NjaG9vbElkXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnNjaG9vbElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNjaG9vbElkID0gc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2Nob29sSWQgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbEtleVxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlcm1pbmFsS2V5ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVybWluYWxUeXBlXG4gICAgICAgICAgaWYgKHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGVybWluYWxUeXBlID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy9sb2NhdGlvblxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgbWV0YWRhdGFKU09OID0gSlNPTi5wYXJzZShzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxvY2F0aW9uID0gbWV0YWRhdGFKU09OLmxvY2F0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWV0YWRhdGFKU09OXCIsbG9jYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2NhdGlvbiA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsRGF0YSA9IHtcbiAgICAgICAgICBzY2hvb2xJZDpzY2hvb2xJZCxcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcbiAgICAgICAgICB0ZXJtaW5hbFR5cGU6dGVybWluYWxUeXBlLFxuICAgICAgICAgIGxvY2F0aW9uOmxvY2F0aW9uXG4gICAgICAgIH07XG4gIFxuICAgICAgICBjb25zb2xlLmxvZygnY2NjLS0nLHNjaG9vbFRlcm1pbmFsRGF0YSlcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcbiAgICAgICAgIHRoaXMuc2Nob29sVGVybWluYWxEYXRhID0gc2Nob29sVGVybWluYWxNYXRyaXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKHVzZXJDb25zb2xlICE9bnVsbCAmJiB1c2VyQ29uc29sZS5sZW5ndGggPiAwKXtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHVzZXJDb25zb2xlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcbiAgICAgICAgICBsZXQgc3RhcnRUaW1lOiBhbnk7XG4gICAgICAgICAgbGV0IGVuZFRpbWU6IGFueTtcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWREYXRlOiBhbnk7XG4gICAgICAgICAgbGV0IHRlcm1pbmFsSVA6IGFueTtcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcbiAgICAgICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEUzogYW55O1xuICAgICAgICAgIGxldCByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSBbXTtcbiAgICAgICAgICBsZXQgcmVzb3VyY2VEdXJhdGlvbkZyb21Db25zb2xlID0gW107XG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XG4gICAgICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xuICAgICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy91c2VyIGlEXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS51c2VySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZDsgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXNlcklkID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHN0YXJ0VGltZSBcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uc3RhcnRUaW1lOyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRpbWUgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmVuZFRpbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5lbmRUaW1lIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVuZFRpbWUgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gRGF0ZSBcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnNlbGVjdGVkRGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0ZSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gRHVyYXRpb25cbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHRlcm1pbmFsSVBcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGVybWluYWxJUCA9IHVzZXJDb25zb2xlW2luZGV4XS50ZXJtaW5hbElQIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnVzZXJDb25zb2xlUmVzb3VyY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHVzZXJDb25zb2xlUmVzb3VyY2VzID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJDb25zb2xlUmVzb3VyY2VzIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVzZXJDb25zb2xlUmVzb3VyY2VzID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgaWYodXNlckNvbnNvbGVSZXNvdXJjZXMgIT0gbnVsbCl7XG4gICAgICAgICAgICBpZiAodXNlckNvbnNvbGVSZXNvdXJjZXMudXNlckNvbnNvbGVSZXNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIHNhdHlhaml0IHJlc291cmNlIHdpc2UgZHVyYXRpb24gYWRkZWRcbiAgICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMudXNlckNvbnNvbGVSZXNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YS5wdXNoKGl0ZW0ucmVzb3VyY2VJZCk7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VEdXJhdGlvbkZyb21Db25zb2xlLnB1c2goaXRlbS5kdXJhdGlvbik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAvLyByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZVJlc291cmNlcy51c2VyQ29uc29sZVJlc291cmNlW2luZGV4XXJlc291cmNlSWQ7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEgPSBbXTtcbiAgICAgICAgICAgICAgcmVzb3VyY2VEdXJhdGlvbkZyb21Db25zb2xlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB1c2VyTmFtZSBhbmQgdXNlclN1YmplY3RzXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1c2Vyc01ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xuICAgICAgICAgICAgICB1c2VyTmFtZSA9IHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlck5hbWU7XG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9IHVzZXJzTWV0YWRhdGFNYXRyaXhbaV0udXNlclN1YmplY3RzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQIGFuZCB0ZXJtaW5hbExvY2F0aW9uXG4gICAgICAgICBcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsTWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2Nob29sVGVybWluYWxNYXRyaXhbaV1cIixzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXSk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXlcIix0ZXJtaW5hbElQLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldLnRlcm1pbmFsS2V5KTtcbiAgICAgICAgICAgIGlmICh0ZXJtaW5hbElQID09PSBzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleSkge1xuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKHRlcm1pbmFsTG9jYXRpb24gPT09IHVuZGVmaW5lZCB8fCB0ZXJtaW5hbExvY2F0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGVybWluYWxMb2NhdGlvbiA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB1c2VyRGF0YSA9IHtcbiAgICAgICAgICAgIHVzZXJJZDogdXNlcklkLFxuICAgICAgICAgICAgdXNlck5hbWU6IHVzZXJOYW1lLFxuICAgICAgICAgICAgc3RhcnRUaW1lOiBuZXcgRGF0ZShzdGFydFRpbWUpLFxuICAgICAgICAgICAgZW5kVGltZTogbmV3IERhdGUoZW5kVGltZSksXG4gICAgICAgICAgICB0ZXJtaW5hbElQOiB0ZXJtaW5hbElQLFxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhOiByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXG4gICAgICAgICAgICByZXNvdXJjZUR1cmF0aW9uRnJvbUNvbnNvbGU6IHJlc291cmNlRHVyYXRpb25Gcm9tQ29uc29sZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxuICAgICAgICAgICAgdGVybWluYWxMb2NhdGlvbjp0ZXJtaW5hbExvY2F0aW9uLFxuICAgICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xuICAgICAgICAgIH07XG4gICAgICAgICAgdXNlckNvbnNvbGVNYXRyaXgucHVzaCh1c2VyRGF0YSk7XG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcbiAgICAgICAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgfVxuICAgIH1cbiAgLy8gY29uc29sZS5sb2codXNlcnNNZXRhZGF0YU1hdHJpeCxzY2hvb2xUZXJtaW5hbE1hdHJpeCx1c2VyQ29uc29sZU1hdHJpeCk7XG4gICAgIHJldHVybiB7XG4gICAgICB1c2Vyc01ldGFkYXRhOnVzZXJzTWV0YWRhdGFNYXRyaXgsXG4gICAgICBzY2hvb2xUZXJtaW5hbERhdGE6c2Nob29sVGVybWluYWxNYXRyaXgsXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XG4gICAgfVxuICB9XG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XG4gICAgbGV0IGRhdGFUYWJsZWZvckNoYXJ0ID0gbmV3IEFycmF5KCk7XG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XG4gICAgICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlTmV3LS0+PlwiLHRoaXMudXNlckNvbnNvbGVEYXRhKVxuICAgICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoID4gMCl7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYodGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS51c2VyTmFtZSA9IFwiLVwiXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnVzZXJOYW1lID09PSBcIi1cIiB8fCB0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS51c2VyTmFtZSA9PT0gXCItLVwiKXtcbiAgICAgICAgICAgIHRoaXMudXNlckNvbnNvbGVEYXRhLnNwbGljZShpLCAxKTsgLy8gMm5kIHBhcmFtZXRlciBtZWFucyByZW1vdmUgb25lIGl0ZW0gb25seVxuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xuICAgICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2godXNlckRhdGEpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJjaGFydERhdGFVc2VyV2lzZU5ld05ldy0tPj5cIix1c2VyRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XG4gIH1cbiAgY2xhc3NSb29tV2lzZUNoYXJ0RGF0YSgpe1xuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEpe1xuICAgICAgXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICAvL2NvbnNvbGUubG9nKCdiYmItLT4nLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsTG9jYXRpb24pXG4gICAgICAgIGxldCByb29tTmFtZSA9IHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsTG9jYXRpb247XG5cbiAgICAgICAgaWYocm9vbU5hbWUgPT09IFwiXCIpe1xuICAgICAgICAgIC8vcm9vbU5hbWUgPSBcIk5vIE5hbWVcIlxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2F0aW9uID0gcm9vbU5hbWUgK1wiIC0gXCIrIHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsSVBcbiAgICAgICAgY29uc29sZS5sb2coJ2JiYmxvY2F0aW9uLS0+Jyxsb2NhdGlvbilcbiAgICAgICAgbGV0IHVzZXJEYXRhID0gW2xvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5jbGFzc1Jvb21XaXNlQ2hhcnREYXRhXCIsZGF0YVRhYmxlZm9yQ2hhcnQpO1xuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcbiAgICBcbiAgfVxuXG5cbiAgbmV3R2V0Q3VycmVudENsYXNzcm9vbURhdGEoKXtcblxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xuICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcbiAgICAgICAgXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnYmJiLS0+Jyx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbExvY2F0aW9uKVxuICAgICAgICAgIGxldCByb29tTmFtZSA9IHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsTG9jYXRpb247XG4gICAgICAgICAgbGV0IGxvY2F0aW9uID0gcm9vbU5hbWUgK1wiIC0gXCIrIHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsSVBcbiAgICAgICAgICBjb25zb2xlLmxvZygnYmJibG9jYXRpb24tLT4nLGxvY2F0aW9uKVxuICAgICAgICAgIC8vbGV0IHVzZXJEYXRhID0gW2xvY2F0aW9uXTtcbiAgICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmNsYXNzUm9vbVdpc2VDaGFydERhdGFcIixkYXRhVGFibGVmb3JDaGFydCk7XG4gICAgICBkYXRhVGFibGVmb3JDaGFydCA9IHRoaXMudW5pcShkYXRhVGFibGVmb3JDaGFydCk7XG4gICAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XG4gIH1cblxuICB1bmlxKGEpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEpKTtcbiAgfVxuXG4gIGFsbFVzZXJDaGFydERhdGEoKXtcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xuICAgIGxldCBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQgPW5ldyBBcnJheSgpO1xuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhICYmIHRoaXMudXNlcnNNZXRhRGF0YSl7XG4gICAgICBsZXQgaW5BY3RpdmV1c2VyTmFtZTogYW55O1xuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xuICAgICAgbGV0IG15SUQ6IGFueTtcbiAgICAgIGxldCBBbGx1c2VyRGV0YWlscyA9bmV3IEFycmF5KCk7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaW5kZXhdKTtcbiAgICAgICAgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0LnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaW5kZXhdKVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJzTWV0YURhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbXlJRCA9IHRoaXMudXNlcnNNZXRhRGF0YVtpXS51c2VySWQ7XG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XG4gICAgICAgIC8vaWYoaW5BY3RpdmV1c2VyTmFtZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJhbGx1c2VyLTEtPj5cIixpbkFjdGl2ZXVzZXJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcbiAgICAgICAgbGV0IG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEgPSBcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZDpteUlELFxuICAgICAgICAgIHVzZXJOYW1lOiBpbkFjdGl2ZXVzZXJOYW1lLFxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXG4gICAgICAgICAgZW5kVGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXG4gICAgICAgICAgdGVybWluYWxJUDpcIlwiLFxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcbiAgICAgICAgICBkdXJhdGlvbjpcIjBcIixcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xuICAgICAgfTtcbiAgICAgICAgLy9BbGx1c2VyRGV0YWlscy5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xuICBcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XG4gICAgICAgICAgdXNlcklkOm15SUQsXG4gICAgICAgICAgdXNlck5hbWU6IGluQWN0aXZldXNlck5hbWUsXG4gICAgICAgICAgc3RhcnRUaW1lOlwiXCIsXG4gICAgICAgICAgZW5kVGltZTpcIlwiLFxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcbiAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6W10sXG4gICAgICAgICAgZHVyYXRpb246MCxcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xuICAgICAgICB9O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiYWxsdXNlci0yLT4+XCIsaW5BY3RpdmV1c2VyTmFtZSk7XG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEpO1xuICAgICAgICBBbGx1c2VyRGV0YWlscy5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBBbGx1c2VyRGV0YWlscy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJhbGx1c2VyLTMtPj5cIixBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSk7XG4gICAgICAgICAgaWYoQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSA9IFwiLS1cIlxuICAgICAgICAgIH1cbiAgICAgICAgICBpZihBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSA9PT0gXCItLVwiKXtcbiAgICAgICAgICAgIC8vQWxsdXNlckRldGFpbHMuc3BsaWNlKGksIDEpOyAvLyAybmQgcGFyYW1ldGVyIG1lYW5zIHJlbW92ZSBvbmUgaXRlbSBvbmx5XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sNTApXG5cbiAgICAgIC8qXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zb2xlLmxvZyhcImFsbHVzZXItMy0+PlwiLEFsbHVzZXJEZXRhaWxzW2ldLnVzZXJOYW1lKTtcbiAgICAgICAgaWYoQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUgPSBcIigtKVwiXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbQWxsdXNlckRldGFpbHNbaV0udXNlck5hbWUsQWxsdXNlckRldGFpbHNbaV0uc3RhcnRUaW1lLEFsbHVzZXJEZXRhaWxzW2ldLmVuZFRpbWVdO1xuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcbiAgICAgIH0qL1xuICAgIH1cbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOkFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydH1cbiAgfVxuICBhbGxSb29tc0RhdGEoKXtcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBkYXRhVGFibGVmb3JDaGFydCA9IFtdO1xuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcbiAgICBhbGxSb29tc0RldGFpbHMgPSBbXTtcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSAmJiB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YSl7XG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcbiAgICAgIGxldCBpbkFjdGl2ZUNsYXNzUm9vbTogYW55O1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYmJiIGFsbFJvb20tLT5cIix0aGlzLnVzZXJDb25zb2xlRGF0YVtpXSlcbiAgICAgICAgbGV0IHJvb21OYW1lID0gdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxMb2NhdGlvbjtcbiAgICAgICAgbGV0IHJvb21JUCA9IHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsSVA7XG5cbiAgICAgICAgaWYocm9vbU5hbWUgPT09IFwiXCIgfHwgcm9vbU5hbWUgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgcm9vbU5hbWUgPSBcIk5vIE5hbWVcIlxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgbG9jYXRpb24gPSByb29tTmFtZSArXCIgLSBcIisgcm9vbUlQO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCdiYmJiUm9vbScsbG9jYXRpb24pXG4gICAgICAgIFxuICAgICAgIC8vIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbElQLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcbiAgICAgICAgbGV0IHVzZXJEYXRhID0gW2xvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XG4gICAgICB9XG4gICAgIFxuICAgICAgbGV0IGluYWN0aXZlUm9vbk5hbWU7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwic2Nob29sVGVybWluYWxEYXRhXCIsdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpO1xuICAgICAgICBcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbiArICcgLSAnICsgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGFbaV0udGVybWluYWxLZXk7XG4gICAgICAgIC8vaW5hY3RpdmVSb29uTmFtZSA9IHRoaXMuc2Nob29sVGVybWluYWxEYXRhW2ldLmxvY2F0aW9uO1xuICAgICAgICBcbiAgICAgICAgbXlDaGFydFJvd0RhdGEgPSB7XG4gICAgICAgICAgdXNlcklkOlwiXCIsXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcbiAgICAgICAgICBzdGFydFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxuICAgICAgICAgIGVuZFRpbWU6bmV3IERhdGUodGhpcy5teUVuZFRpbWUpLFxuICAgICAgICAgIHRlcm1pbmFsSVA6aW5BY3RpdmVDbGFzc1Jvb20sXG4gICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhOltdLFxuICAgICAgICAgIGR1cmF0aW9uOjAsXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxuICAgICAgICAgIHVzZXJTdWJqZWN0czpcIlwiXG4gICAgICAgIH07XG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcbiAgICAgICAgbGV0IG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEgPSBbaW5BY3RpdmVDbGFzc1Jvb20sbmV3IERhdGUodGhpcy5teUVuZFRpbWUpLG5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKV07XG4gICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XG4gICAgICB9XG4gICAgIFxuICAgIH1cbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XG4gIH1cbiAgZGF0YUZvclRhYmxlVmlldyh1c2VyQ29uc29sZU1hdHJpeDogYW55LHJlc291cmNlTWV0YWRhdGFNYXRyaXg6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiQUFBIHVzZXJDb25zb2xlTWF0cml4XCIsdXNlckNvbnNvbGVNYXRyaXgpO1xuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xuICAgIGxldCByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICBsZXQgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IG5ldyBBcnJheSgpO1xuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xuICAgIHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8dXNlckNvbnNvbGVNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcbiAgICAgIGxldCBlbmRUaW1lOiBhbnk7XG4gICAgICBsZXQgZHVyYXRpb246IGFueTtcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XG4gICAgICBsZXQgc3ViamVjdDogYW55O1xuICAgICAgbGV0IGdyYWRlOiBhbnk7XG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xuICAgICAgbGV0IEFzc2VzdERldGFpbDogYW55O1xuICAgICAgbGV0IHJlc291cmNlVHlwZTogYW55O1xuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XG4gICAgICBsZXQgbG9jYXRpb246IGFueTtcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XG4gICAgICBcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uOiBhbnk7XG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvckV4Y2VsID0gbmV3IEFycmF5KCk7XG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcbiAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW107XG4gICAgICB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBbXTtcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxuICBcblxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XG4gICAgICB0ZWFjaGVyTmFtZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnVzZXJOYW1lO1xuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3RhcnQgVGltZSAgYW5kIEVuZFRpbWUgXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xuICAgICAgICBzdGFydFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xuICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xuICAgICAgfVxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgZHVyYXRpb25cbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBUZXJtaW5hbCBsb2FjdGlvbiBhbmQgdGVybWluYWwgSVBcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udGVybWluYWxMb2NhdGlvbjtcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XG4gICAgIFxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHNEdXJhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlRHVyYXRpb25Gcm9tQ29uc29sZTtcblxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN1YmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB0ZWFjaGluZ3BvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJlc291cmNlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbdGVhY2hlck5hbWUsdGVhY2hlclN1YmplY3QsY3VycmVudERhdGUsc3RhcnRUaW1lLGVuZFRpbWUsZHVyYXRpb24scm9vbURldGFpbCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCxBc3Nlc3REZXRhaWxdO1xuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XG4gICAgICAgXG4gICAgICB9ZWxzZXtcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YUlEc1trXSA9PT0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5yZXNvdXNlSUQpIFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAvLyBzYXR5YWppdFxuICAgICAgICAgICAgICBzdWJqZWN0ID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5zdWJqZWN0O1xuICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0uZ3JhZGU7XG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnRlYWNoaW5ncG9pbnQ7XG4gICAgICAgICAgICAgIGlmKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUudG9Mb3dlckNhc2UoKSA9PT0gJ3doaXRlYm9hcmQnIHx8IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUudG9Mb3dlckNhc2UoKSA9PT0gJ3F1ZXN0aW9uJyl7XG4gICAgICAgICAgICAgICAgLy9Bc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArICcgOiAnICsgcmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uW2tdICsgJyBzZWMnO1xuXG4gICAgICAgICAgICAgICAgQXNzZXN0RGV0YWlsID0gdGhpcy5nZXREaXNwbGF5dHlwZVZhbHVlKHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSkgKyAnIDogJyArIHRoaXMuY29udmVydFNlY29uZHMocmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uW2tdKTtcblxuICAgICAgICAgICAgICAgIC8vY29udmVydFNlY29uZHNcblxuICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAvL0Fzc2VzdERldGFpbCA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUpICsgXCIgOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUgKyAnIDogJyArIHJlc291cmNlTWV0YWRhdGFJRHNEdXJhdGlvbltrXSArICcgc2VjJztcblxuICAgICAgICAgICAgICAgIEFzc2VzdERldGFpbCA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUpICsgXCIgOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUgKyAnIDogJyArIHRoaXMuY29udmVydFNlY29uZHMocmVzb3VyY2VNZXRhZGF0YUlEc0R1cmF0aW9uW2tdKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAvL0Fzc2VzdERldGFpbCA9IHRoaXMuZ2V0RGlzcGxheXR5cGVWYWx1ZShyZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUpICsgXCIgOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUgKyAnIDogJyArIHJlc291cmNlTWV0YWRhdGFJRHNEdXJhdGlvbltrXTtcblxuICAgICAgICAgICAgICByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IFt0ZWFjaGVyTmFtZSx0ZWFjaGVyU3ViamVjdCxjdXJyZW50RGF0ZSxzdGFydFRpbWUsZW5kVGltZSxkdXJhdGlvbixyb29tRGV0YWlsLHN1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XG4gICAgICAgICAgICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydC5wdXNoKHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0KTtcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0ZWFjaGVyU3ViamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgZW5kVGltZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VNYXRyaXhGb3JUYWJsZUNoYXJ0O1xuICB9XG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gbmV3IEFycmF5KCk7XG4gICAgICAgICBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBbXTtcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IFtdO1xuICBcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcbiAgICAgIGxldCBlbmRUaW1lOiBhbnk7XG4gICAgICBsZXQgZHVyYXRpb246IGFueTtcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XG4gICAgICBsZXQgc3ViamVjdDogYW55O1xuICAgICAgbGV0IGdyYWRlOiBhbnk7XG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xuICAgICAgbGV0IEFzc2VzdERldGFpbDogYW55O1xuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xuICAgICAgbGV0IHRlYWNoZXJOYW1lOiBhbnk7XG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xuICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRHM6IGFueTtcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzZHVyYXRpb246IGFueTtcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlclN1YmplY3RzO1xuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdGFydCBUaW1lICBhbmQgRW5kVGltZVxuICAgICAgaWYgKCh1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lICE9IHVuZGVmaW5lZCAmJiB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSB1bmRlZmluZWQmJnVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5lbmRUaW1lICE9IFwiXCIpKSB7XG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xuICAgICAgICBlbmRUaW1lID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xuICAgICAgICBjdXJyZW50RGF0ZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RGF0ZSgpICsgJy8nICsgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZS5nZXRNb250aCgpICsgJy8nICsgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xuICAgICAgfVxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgZHVyYXRpb25cbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZHVyYXRpb24pO1xuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS50ZXJtaW5hbExvY2F0aW9uO1xuICAgICAgdGVybWluYWxJUCA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS50ZXJtaW5hbElQO1xuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XG4gICAgICByZXNvdXJjZU1ldGFkYXRhSURzID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHNkdXJhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5yZXNvdXJjZUR1cmF0aW9uRnJvbUNvbnNvbGU7XG5cbiAgICAgIGRldGFpbGVkVmlld19Vc2VyRGF0YU1hdHJpeCA9ICBbdGVhY2hlck5hbWUsc3RhcnRUaW1lLHRlYWNoZXJTdWJqZWN0LGVuZFRpbWUscm9vbURldGFpbF1cbiAgICAgIFxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZ3JhZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIEFzc2VzdERldGFpbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcbiAgICAgICAgLy8gZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeC5wdXNoKHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0KTtcbiAgICAgIH1lbHNle1xuICAgICAgICAvL3NhdHlhaml0XG4gICAgICAgICAvL3Jlc291cmNlTWV0YWRhdGFNYXRyaXggPSBbcmVzb3VzZUlELHN1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LHR5cGUsdGl0bGVdXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHNba10gPT09IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0ucmVzb3VzZUlEKSB7XG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XG4gICAgICAgICAgICAgIGdyYWRlID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS5ncmFkZTtcbiAgICAgICAgICAgICAgY2hhcHRlciA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0uY2hhcHRlcjtcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcbiAgICAgICAgICAgICAgaWYocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZS50b0xvd2VyQ2FzZSgpID09PSAnd2hpdGVib2FyZCcgfHwgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZS50b0xvd2VyQ2FzZSgpID09PSAncXVlc3Rpb24nKXtcbiAgICAgICAgICAgICAgICAvL0Fzc2VzdERldGFpbCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFJRHNkdXJhdGlvbltrXSArICcgc2VjJztcbiAgICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnR5cGUgKyBcIjogXCIgKyB0aGlzLmNvbnZlcnRTZWNvbmRzKHJlc291cmNlTWV0YWRhdGFJRHNkdXJhdGlvbltrXSk7XG4gICAgICAgICAgICAgICAgLy9jb252ZXJ0U2Vjb25kc1xuICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAvL0Fzc2VzdERldGFpbCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGUgKyBcIjogXCIgKyByZXNvdXJjZU1ldGFkYXRhSURzZHVyYXRpb25ba10gKyAnIHNlYyc7XG4gICAgICAgICAgICAgICAgQXNzZXN0RGV0YWlsID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlICsgXCI6IFwiICsgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50aXRsZSArIFwiOiBcIiArIHRoaXMuY29udmVydFNlY29uZHMocmVzb3VyY2VNZXRhZGF0YUlEc2R1cmF0aW9uW2tdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3N1YmplY3QsZ3JhZGUsY2hhcHRlcix0ZWFjaGluZ3BvaW50LEFzc2VzdERldGFpbF07XG4gICAgICAgICAgICAgIGRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXgucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9ICAgXG4gICAgICBcbiAgICByZXR1cm4ge3VzZXJEZXRhaWxzOmRldGFpbGVkVmlld19Vc2VyRGF0YU1hdHJpeCxyZXNvdXJjZURldGFpbHM6ZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeH07XG4gIH1cbiAgIC8vIFRvIEdFVCBESVNQTEFZIFRZUEVcbiAgIGdldERpc3BsYXl0eXBlVmFsdWUoa2V5OiBhbnkpIHtcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImFzc2V0X21lZGlhXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxuICAgICAgICBkaXNwbGF5OiBcIlByaW50XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwicXVpelwiLFxuICAgICAgICBkaXNwbGF5OiBcIlF1aXpcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJxdWVzdGlvblwiLFxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxuICAgICAgICBkaXNwbGF5OiBcIkNoYXB0ZXJcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ0cFwiLFxuICAgICAgICBkaXNwbGF5OiBcIlRvcGljXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwid2hpdGVib2FyZFwiLFxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgZGlzcGxheTogXCJXaWRnZXRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYXNzZXRfbWVkaWFcIixcbiAgICAgICAgZGlzcGxheTogXCJjTWVkaWFcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjYXNzZXRfcHJpbnRcIixcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxuICAgICAgICBkaXNwbGF5OiBcImNRdWl6XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiY3F1ZXN0aW9uXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1ZXN0aW9uXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiaW1hZ2VcIixcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiVmlkZW9cIlxuICAgICAgfSxcblxuICAgIF07XG4gICAgbGV0IGRpc3BsYXlWYWx1ZSA9IGtleTtcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZS50eXBlID09PSBrZXkpIHtcbiAgICAgICAgZGlzcGxheVZhbHVlID0gdmFsdWUuZGlzcGxheTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlO1xuXG4gIH1cblxuICBjb252ZXJ0U2Vjb25kcyhzZWNvbmRzKSB7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW51dGVzfW0gJHtyZW1haW5pbmdTZWNvbmRzfXNgO1xuICB9XG59XG4iXX0=
@@ -114,7 +114,7 @@ TableviewComponent.decorators = [
114
114
  { type: Component, args: [{
115
115
  selector: 'lib-tableview',
116
116
  template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
117
- styles: [".pd-tableViewDiv{width:100%;height:484px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
117
+ styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
118
118
  },] }
119
119
  ];
120
120
  TableviewComponent.ctorParameters = () => [
@@ -363,12 +363,15 @@ class PrincipalDashboardLibV2Service {
363
363
  let dataTableforChart = new Array();
364
364
  dataTableforChart = [];
365
365
  if (this.userConsoleData) {
366
+ console.log("chartDataUserWiseNew-->>", this.userConsoleData);
366
367
  if (this.userConsoleData.length > 0) {
367
368
  for (let i = 0; i < this.userConsoleData.length; i++) {
368
- console.log("chartDataUserWiseNew-->>", this.userConsoleData[i].userName);
369
369
  if (this.userConsoleData[i].userName === undefined) {
370
370
  this.userConsoleData[i].userName = "-";
371
371
  }
372
+ if (this.userConsoleData[i].userName === "-" || this.userConsoleData[i].userName === "--") {
373
+ this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only
374
+ }
372
375
  let userData = [this.userConsoleData[i].userName, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
373
376
  dataTableforChart.push(userData);
374
377
  //console.log("chartDataUserWiseNewNew-->>",userData)
@@ -471,6 +474,9 @@ class PrincipalDashboardLibV2Service {
471
474
  if (AlluserDetails[i].userName === undefined) {
472
475
  AlluserDetails[i].userName = "--";
473
476
  }
477
+ if (AlluserDetails[i].userName === "--") {
478
+ //AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only
479
+ }
474
480
  let userData = [AlluserDetails[i].userName, AlluserDetails[i].startTime, AlluserDetails[i].endTime];
475
481
  dataTableforChart.push(userData);
476
482
  }
@@ -808,8 +814,8 @@ class PrincipalDashboardLibV2Component {
808
814
  PrincipalDashboardLibV2Component.decorators = [
809
815
  { type: Component, args: [{
810
816
  selector: 'lib-principal-dashboard-lib-v2',
811
- template: "<div id=\"reprtModule\">\n <div id=\"pd-mainDiv\" class=\"pd-mainContainer\">\n <lib-header [data]=\"data\" (userSelectedDate)=\"onUserSelectDate($event)\">\n </lib-header>\n <lib-chartheader></lib-chartheader>\n \n <div id=\"pd-preloader\" class=\"pd-preloaderDiv\" *ngIf=\"responseStatus !== 'true' && !data\">\n {{messageForUser}}\n </div>\n <lib-chartview *ngIf=\"data\" [data]=\"data\"></lib-chartview>\n <lib-tableview *ngIf=\"data\" [data]=\"data\"></lib-tableview>\n <lib-detailedview *ngIf=\"data\" [data]=\"data\"></lib-detailedview>\n \n </div>\n</div>\n ",
812
- styles: [".pd-mainContainer{width:100%;height:100%}.pd-mainContainer .pd-preloaderDiv{text-align:center;line-height:27;position:absolute;width:100%;height:87%;top:33px;z-index:2}.bs-datepicker-head{background-color:#000!important}"]
817
+ template: "<div id=\"reprtModule\">\n <div id=\"pd-mainDiv\" class=\"pd-mainContainer\">\n <lib-header [data]=\"data\" (userSelectedDate)=\"onUserSelectDate($event)\">\n </lib-header>\n <lib-chartheader></lib-chartheader>\n \n <div id=\"pd-preloader\" class=\"pd-preloaderDiv\" *ngIf=\"responseStatus !== 'true' && !data\">\n {{messageForUser}} \n </div>\n <lib-chartview *ngIf=\"data\" [data]=\"data\"></lib-chartview>\n <lib-tableview *ngIf=\"data\" [data]=\"data\"></lib-tableview>\n <lib-detailedview *ngIf=\"data\" [data]=\"data\"></lib-detailedview>\n \n </div>\n</div>\n ",
818
+ styles: [".pd-mainContainer{width:100%;height:100%}.pd-mainContainer .pd-preloaderDiv{text-align:center;line-height:27;position:absolute;width:100%;height:87%;z-index:2}.bs-datepicker-head{background-color:#000!important}"]
813
819
  },] }
814
820
  ];
815
821
  PrincipalDashboardLibV2Component.ctorParameters = () => [];
@@ -829,7 +835,7 @@ class ChartheaderComponent {
829
835
  this.isChartView = true;
830
836
  }
831
837
  ngOnInit() {
832
- this.libVersion = "0.0.19";
838
+ this.libVersion = "0.0.21";
833
839
  // this.myIcon = document.getElementById('myIconImg');
834
840
  // this.changeChatType()
835
841
  }
@@ -2311,7 +2317,7 @@ TableviewComponent.decorators = [
2311
2317
  { type: Component, args: [{
2312
2318
  selector: 'lib-tableview',
2313
2319
  template: "\n <div id=\"tableViewDiv\" class=\"pd-tableViewDiv\">\n \n <table class=\"table table-bordered\" id=\"tableRow\">\n <thead class=\"table-head\">\n <tr class=\"table-headerRow\">\n <th scope=\"col\">Teacher Name</th>\n <th scope=\"col\">Subjects</th>\n <th scope=\"col\">Date</th>\n <th scope=\"col\">Start Time</th>\n <th scope=\"col\">End Time</th>\n <th scope=\"col\">Duration (mins)</th>\n <th scope=\"col\">Room</th>\n <th scope=\"col\">Subject</th>\n <th scope=\"col\">Topic of Class</th>\n <th scope=\"col\">Chapter Name</th>\n <th scope=\"col\">Topic Name</th>\n <th scope=\"col\">Assets Details</th>\n </tr>\n </thead>\n <tbody id=\"tblBody\">\n \n </tbody>\n </table>\n </div>\n \n",
2314
- styles: [".pd-tableViewDiv{width:100%;height:484px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
2320
+ styles: [".pd-tableViewDiv{width:100%;height:744px;overflow:scroll}.pd-tableViewDiv #tableRow{font-size:small;width:100%;margin-left:24px;margin-top:10px}.pd-tableViewDiv .table-headerRow{font-weight:700}.pd-tableViewDiv .table-head{position:sticky;top:0;background:#fff}"]
2315
2321
  },] }
2316
2322
  ];
2317
2323
  TableviewComponent.ctorParameters = () => [