@spicainternational/ngx-sds-components 7.1.0-beta.5 → 7.1.0-beta.7
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.
- package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.mjs +26 -0
- package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.mjs +45 -0
- package/esm2020/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.mjs +23 -0
- package/esm2020/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.mjs +37 -39
- package/esm2020/src/lib/navigation/navigation.module.mjs +18 -6
- package/esm2020/src/lib/navigation/public-api.mjs +2 -1
- package/esm2020/src/lib/timeline/components/timeline.component.mjs +12 -3
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs +137 -50
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs +11 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs +137 -49
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs +11 -2
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/navigation/navigation-user-profile/components/user-profile-action-button/user-profile-action-button.component.d.ts +11 -0
- package/src/lib/navigation/navigation-user-profile/components/user-profile-selector/user-profile-selector.component.d.ts +17 -0
- package/src/lib/navigation/navigation-user-profile/components/user-profile-tile/user-profile-tile.component.d.ts +9 -0
- package/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.d.ts +6 -8
- package/src/lib/navigation/navigation.module.d.ts +16 -12
- package/src/lib/navigation/public-api.d.ts +1 -0
- package/src/lib/timeline/components/timeline.component.d.ts +8 -1
|
@@ -100,6 +100,13 @@ export class SdsTimelineComponent {
|
|
|
100
100
|
* @memberof SdsTimelineComponent
|
|
101
101
|
*/
|
|
102
102
|
this.showDayLabels = false;
|
|
103
|
+
/**
|
|
104
|
+
* Whether to show timeline. Useful for hiding the timeline when we only need header.
|
|
105
|
+
*
|
|
106
|
+
* @type {boolean}
|
|
107
|
+
* @memberof SdsTimelineComponent
|
|
108
|
+
*/
|
|
109
|
+
this.showTimeline = true;
|
|
103
110
|
/**
|
|
104
111
|
* The height of the timeline. Default is 2rem.
|
|
105
112
|
*
|
|
@@ -270,10 +277,10 @@ export class SdsTimelineComponent {
|
|
|
270
277
|
}
|
|
271
278
|
}
|
|
272
279
|
SdsTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
273
|
-
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n {{label.label}}\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
280
|
+
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n {{label.label}}\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showTimeline\"\r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
274
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
275
282
|
type: Component,
|
|
276
|
-
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n {{label.label}}\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
283
|
+
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : 'default'\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n {{label.label}}\r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showTimeline\"\r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
277
284
|
}], ctorParameters: function () { return []; }, propDecorators: { start: [{
|
|
278
285
|
type: Input
|
|
279
286
|
}], end: [{
|
|
@@ -308,6 +315,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
308
315
|
type: Input
|
|
309
316
|
}], dayLabelClass: [{
|
|
310
317
|
type: Input
|
|
318
|
+
}], showTimeline: [{
|
|
319
|
+
type: Input
|
|
311
320
|
}], hourTickClass: [{
|
|
312
321
|
type: Input
|
|
313
322
|
}], timelineHeight: [{
|
|
@@ -334,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
334
343
|
type: HostListener,
|
|
335
344
|
args: ['window:touchend', ['$event']]
|
|
336
345
|
}] } });
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBZWxFLE1BQU0sT0FBTyxvQkFBb0I7SUE2TDdCO1FBNUxBOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUd2RTs7Ozs7V0FLRztRQUNNLGtCQUFhLEdBQTBCLFFBQVEsQ0FBQztRQUV6RDs7Ozs7V0FLRztRQUNNLHVCQUFrQixHQUEwQixNQUFNLENBQUM7UUFHNUQ7Ozs7O1dBS0c7UUFDTSxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUN6QixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFD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dEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBcUJtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMEZoQyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVc1QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXJDLFNBQVM7c0JBRmYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaW1lbGluZVRpY2tGcmVxdWVuY3kgfSBmcm9tICcuLi90eXBlcy90aW1lbGluZS50eXBlcyc7XHJcbmltcG9ydCB7IFNkc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgVGltZWxpbmVJbnRlcnZhbExhYmVsLFxyXG4gICAgVGltZWxpbmVJdGVtLFxyXG4gICAgVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uLFxyXG4gICAgVGltZWxpbmVQb2ludEluVGltZUl0ZW0sXHJcbiAgICBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbixcclxuICAgIFRpbWVsaW5lVGljayxcclxufSBmcm9tICcuLi9tb2RlbHMvdGltZWxpbmUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy10aW1lbGluZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc1RpbWVsaW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc3RhcnQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHN0YXJ0OiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBlbmQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcGVyaW9kIGJhc2VkIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgdGltZWxpbmUuIFNwZWNpZnkgZGF0YSBpZiB5b3UgbmVlZCBcclxuICAgICAqIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lSXRlbVtdfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGl0ZW1zOiBUaW1lbGluZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXRlbXMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSB0aW1lbGluZSBhdCBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUuXHJcbiAgICAgKiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgYWRkaXRpb25hbCBkYXRhIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVQb2ludEluVGltZUl0ZW1bXX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgcG9pbi1pbi10aW1lIGl0ZW1zLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZnJlcXVlbmN5IG9mIHRoZSB0aWNrcyBvbiB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lVGlja0ZyZXF1ZW5jeX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aWNrRnJlcXVlbmN5OiBUaW1lbGluZVRpY2tGcmVxdWVuY3kgPSAnaG91cmx5JztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBmcmVxdWVuY3kgb2YgdGhlIGhvdXIgbGFiZWxzIG9uIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhvdXJMYWJlbEZyZXF1ZW5jeTogVGltZWxpbmVUaWNrRnJlcXVlbmN5ID0gJzNocnMnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIHRpbWVsaW5lLiBJbiBwZXJjZW50LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgem9vbVBlcmNlbnQ6IG51bWJlciA9IDEwMDtcclxuICAgIEBPdXRwdXQoKSB6b29tUGVyY2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbCBvZmZzZXQgb2YgdGhlIHZpZXdwb3J0IGluIHBlcmNlbnQuIFRoaXMgaXMgdXNlZCBpbiBzY2VuYXJpb3MgXHJcbiAgICAgKiB3aXRoIG11bHRpcGxlIGRheXMgd2hlbiB5b3Ugd2FudCB0byBzaG93IG5vbi1maXJzdCBkYXkgYXMgZGVmdWx0LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdmlld09mZnNldFBlcmNlbnQ6IG51bWJlciA9IDA7XHJcbiAgICBAT3V0cHV0KCkgdmlld09mZnNldFBlcmNlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBtYXhab29tUGVyY2VudDogbnVtYmVyID0gNTAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IGhvdXIgbGFiZWxzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dIb3VyTGFiZWxzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgaG91ciBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBob3VyTGFiZWxDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBkYXkgbGFiZWxzLiBcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzaG93RGF5TGFiZWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRheSBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBkYXlMYWJlbENsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIHRpY2tzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaG91clRpY2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIHRpbWVsaW5lLiBEZWZhdWx0IGlzIDJyZW0uXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aW1lbGluZUhlaWdodDogc3RyaW5nID0gJzJyZW0nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBlbmFibGUgem9vbSBhbmQgZHJhZyBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZVpvb21BbmREcmFnOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWJlciBvZiBtaW51dGVzIGFkZGVkIHRvIHN0YXJ0IGFuZCBzdG9wIHRvIGZpdCB0aGUgZGF0YSBvbiB0aGUgZWRnZXNcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIG9mZlNldE1pbnV0ZXM6IG51bWJlciA9IDE1O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxvY2FsZXMgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhzdHJpbmcgfCBBcnJheTxzdHJpbmc+KX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBsb2NhbGVzPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcclxuXHJcbiAgICAvLyBwcm90ZWN0ZWRcclxuICAgIGhvdXJUaWNrczogVGltZWxpbmVUaWNrW10gPSBbXTtcclxuICAgIGhvdXJMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcbiAgICBkYXlMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZWxpbmVTZXJ2aWNlOiBTZHNUaW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgIHRoaXMuc3RhcnQsXHJcbiAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25JdGVtczogVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25Qb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbltdID0gW107XHJcblxyXG4gICAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpbml0aWFsRHJhZ1ggPSAwO1xyXG5cclxuICAgIHByaXZhdGUgdmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSAwO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0JywgeyBzdGF0aWM6IHRydWUgfSkgX3ZpZXdwb3J0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ICYmIHRoaXMuZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzdGFydCddIHx8IGNoYW5nZXNbJ2VuZCddIHx8IGNoYW5nZXNbJ29mZlNldE1pbnV0ZXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLl90aW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1sncG9pbnRJblRpbWVJdGVtcyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9ICh0aGlzLnpvb21QZXJjZW50IC0gMTAwKSAvIC0yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Nob3dEYXlMYWJlbHMnXSB8fCBjaGFuZ2VzWydzaG93SG91ckxhYmVscyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgIH0gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgLy8jcmVnaW9uIG1vdXNlIHdoZWVsIHpvb21cclxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguc2lnbihldmVudC5kZWx0YVkpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgodGhpcy56b29tUGVyY2VudCArIC1kZWx0YSAqIDIwLCAxMDApLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhab29tUGVyY2VudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQgLSB0aGlzLnpvb21QZXJjZW50O1xyXG4gICAgICAgICAgICB0aGlzLnpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGdldCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBvbiB0aGUgdmlld3BvcnQgc28gd2UgY2FuIHpvb20gaW4gaW50byB0aGlzIHBvc2l0aW9uXHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgICAgY29uc3QgY3Vyc29yUmVsYXRpdmVQb3NpdGlvbiA9IHggLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXHJcbiAgICBcclxuICAgIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGN1cnJlbnRYKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtb3ZlRWxlbWVudChjdXJyZW50WDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdwb3J0ICYmIHRoaXMuX3ZpZXdwb3J0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZkluUGVyY2VudCA9IChkaWZmIC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpICogMTAwO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgKyBkaWZmSW5QZXJjZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgcHJpdmF0ZSBjb25zdHJhaW5PZmZzZXQobmV3T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHsgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnpvb21QZXJjZW50ICsgbmV3T2Zmc2V0IDwgMTAwKSB7XHJcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLm1pbigwLCBuZXdPZmZzZXQpO1xyXG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gbmV3T2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50Q2hhbmdlLmVtaXQodGhpcy52aWV3T2Zmc2V0UGVyY2VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvdXJUaWNrcyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRIb3VyVGlja3ModGhpcy50aWNrRnJlcXVlbmN5KTtcclxuICAgICAgICB0aGlzLmRheUxhYmVscyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXREYXlMYWJlbHModGhpcy5sb2NhbGVzKTtcclxuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvbkl0ZW1zID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKGl0ZW0uc3RhcnQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2UgPSBgJHtzdGFydFRpbWV9IC0gJHtlbmRUaW1lfWA7XHJcbiAgICBcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uc3RhcnQpLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRXaWR0aEZyb21UaW1lKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lbmRcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVJhbmdlLFxyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgIHRvcDogaXRlbS50b3AgPz8gJzUwJScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ID8/ICc2MCUnLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXMgPSB0aGlzLnBvaW50SW5UaW1lSXRlbXMubWFwKChpdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uZGF0ZSksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVBvaW50U3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgdG9wOiBpdGVtLnRvcCA/PyAnMjAlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGggPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRQb2ludEluVGltZUl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48ZGl2IFxyXG4gICAgI3ZpZXdwb3J0XHJcbiAgICBjbGFzcz1cInNkcy10aW1lbGluZS12aWV3cG9ydFwiXHJcbiAgICAod2hlZWwpPVwib25TY3JvbGwoJGV2ZW50KVwiXHJcblxyXG4gICAgKG1vdXNlZG93bik9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgPlxyXG5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiXHJcbiAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJ2aWV3T2Zmc2V0UGVyY2VudFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiem9vbVBlcmNlbnRcIlxyXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiaXNEcmFnZ2luZyA/ICdldy1yZXNpemUnIDogJ2RlZmF1bHQnXCJcclxuICAgICAgICA+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RGF5TGFiZWxzXCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWRheS1oZWFkZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgZGF5TGFiZWxzXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLWRheS1sYWJlbFwiICBcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRheUxhYmVsQ2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImxhYmVsLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwibGFiZWwud2lkdGhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsLmxhYmVsfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0hvdXJMYWJlbHNcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaG91ci1oZWFkZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgaG91ckxhYmVscztcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtaG91ci1sYWJlbFwiICBcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhvdXJMYWJlbENsYXNzID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJsYWJlbC54XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwiMS4yXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbGVmdCc6ICdjYWxjKCcgKyBsYWJlbC54ICsgJyUgLSAwLjZyZW0pJ31cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHt7bGFiZWwubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZSBmbGV4LWdyb3ctMVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwidGltZWxpbmVIZWlnaHRcIlxyXG4gICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRpY2sgb2YgaG91clRpY2tzXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXRpY2tcIiAgXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJob3VyVGlja0NsYXNzID8/IG51bGxcIlx0XHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ0aWNrLnggPT0gMTAwID8geydsZWZ0JzogJ2NhbGMoJyArIHRpY2sueCArJyUgLSAxcHgpJ30gOiB7J2xlZnQnOiAnY2FsYygnICsgdGljay54ICsgJyUgLSAwLjVweCknfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJlc2VudGF0aW9uSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzcyA/PyBudWxsXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnd2lkdGgnOiAnbWF4KCcgKyBpdGVtLndpZHRoICsnJSwgMXB4KScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ3RvcCc6ICdjYWxjKCcgKyBpdGVtLnRvcCArICcgLSBtYXgoY2FsYygnICsgaXRlbS5oZWlnaHQgKycvMiksIDFweCkpJywgXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cIml0ZW0ueFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIml0ZW0uaGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaXRlbS5iYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmVzZW50YXRpb25Qb2ludEluVGltZUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXBvaW50LWluLXRpbWUtaXRlbS1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiXHRcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaXRlbS5oZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIml0ZW0ud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICd0b3AnOiAnY2FsYygnICsgaXRlbS50b3AgKyAnIC0gbWF4KGNhbGMoJyArIGl0ZW0uaGVpZ2h0ICsnLzIpLCAxcHgpKScsIFxyXG4gICAgICAgICAgICAgICAgICAgICdsZWZ0JzogJ2NhbGMoJyArIGl0ZW0ueCArICclIC0gbWF4KCBjYWxjKCcgKyBpdGVtLndpZHRoICsnLzIpLCAxcHgpKScsXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaXRlbS5iYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9pbnRJblRpbWVUZW1wbGF0ZSA/IHBvaW50SW5UaW1lVGVtcGxhdGUgOiBkZWZhdWx0UG9pbnRJblRpbWVJdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBZWxFLE1BQU0sT0FBTyxvQkFBb0I7SUFxTTdCO1FBcE1BOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUd2RTs7Ozs7V0FLRztRQUNNLGtCQUFhLEdBQTBCLFFBQVEsQ0FBQztRQUV6RDs7Ozs7V0FLRztRQUNNLHVCQUFrQixHQUEwQixNQUFNLENBQUM7UUFHNUQ7Ozs7O1dBS0c7UUFDTSxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUN6QixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFD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SztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBcUJtQyxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMEZoQyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVc1QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWXJDLFNBQVM7c0JBRmYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaW1lbGluZVRpY2tGcmVxdWVuY3kgfSBmcm9tICcuLi90eXBlcy90aW1lbGluZS50eXBlcyc7XHJcbmltcG9ydCB7IFNkc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgVGltZWxpbmVJbnRlcnZhbExhYmVsLFxyXG4gICAgVGltZWxpbmVJdGVtLFxyXG4gICAgVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uLFxyXG4gICAgVGltZWxpbmVQb2ludEluVGltZUl0ZW0sXHJcbiAgICBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbixcclxuICAgIFRpbWVsaW5lVGljayxcclxufSBmcm9tICcuLi9tb2RlbHMvdGltZWxpbmUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy10aW1lbGluZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc1RpbWVsaW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc3RhcnQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHN0YXJ0OiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBlbmQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcGVyaW9kIGJhc2VkIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgdGltZWxpbmUuIFNwZWNpZnkgZGF0YSBpZiB5b3UgbmVlZCBcclxuICAgICAqIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lSXRlbVtdfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGl0ZW1zOiBUaW1lbGluZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXRlbXMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSB0aW1lbGluZSBhdCBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUuXHJcbiAgICAgKiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgYWRkaXRpb25hbCBkYXRhIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVQb2ludEluVGltZUl0ZW1bXX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgcG9pbi1pbi10aW1lIGl0ZW1zLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZnJlcXVlbmN5IG9mIHRoZSB0aWNrcyBvbiB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lVGlja0ZyZXF1ZW5jeX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aWNrRnJlcXVlbmN5OiBUaW1lbGluZVRpY2tGcmVxdWVuY3kgPSAnaG91cmx5JztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBmcmVxdWVuY3kgb2YgdGhlIGhvdXIgbGFiZWxzIG9uIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhvdXJMYWJlbEZyZXF1ZW5jeTogVGltZWxpbmVUaWNrRnJlcXVlbmN5ID0gJzNocnMnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIHRpbWVsaW5lLiBJbiBwZXJjZW50LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgem9vbVBlcmNlbnQ6IG51bWJlciA9IDEwMDtcclxuICAgIEBPdXRwdXQoKSB6b29tUGVyY2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbCBvZmZzZXQgb2YgdGhlIHZpZXdwb3J0IGluIHBlcmNlbnQuIFRoaXMgaXMgdXNlZCBpbiBzY2VuYXJpb3MgXHJcbiAgICAgKiB3aXRoIG11bHRpcGxlIGRheXMgd2hlbiB5b3Ugd2FudCB0byBzaG93IG5vbi1maXJzdCBkYXkgYXMgZGVmdWx0LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdmlld09mZnNldFBlcmNlbnQ6IG51bWJlciA9IDA7XHJcbiAgICBAT3V0cHV0KCkgdmlld09mZnNldFBlcmNlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBtYXhab29tUGVyY2VudDogbnVtYmVyID0gNTAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IGhvdXIgbGFiZWxzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dIb3VyTGFiZWxzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgaG91ciBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBob3VyTGFiZWxDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBkYXkgbGFiZWxzLiBcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzaG93RGF5TGFiZWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRheSBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBkYXlMYWJlbENsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IHRpbWVsaW5lLiBVc2VmdWwgZm9yIGhpZGluZyB0aGUgdGltZWxpbmUgd2hlbiB3ZSBvbmx5IG5lZWQgaGVhZGVyLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dUaW1lbGluZTogYm9vbGVhbiA9IHRydWU7ICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIHRpY2tzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaG91clRpY2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIHRpbWVsaW5lLiBEZWZhdWx0IGlzIDJyZW0uXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aW1lbGluZUhlaWdodDogc3RyaW5nID0gJzJyZW0nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBlbmFibGUgem9vbSBhbmQgZHJhZyBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZVpvb21BbmREcmFnOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWJlciBvZiBtaW51dGVzIGFkZGVkIHRvIHN0YXJ0IGFuZCBzdG9wIHRvIGZpdCB0aGUgZGF0YSBvbiB0aGUgZWRnZXNcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIG9mZlNldE1pbnV0ZXM6IG51bWJlciA9IDE1O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxvY2FsZXMgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhzdHJpbmcgfCBBcnJheTxzdHJpbmc+KX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBsb2NhbGVzPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcclxuXHJcbiAgICAvLyBwcm90ZWN0ZWRcclxuICAgIGhvdXJUaWNrczogVGltZWxpbmVUaWNrW10gPSBbXTtcclxuICAgIGhvdXJMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcbiAgICBkYXlMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZWxpbmVTZXJ2aWNlOiBTZHNUaW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgIHRoaXMuc3RhcnQsXHJcbiAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25JdGVtczogVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25Qb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbltdID0gW107XHJcblxyXG4gICAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpbml0aWFsRHJhZ1ggPSAwO1xyXG5cclxuICAgIHByaXZhdGUgdmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSAwO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0JywgeyBzdGF0aWM6IHRydWUgfSkgX3ZpZXdwb3J0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ICYmIHRoaXMuZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzdGFydCddIHx8IGNoYW5nZXNbJ2VuZCddIHx8IGNoYW5nZXNbJ29mZlNldE1pbnV0ZXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLl90aW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1sncG9pbnRJblRpbWVJdGVtcyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9ICh0aGlzLnpvb21QZXJjZW50IC0gMTAwKSAvIC0yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Nob3dEYXlMYWJlbHMnXSB8fCBjaGFuZ2VzWydzaG93SG91ckxhYmVscyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgIH0gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgLy8jcmVnaW9uIG1vdXNlIHdoZWVsIHpvb21cclxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguc2lnbihldmVudC5kZWx0YVkpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgodGhpcy56b29tUGVyY2VudCArIC1kZWx0YSAqIDIwLCAxMDApLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhab29tUGVyY2VudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQgLSB0aGlzLnpvb21QZXJjZW50O1xyXG4gICAgICAgICAgICB0aGlzLnpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGdldCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBvbiB0aGUgdmlld3BvcnQgc28gd2UgY2FuIHpvb20gaW4gaW50byB0aGlzIHBvc2l0aW9uXHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgICAgY29uc3QgY3Vyc29yUmVsYXRpdmVQb3NpdGlvbiA9IHggLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXHJcbiAgICBcclxuICAgIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGN1cnJlbnRYKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtb3ZlRWxlbWVudChjdXJyZW50WDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdwb3J0ICYmIHRoaXMuX3ZpZXdwb3J0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZkluUGVyY2VudCA9IChkaWZmIC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpICogMTAwO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgKyBkaWZmSW5QZXJjZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgcHJpdmF0ZSBjb25zdHJhaW5PZmZzZXQobmV3T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHsgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnpvb21QZXJjZW50ICsgbmV3T2Zmc2V0IDwgMTAwKSB7XHJcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLm1pbigwLCBuZXdPZmZzZXQpO1xyXG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gbmV3T2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50Q2hhbmdlLmVtaXQodGhpcy52aWV3T2Zmc2V0UGVyY2VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvdXJUaWNrcyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRIb3VyVGlja3ModGhpcy50aWNrRnJlcXVlbmN5KTtcclxuICAgICAgICB0aGlzLmRheUxhYmVscyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXREYXlMYWJlbHModGhpcy5sb2NhbGVzKTtcclxuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvbkl0ZW1zID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKGl0ZW0uc3RhcnQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2UgPSBgJHtzdGFydFRpbWV9IC0gJHtlbmRUaW1lfWA7XHJcbiAgICBcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uc3RhcnQpLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRXaWR0aEZyb21UaW1lKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lbmRcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVJhbmdlLFxyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgIHRvcDogaXRlbS50b3AgPz8gJzUwJScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ID8/ICc2MCUnLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXMgPSB0aGlzLnBvaW50SW5UaW1lSXRlbXMubWFwKChpdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uZGF0ZSksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVBvaW50U3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgdG9wOiBpdGVtLnRvcCA/PyAnMjAlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGggPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRQb2ludEluVGltZUl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48ZGl2IFxyXG4gICAgI3ZpZXdwb3J0XHJcbiAgICBjbGFzcz1cInNkcy10aW1lbGluZS12aWV3cG9ydFwiXHJcbiAgICAod2hlZWwpPVwib25TY3JvbGwoJGV2ZW50KVwiXHJcblxyXG4gICAgKG1vdXNlZG93bik9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCJcclxuICAgICh0b3VjaHN0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgPlxyXG5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiXHJcbiAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJ2aWV3T2Zmc2V0UGVyY2VudFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiem9vbVBlcmNlbnRcIlxyXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiaXNEcmFnZ2luZyA/ICdldy1yZXNpemUnIDogJ2RlZmF1bHQnXCJcclxuICAgICAgICA+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RGF5TGFiZWxzXCIgXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWRheS1oZWFkZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgZGF5TGFiZWxzXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLWRheS1sYWJlbFwiICBcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRheUxhYmVsQ2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImxhYmVsLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwibGFiZWwud2lkdGhcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsLmxhYmVsfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0hvdXJMYWJlbHNcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaG91ci1oZWFkZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgaG91ckxhYmVscztcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtaG91ci1sYWJlbFwiICBcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhvdXJMYWJlbENsYXNzID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJsYWJlbC54XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwiMS4yXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbGVmdCc6ICdjYWxjKCcgKyBsYWJlbC54ICsgJyUgLSAwLjZyZW0pJ31cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHt7bGFiZWwubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dUaW1lbGluZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lIGZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJ0aW1lbGluZUhlaWdodFwiXHJcbiAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGljayBvZiBob3VyVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtdGlja1wiICBcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImhvdXJUaWNrQ2xhc3MgPz8gbnVsbFwiXHRcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRpY2sueCA9PSAxMDAgPyB7J2xlZnQnOiAnY2FsYygnICsgdGljay54ICsnJSAtIDFweCknfSA6IHsnbGVmdCc6ICdjYWxjKCcgKyB0aWNrLnggKyAnJSAtIDAuNXB4KSd9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcmVzZW50YXRpb25JdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1pdGVtLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICd3aWR0aCc6ICdtYXgoJyArIGl0ZW0ud2lkdGggKyclLCAxcHgpJyxcclxuICAgICAgICAgICAgICAgICAgICAndG9wJzogJ2NhbGMoJyArIGl0ZW0udG9wICsgJyAtIG1heChjYWxjKCcgKyBpdGVtLmhlaWdodCArJy8yKSwgMXB4KSknLCBcclxuICAgICAgICAgICAgICAgIH1cIlxyXG5cclxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiaXRlbS54XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaXRlbS5oZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUgPyBpdGVtVGVtcGxhdGUgOiBkZWZhdWx0SXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtcG9pbnQtaW4tdGltZS1pdGVtLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCJcdFxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiaXRlbS53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3RvcCc6ICdjYWxjKCcgKyBpdGVtLnRvcCArICcgLSBtYXgoY2FsYygnICsgaXRlbS5oZWlnaHQgKycvMiksIDFweCkpJywgXHJcbiAgICAgICAgICAgICAgICAgICAgJ2xlZnQnOiAnY2FsYygnICsgaXRlbS54ICsgJyUgLSBtYXgoIGNhbGMoJyArIGl0ZW0ud2lkdGggKycvMiksIDFweCkpJyxcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpdGVtLmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb2ludEluVGltZVRlbXBsYXRlID8gcG9pbnRJblRpbWVUZW1wbGF0ZSA6IGRlZmF1bHRQb2ludEluVGltZUl0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICBcclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|