@skyux/datetime 6.0.0-beta.7 → 6.0.0-beta.8
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/documentation.json +840 -600
- package/esm2020/index.mjs +4 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range-calculator-validate-function.mjs +1 -1
- package/esm2020/lib/modules/date-range-picker/types/date-range.mjs +1 -1
- package/esm2020/lib/modules/datepicker/datepicker-input.directive.mjs +86 -41
- package/esm2020/lib/modules/datepicker/datepicker.component.mjs +1 -1
- package/esm2020/lib/modules/timepicker/timepicker.component.mjs +1 -1
- package/fesm2015/skyux-datetime.mjs +85 -40
- package/fesm2015/skyux-datetime.mjs.map +1 -1
- package/fesm2020/skyux-datetime.mjs +85 -40
- package/fesm2020/skyux-datetime.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/modules/date-range-picker/types/date-range-calculator-date-range-function.d.ts +0 -3
- package/lib/modules/date-range-picker/types/date-range-calculator-validate-function.d.ts +0 -3
- package/lib/modules/date-range-picker/types/date-range.d.ts +0 -3
- package/lib/modules/datepicker/datepicker-input.directive.d.ts +11 -0
- package/package.json +8 -8
@@ -358,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
358
358
|
static: true,
|
359
359
|
}]
|
360
360
|
}] } });
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUVmLHFCQUFxQixFQUVyQixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSTNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBUUgsTUFBTSxPQUFPLHNCQUFzQjtJQWtNakMsWUFDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUN0QixtQkFBNEMsRUFDbkQsUUFBMEI7UUFMOUIsaUJBQVksR0FB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SHhCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBK0JPLHFCQUFxQjtzQkFINUIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRTt3QkFDbEMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1PLGdCQUFnQjtzQkFIdkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU9PLGdCQUFnQjtzQkFKdkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLHdCQUF3QjtzQkFKL0IsU0FBUzt1QkFBQywwQkFBMEIsRUFBRTt3QkFDckMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IH0gZnJvbSAnLi90aW1lcGlja2VyLmludGVyZmFjZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdmFsdWUgaW4gdGhlIHRpbWVwaWNrZXIgaW5wdXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRUaW1lQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+KCk7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZEhvdXIoc2V0SG91cjogbnVtYmVyKSB7XG4gICAgbGV0IGhvdXJPZmZzZXQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgJiYgc2V0SG91ciA9PT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAtMTI7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdQTScgJiYgc2V0SG91ciAhPT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAxMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICBob3VyT2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IG1vbWVudCh7IGhvdXI6IHNldEhvdXIgfSkuYWRkKGhvdXJPZmZzZXQsICdob3VycycpLmhvdXIoKTtcblxuICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh7XG4gICAgICBob3VyOiBob3VyLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5nZXQoJ21pbnV0ZScpICsgMCxcbiAgICB9KS50b0RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSG91cigpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdoJyksIDApIHx8IDE7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuaG91cigpICsgMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWVyaWRpZXMobWVyaWRpZXM6IHN0cmluZykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgaWYgKG1lcmlkaWVzLnRyaW0oKSAhPT0gdGhpcy5zZWxlY3RlZE1lcmlkaWVzKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmFkZCgxMiwgJ2hvdXJzJykudG9EYXRlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWVyaWRpZXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hY3RpdmVUaW1lKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQoe1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZ2V0KCdob3VyJykgKyAwLFxuICAgICAgbWludXRlOiBtaW51dGUsXG4gICAgfSkudG9EYXRlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWVDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFRpbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSArIDA7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVGltZShuZXdUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCkge1xuICAgIGlmICh0eXBlb2YgbmV3VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdUaW1lLmxvY2FsICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBuZXdUaW1lLmlzbzg2MDE7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZFRpbWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQge1xuICAgIGNvbnN0IHRpbWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0ID0ge1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuaG91cigpLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSxcbiAgICAgIG1lcmlkaWU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpLFxuICAgICAgdGltZXpvbmU6IHBhcnNlSW50KG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnWicpLCAxMCksXG4gICAgICBpc284NjAxOiB0aGlzLmFjdGl2ZVRpbWUsXG4gICAgICBsb2NhbDogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KHRoaXMubG9jYWxlRm9ybWF0KSxcbiAgICAgIGN1c3RvbUZvcm1hdDpcbiAgICAgICAgdHlwZW9mIHRoaXMucmV0dXJuRm9ybWF0ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgID8gdGhpcy5yZXR1cm5Gb3JtYXRcbiAgICAgICAgICA6IHRoaXMubG9jYWxlRm9ybWF0LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGltZTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVUaW1lOiBEYXRlO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPjtcblxuICBwdWJsaWMgaXM4NjAxID0gZmFsc2U7XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQ6IHN0cmluZztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPjtcblxuICBwdWJsaWMgbWludXRlTXVsdGlwbGllcjogbnVtYmVyO1xuXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZztcblxuICBwdWJsaWMgdGltZUZvcm1hdCA9ICdoaCc7XG5cbiAgcHVibGljIHRpbWVwaWNrZXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCd0aW1lcGlja2VyUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHByaXZhdGUgc2V0IHRpbWVwaWNrZXJSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXJSZWYgPSB2YWx1ZTtcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHRvIHJlbmRlciBiZWZvcmUgZ3VhZ2luZyBkaW1lbnNpb25zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb3JlQWRhcHRlci5nZXRGb2N1c2FibGVDaGlsZHJlbkFuZEFwcGx5Rm9jdXMoXG4gICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAnLnNreS10aW1lcGlja2VyLWNvbnRlbnQnLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGltZXBpY2tlclJlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHJpdmF0ZSB0aW1lcGlja2VyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHJpdmF0ZSB0aW1lcGlja2VyVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZTtcblxuICBwcml2YXRlIG92ZXJsYXlLZXlkb3duTGlzdG5lcjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX3RpbWVwaWNrZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy50aW1lcGlja2VySWQgPSBgc2t5LXRpbWVwaWNrZXItJHt1bmlxdWVJZH1gO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvbklkID0gYHNreS10aW1lcGlja2VyLWJ1dHRvbi0ke3VuaXF1ZUlkfWA7XG5cbiAgICAvLyBVcGRhdGUgaWNvbnMgd2hlbiB0aGVtZSBjaGFuZ2VzLlxuICAgIHRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgdGhpcy5hZGRLZXlkb3duTGlzdG5lcigpO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZSkge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybWF0KGZvcm1hdDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGggPSAxMjtcbiAgICBsZXQgbSA9IDEyO1xuICAgIGxldCBtaW51dGVNdWx0aXBsaWVyID0gNTtcbiAgICBsZXQgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ2hoJykge1xuICAgICAgaCA9IDEyO1xuICAgICAgbSA9IDEyO1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgICBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcbiAgICAgIHRoaXMuaXM4NjAxID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgIGggPSAyNDtcbiAgICAgIG0gPSA0O1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDE1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ0hIOm1tJztcbiAgICAgIHRoaXMuaXM4NjAxID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhOiB7XG4gICAgICBob3VyczogbnVtYmVyW107XG4gICAgICBtaW51dGVzOiBudW1iZXJbXTtcbiAgICAgIGxvY2FsZUZvcm1hdDogc3RyaW5nO1xuICAgICAgbWludXRlTXVsdGlwbGllcjogbnVtYmVyO1xuICAgIH0gPSB7XG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgaG91ci5cbiAgICAgIGhvdXJzOiBBcnJheSguLi5BcnJheShoKSkubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgICAgICByZXR1cm4gKytpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KSxcbiAgICAgIC8vIENyZWF0ZSBhIHNwYXJzZSBhcnJheSB3aXRoIGEgbGVuZ3RoIGVxdWFsIHRvIHRoZSBtaW51dGUuXG4gICAgICBtaW51dGVzOiBBcnJheSguLi5BcnJheShtKSkubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBpICogbWludXRlTXVsdGlwbGllcjtcbiAgICAgIH0pLFxuICAgICAgbG9jYWxlRm9ybWF0OiBsb2NhbGVGb3JtYXQsXG4gICAgICBtaW51dGVNdWx0aXBsaWVyOiBtaW51dGVNdWx0aXBsaWVyLFxuICAgIH07XG5cbiAgICB0aGlzLmhvdXJzID0gZGF0YS5ob3VycztcbiAgICB0aGlzLm1pbnV0ZXMgPSBkYXRhLm1pbnV0ZXM7XG4gICAgdGhpcy5sb2NhbGVGb3JtYXQgPSBkYXRhLmxvY2FsZUZvcm1hdDtcbiAgICB0aGlzLm1pbnV0ZU11bHRpcGxpZXIgPSBkYXRhLm1pbnV0ZU11bHRpcGxpZXI7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblBpY2tlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBpY2tlcigpIHtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLnRpbWVwaWNrZXJSZWYpO1xuXG4gICAgLy8gSGlkZSB0aW1lcGlja2VyIHdoZW4gdHJpZ2dlciBidXR0b24gaXMgc2Nyb2xsZWQgb2ZmIHNjcmVlbi5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ3JpZ2h0JyxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZmZpeGVyID0gYWZmaXhlcjtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy50aW1lcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFkZEtleWRvd25MaXN0bmVyKCk7XG5cbiAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMudGltZXBpY2tlclRlbXBsYXRlUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEtleWRvd25MaXN0bmVyKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyID0gZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50aW1lcGlja2VyVW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLnRpbWVwaWNrZXJVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLm92ZXJsYXlLZXlkb3duTGlzdG5lcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U2VydmljZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC10aW1lcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gdGltZXBpY2tlcklkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW2F0dHIuaWRdPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cIidza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJvblRyaWdnZXJCdXR0b25DbGljaygpXCJcbiAgICAgICN0cmlnZ2VyQnV0dG9uUmVmXG4gICAgPlxuICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNsb2NrLW9cIiBzaXplPVwibGdcIj48L3NreS1pY29uPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBpY29uPVwiY2xvY2tcIlxuICAgICAgICBzaXplPVwibGdcIlxuICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgID48L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGltZXBpY2tlclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb250YWluZXIgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tNFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIuaWRdPVwidGltZXBpY2tlcklkXCJcbiAgICBbY2xhc3Muc2t5LXRpbWVwaWNrZXItaGlkZGVuXT1cIiFpc1Zpc2libGVcIlxuICAgICN0aW1lcGlja2VyUmVmXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGVudFwiPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktdGltZXBpY2tlci0yNGhvdXInOiBpczg2MDEgfVwiXG4gICAgICA+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cImhvdXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZEhvdXIgPT09IGhvdXIgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBob3VyIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWludXRlID09PSBtaW51dGUgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnMDAnLnN1YnN0cmluZygwLCAyIC0gbWludXRlLnRvU3RyaW5nKCkubGVuZ3RoKSArIG1pbnV0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzODYwMVwiIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtZXJpZGllXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFNXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnUE0nIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUE1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWZvb3RlclwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2ljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdza3l1eF90aW1lcGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUVmLHFCQUFxQixFQUVyQixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSTNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBUUgsTUFBTSxPQUFPLHNCQUFzQjtJQWtNakMsWUFDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUN0QixtQkFBNEMsRUFDbkQsUUFBMEI7UUFMOUIsaUJBQVksR0FB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SHhCLFNBQVM7dUJBQUMsZUFBZSxFQUFFO3dCQUMxQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7Z0JBK0JPLHFCQUFxQjtzQkFINUIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRTt3QkFDbEMsSUFBSSxFQUFFLFdBQVc7cUJBQ2xCO2dCQU1PLGdCQUFnQjtzQkFIdkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2dCQU9PLGdCQUFnQjtzQkFKdkIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU9PLHdCQUF3QjtzQkFKL0IsU0FBUzt1QkFBQywwQkFBMEIsRUFBRTt3QkFDckMsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICBTa3lPdmVybGF5SW5zdGFuY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IH0gZnJvbSAnLi90aW1lcGlja2VyLmludGVyZmFjZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdmFsdWUgaW4gdGhlIHRpbWVwaWNrZXIgaW5wdXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRUaW1lQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+KCk7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZEhvdXIoc2V0SG91cjogbnVtYmVyKSB7XG4gICAgbGV0IGhvdXJPZmZzZXQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgJiYgc2V0SG91ciA9PT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAtMTI7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdQTScgJiYgc2V0SG91ciAhPT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAxMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICBob3VyT2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IG1vbWVudCh7IGhvdXI6IHNldEhvdXIgfSkuYWRkKGhvdXJPZmZzZXQsICdob3VycycpLmhvdXIoKTtcblxuICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh7XG4gICAgICBob3VyOiBob3VyLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5nZXQoJ21pbnV0ZScpICsgMCxcbiAgICB9KS50b0RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSG91cigpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdoJyksIDApIHx8IDE7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuaG91cigpICsgMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkTWVyaWRpZXMobWVyaWRpZXM6IHN0cmluZykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLmlzODYwMSkge1xuICAgICAgaWYgKG1lcmlkaWVzLnRyaW0oKSAhPT0gdGhpcy5zZWxlY3RlZE1lcmlkaWVzKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmFkZCgxMiwgJ2hvdXJzJykudG9EYXRlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWVyaWRpZXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hY3RpdmVUaW1lKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQoe1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZ2V0KCdob3VyJykgKyAwLFxuICAgICAgbWludXRlOiBtaW51dGUsXG4gICAgfSkudG9EYXRlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWVDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFRpbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSArIDA7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVGltZShuZXdUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCkge1xuICAgIGlmICh0eXBlb2YgbmV3VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdUaW1lLmxvY2FsICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBuZXdUaW1lLmlzbzg2MDE7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZFRpbWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQge1xuICAgIGNvbnN0IHRpbWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0ID0ge1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuaG91cigpLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSxcbiAgICAgIG1lcmlkaWU6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnQScpLFxuICAgICAgdGltZXpvbmU6IHBhcnNlSW50KG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCgnWicpLCAxMCksXG4gICAgICBpc284NjAxOiB0aGlzLmFjdGl2ZVRpbWUsXG4gICAgICBsb2NhbDogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KHRoaXMubG9jYWxlRm9ybWF0KSxcbiAgICAgIGN1c3RvbUZvcm1hdDpcbiAgICAgICAgdHlwZW9mIHRoaXMucmV0dXJuRm9ybWF0ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgID8gdGhpcy5yZXR1cm5Gb3JtYXRcbiAgICAgICAgICA6IHRoaXMubG9jYWxlRm9ybWF0LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGltZTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVUaW1lOiBEYXRlO1xuXG4gIHB1YmxpYyBob3VyczogQXJyYXk8bnVtYmVyPjtcblxuICBwdWJsaWMgaXM4NjAxID0gZmFsc2U7XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQ6IHN0cmluZztcblxuICBwdWJsaWMgbWludXRlczogQXJyYXk8bnVtYmVyPjtcblxuICBwdWJsaWMgbWludXRlTXVsdGlwbGllcjogbnVtYmVyO1xuXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZztcblxuICBwdWJsaWMgdGltZUZvcm1hdCA9ICdoaCc7XG5cbiAgcHVibGljIHRpbWVwaWNrZXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB0cmlnZ2VyQnV0dG9uSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCd0aW1lcGlja2VyUmVmJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gIH0pXG4gIHByaXZhdGUgc2V0IHRpbWVwaWNrZXJSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3RpbWVwaWNrZXJSZWYgPSB2YWx1ZTtcblxuICAgICAgLy8gV2FpdCBmb3IgdGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHRvIHJlbmRlciBiZWZvcmUgZ3VhZ2luZyBkaW1lbnNpb25zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb3JlQWRhcHRlci5nZXRGb2N1c2FibGVDaGlsZHJlbkFuZEFwcGx5Rm9jdXMoXG4gICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAnLnNreS10aW1lcGlja2VyLWNvbnRlbnQnLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGltZXBpY2tlclJlZigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHJpdmF0ZSB0aW1lcGlja2VyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHJpdmF0ZSB0cmlnZ2VyQnV0dG9uUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwcml2YXRlIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHByaXZhdGUgdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcml2YXRlIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHJpdmF0ZSB0aW1lcGlja2VyVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIG92ZXJsYXk6IFNreU92ZXJsYXlJbnN0YW5jZTtcblxuICBwcml2YXRlIG92ZXJsYXlLZXlkb3duTGlzdG5lcjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgX3RpbWVwaWNrZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvcmVBZGFwdGVyOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV4dElkKys7XG4gICAgdGhpcy50aW1lcGlja2VySWQgPSBgc2t5LXRpbWVwaWNrZXItJHt1bmlxdWVJZH1gO1xuICAgIHRoaXMudHJpZ2dlckJ1dHRvbklkID0gYHNreS10aW1lcGlja2VyLWJ1dHRvbi0ke3VuaXF1ZUlkfWA7XG5cbiAgICAvLyBVcGRhdGUgaWNvbnMgd2hlbiB0aGVtZSBjaGFuZ2VzLlxuICAgIHRoZW1lU3ZjPy5zZXR0aW5nc0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgdGhpcy5hZGRLZXlkb3duTGlzdG5lcigpO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZSkge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybWF0KGZvcm1hdDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGggPSAxMjtcbiAgICBsZXQgbSA9IDEyO1xuICAgIGxldCBtaW51dGVNdWx0aXBsaWVyID0gNTtcbiAgICBsZXQgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ2hoJykge1xuICAgICAgaCA9IDEyO1xuICAgICAgbSA9IDEyO1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgICBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcbiAgICAgIHRoaXMuaXM4NjAxID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgIGggPSAyNDtcbiAgICAgIG0gPSA0O1xuICAgICAgbWludXRlTXVsdGlwbGllciA9IDE1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ0hIOm1tJztcbiAgICAgIHRoaXMuaXM4NjAxID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhOiB7XG4gICAgICBob3VyczogbnVtYmVyW107XG4gICAgICBtaW51dGVzOiBudW1iZXJbXTtcbiAgICAgIGxvY2FsZUZvcm1hdDogc3RyaW5nO1xuICAgICAgbWludXRlTXVsdGlwbGllcjogbnVtYmVyO1xuICAgIH0gPSB7XG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgaG91ci5cbiAgICAgIGhvdXJzOiBBcnJheSguLi5BcnJheShoKSkubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgICAgICByZXR1cm4gKytpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdISCcpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KSxcbiAgICAgIC8vIENyZWF0ZSBhIHNwYXJzZSBhcnJheSB3aXRoIGEgbGVuZ3RoIGVxdWFsIHRvIHRoZSBtaW51dGUuXG4gICAgICBtaW51dGVzOiBBcnJheSguLi5BcnJheShtKSkubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBpICogbWludXRlTXVsdGlwbGllcjtcbiAgICAgIH0pLFxuICAgICAgbG9jYWxlRm9ybWF0OiBsb2NhbGVGb3JtYXQsXG4gICAgICBtaW51dGVNdWx0aXBsaWVyOiBtaW51dGVNdWx0aXBsaWVyLFxuICAgIH07XG5cbiAgICB0aGlzLmhvdXJzID0gZGF0YS5ob3VycztcbiAgICB0aGlzLm1pbnV0ZXMgPSBkYXRhLm1pbnV0ZXM7XG4gICAgdGhpcy5sb2NhbGVGb3JtYXQgPSBkYXRhLmxvY2FsZUZvcm1hdDtcbiAgICB0aGlzLm1pbnV0ZU11bHRpcGxpZXIgPSBkYXRhLm1pbnV0ZU11bHRpcGxpZXI7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblBpY2tlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBpY2tlcigpIHtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMucmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5yZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLnRpbWVwaWNrZXJSZWYpO1xuXG4gICAgLy8gSGlkZSB0aW1lcGlja2VyIHdoZW4gdHJpZ2dlciBidXR0b24gaXMgc2Nyb2xsZWQgb2ZmIHNjcmVlbi5cbiAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLnRyaWdnZXJCdXR0b25SZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ3JpZ2h0JyxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZmZpeGVyID0gYWZmaXhlcjtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUFmZml4ZXIoKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuYWZmaXhlcikge1xuICAgICAgdGhpcy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuYWZmaXhlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy50aW1lcGlja2VyVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFkZEtleWRvd25MaXN0bmVyKCk7XG5cbiAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMudGltZXBpY2tlclRlbXBsYXRlUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEtleWRvd25MaXN0bmVyKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheUtleWRvd25MaXN0bmVyID0gZnJvbUV2ZW50KHdpbmRvdy5kb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChrZXkgPT09ICdlc2NhcGUnICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy50aW1lcGlja2VyVW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMudGltZXBpY2tlclVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLnRpbWVwaWNrZXJVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICB0aGlzLm92ZXJsYXlLZXlkb3duTGlzdG5lcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5wdXRCb3hIb3N0U2VydmljZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgPGJ1dHRvblxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC10aW1lcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gdGltZXBpY2tlcklkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW2F0dHIuaWRdPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cIidza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJvblRyaWdnZXJCdXR0b25DbGljaygpXCJcbiAgICAgICN0cmlnZ2VyQnV0dG9uUmVmXG4gICAgPlxuICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImNsb2NrLW9cIiBzaXplPVwibGdcIj48L3NreS1pY29uPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICBpY29uPVwiY2xvY2tcIlxuICAgICAgICBzaXplPVwibGdcIlxuICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgID48L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGltZXBpY2tlclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb250YWluZXIgc2t5LXNoYWRvdyBza3ktYm94IHNreS1lbGV2YXRpb24tNFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIuaWRdPVwidGltZXBpY2tlcklkXCJcbiAgICBbY2xhc3Muc2t5LXRpbWVwaWNrZXItaGlkZGVuXT1cIiFpc1Zpc2libGVcIlxuICAgICN0aW1lcGlja2VyUmVmXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGVudFwiPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktdGltZXBpY2tlci0yNGhvdXInOiBpczg2MDEgfVwiXG4gICAgICA+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91cnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cImhvdXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZEhvdXIgPT09IGhvdXIgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBob3VyIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWludXRlIG9mIG1pbnV0ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1pbnV0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdza3ktYnRuLWFjdGl2ZSc6IHNlbGVjdGVkTWludXRlID09PSBtaW51dGUgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnMDAnLnN1YnN0cmluZygwLCAyIC0gbWludXRlLnRvU3RyaW5nKCkubGVuZ3RoKSArIG1pbnV0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzODYwMVwiIGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29sdW1uXCI+XG4gICAgICAgIDxvbD5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG5hbWU9XCJtZXJpZGllXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ0FNJyB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFNXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnUE0nIH1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUE1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWZvb3RlclwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2ljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdza3l1eF90aW1lcGlja2VyX2Nsb3NlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -2680,10 +2680,13 @@ class SkyDatepickerInputDirective {
|
|
2680
2680
|
this.dateFormatter = new SkyDateFormatter();
|
2681
2681
|
this.ngUnsubscribe = new Subject();
|
2682
2682
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
2683
|
+
// istanbul ignore next
|
2683
2684
|
this.onChange = (_) => { };
|
2684
2685
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
2686
|
+
// istanbul ignore next
|
2685
2687
|
this.onTouched = () => { };
|
2686
2688
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
2689
|
+
// istanbul ignore next
|
2687
2690
|
this.onValidatorChange = () => { };
|
2688
2691
|
this.initialPlaceholder = this.adapter.getPlaceholder(this.elementRef);
|
2689
2692
|
this.updatePlaceholder();
|
@@ -2892,9 +2895,40 @@ class SkyDatepickerInputDirective {
|
|
2892
2895
|
if (!value) {
|
2893
2896
|
return;
|
2894
2897
|
}
|
2895
|
-
|
2896
|
-
|
2897
|
-
|
2898
|
+
if (value instanceof Date) {
|
2899
|
+
const isDateValid = this.dateFormatter.dateIsValid(value);
|
2900
|
+
if (!isDateValid) {
|
2901
|
+
// Mark the invalid control as touched so that the input's invalid CSS styles appear.
|
2902
|
+
// (This is only required when the invalid value is set by the FormControl constructor.)
|
2903
|
+
this.control.markAsTouched();
|
2904
|
+
return {
|
2905
|
+
skyDate: {
|
2906
|
+
invalid: value,
|
2907
|
+
},
|
2908
|
+
};
|
2909
|
+
}
|
2910
|
+
const minDate = this.minDate;
|
2911
|
+
if (minDate &&
|
2912
|
+
this.dateFormatter.dateIsValid(minDate) &&
|
2913
|
+
value < minDate) {
|
2914
|
+
return {
|
2915
|
+
skyDate: {
|
2916
|
+
minDate,
|
2917
|
+
},
|
2918
|
+
};
|
2919
|
+
}
|
2920
|
+
const maxDate = this.maxDate;
|
2921
|
+
if (maxDate &&
|
2922
|
+
this.dateFormatter.dateIsValid(maxDate) &&
|
2923
|
+
value > maxDate) {
|
2924
|
+
return {
|
2925
|
+
skyDate: {
|
2926
|
+
maxDate,
|
2927
|
+
},
|
2928
|
+
};
|
2929
|
+
}
|
2930
|
+
}
|
2931
|
+
else {
|
2898
2932
|
// Mark the invalid control as touched so that the input's invalid CSS styles appear.
|
2899
2933
|
// (This is only required when the invalid value is set by the FormControl constructor.)
|
2900
2934
|
this.control.markAsTouched();
|
@@ -2904,22 +2938,6 @@ class SkyDatepickerInputDirective {
|
|
2904
2938
|
},
|
2905
2939
|
};
|
2906
2940
|
}
|
2907
|
-
const minDate = this.minDate;
|
2908
|
-
if (minDate && this.dateFormatter.dateIsValid(minDate) && value < minDate) {
|
2909
|
-
return {
|
2910
|
-
skyDate: {
|
2911
|
-
minDate,
|
2912
|
-
},
|
2913
|
-
};
|
2914
|
-
}
|
2915
|
-
const maxDate = this.maxDate;
|
2916
|
-
if (maxDate && this.dateFormatter.dateIsValid(maxDate) && value > maxDate) {
|
2917
|
-
return {
|
2918
|
-
skyDate: {
|
2919
|
-
maxDate,
|
2920
|
-
},
|
2921
|
-
};
|
2922
|
-
}
|
2923
2941
|
}
|
2924
2942
|
registerOnChange(fn) {
|
2925
2943
|
this.onChange = fn;
|
@@ -2955,18 +2973,40 @@ class SkyDatepickerInputDirective {
|
|
2955
2973
|
setInputElementValue(value) {
|
2956
2974
|
this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);
|
2957
2975
|
}
|
2976
|
+
/**
|
2977
|
+
* Gets the date value from a value - if possible.
|
2978
|
+
* Will not convert unconvertable dates or numbers outside of the current month's number of days.
|
2979
|
+
* Returns `undefined` if the value can not be converted.
|
2980
|
+
*/
|
2958
2981
|
getDateValue(value) {
|
2959
|
-
let dateValue;
|
2960
2982
|
if (value instanceof Date) {
|
2961
|
-
|
2983
|
+
return value;
|
2962
2984
|
}
|
2963
2985
|
else if (typeof value === 'string') {
|
2986
|
+
return this.getShortcutOrDateValue(value);
|
2987
|
+
}
|
2988
|
+
}
|
2989
|
+
/**
|
2990
|
+
* Converts a string to a date object if the string is a valid date string.
|
2991
|
+
* It will also convert numeric input to a date if that number is within the current month's number of days.
|
2992
|
+
* If the string can not be converted, `undefined` be returned.
|
2993
|
+
*/
|
2994
|
+
getShortcutOrDateValue(value) {
|
2995
|
+
const num = Number(value);
|
2996
|
+
if (Number.isInteger(num)) {
|
2997
|
+
const now = new Date();
|
2998
|
+
const shortcutDate = new Date(now.getFullYear(), now.getMonth(), num);
|
2999
|
+
const daysInMonth = shortcutDate.getDate();
|
3000
|
+
if (num > 0 && num <= daysInMonth) {
|
3001
|
+
return shortcutDate;
|
3002
|
+
}
|
3003
|
+
}
|
3004
|
+
else {
|
2964
3005
|
const date = this.dateFormatter.getDateFromString(value, this.dateFormat, this.strict);
|
2965
3006
|
if (this.dateFormatter.dateIsValid(date)) {
|
2966
|
-
|
3007
|
+
return date;
|
2967
3008
|
}
|
2968
3009
|
}
|
2969
|
-
return dateValue;
|
2970
3010
|
}
|
2971
3011
|
/**
|
2972
3012
|
* Validates the input value to ensure it is formatted correctly.
|
@@ -3000,10 +3040,6 @@ class SkyDatepickerInputDirective {
|
|
3000
3040
|
if (this._value === value) {
|
3001
3041
|
return;
|
3002
3042
|
}
|
3003
|
-
const dateValue = this.getDateValue(value);
|
3004
|
-
const areDatesEqual = this._value instanceof Date &&
|
3005
|
-
dateValue &&
|
3006
|
-
dateValue.getTime() === this._value.getTime();
|
3007
3043
|
const isValidDateString = this.isDateStringValid(value);
|
3008
3044
|
// If the string value supplied is malformed, do not set the value to its Date equivalent.
|
3009
3045
|
// (JavaScript's Date parser will convert poorly formatted dates to Date objects, such as "abc 123", which isn't ideal.)
|
@@ -3016,23 +3052,32 @@ class SkyDatepickerInputDirective {
|
|
3016
3052
|
(_a = this.control) === null || _a === void 0 ? void 0 : _a.setValue(this._value, { emitEvent: false });
|
3017
3053
|
}
|
3018
3054
|
this.datepickerComponent.selectedDate = this._value;
|
3055
|
+
this.setInputElementValue(value || '');
|
3019
3056
|
}
|
3020
|
-
else
|
3021
|
-
|
3022
|
-
|
3023
|
-
|
3057
|
+
else {
|
3058
|
+
// This value represents the date value for the input if possible.
|
3059
|
+
// This value will take into account all shortcut functionality.
|
3060
|
+
const dateValue = this.getDateValue(value);
|
3061
|
+
const areDatesEqual = this._value instanceof Date &&
|
3062
|
+
dateValue &&
|
3063
|
+
dateValue.getTime() === this._value.getTime();
|
3064
|
+
if (dateValue !== this._value || !areDatesEqual) {
|
3065
|
+
this._value = dateValue || value;
|
3066
|
+
if (emitEvent) {
|
3067
|
+
this.onChange(this._value);
|
3068
|
+
}
|
3069
|
+
else {
|
3070
|
+
(_b = this.control) === null || _b === void 0 ? void 0 : _b.setValue(this._value, { emitEvent: false });
|
3071
|
+
}
|
3072
|
+
this.datepickerComponent.selectedDate = this._value;
|
3073
|
+
}
|
3074
|
+
if (dateValue) {
|
3075
|
+
const formattedDateString = this.dateFormatter.format(dateValue, this.dateFormat);
|
3076
|
+
this.setInputElementValue(formattedDateString);
|
3024
3077
|
}
|
3025
3078
|
else {
|
3026
|
-
|
3079
|
+
this.setInputElementValue(value || '');
|
3027
3080
|
}
|
3028
|
-
this.datepickerComponent.selectedDate = this._value;
|
3029
|
-
}
|
3030
|
-
if (dateValue && isValidDateString) {
|
3031
|
-
const formattedDate = this.dateFormatter.format(dateValue, this.dateFormat);
|
3032
|
-
this.setInputElementValue(formattedDate);
|
3033
|
-
}
|
3034
|
-
else {
|
3035
|
-
this.setInputElementValue(value || '');
|
3036
3081
|
}
|
3037
3082
|
}
|
3038
3083
|
}
|