@c8y/ngx-components 1018.0.183 → 1018.0.186
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/core/dashboard/widget-time-context.component.mjs +3 -3
- package/esm2020/ecosystem/packages/package-details/package-details.component.mjs +2 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +1 -0
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +2 -2
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +1 -0
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +2 -2
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -250,10 +250,10 @@ export class WidgetTimeContextComponent {
|
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
WidgetTimeContextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetTimeContextComponent, deps: [{ token: i1.WidgetsDashboardEventService }, { token: i2.DashboardChildComponent }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
253
|
-
WidgetTimeContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i8.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i8.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i8.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "component", type: i11.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "pipe", type: i12.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i13.DatePipe, name: "c8yDate" }] });
|
|
253
|
+
WidgetTimeContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i8.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i8.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i8.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "component", type: i11.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "pipe", type: i12.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i13.DatePipe, name: "c8yDate" }] });
|
|
254
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetTimeContextComponent, decorators: [{
|
|
255
255
|
type: Component,
|
|
256
|
-
args: [{ selector: 'c8y-widget-time-context', host: { class: 'd-flex a-i-center gap-4' }, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n" }]
|
|
256
|
+
args: [{ selector: 'c8y-widget-time-context', host: { class: 'd-flex a-i-center gap-4' }, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n" }]
|
|
257
257
|
}], ctorParameters: function () { return [{ type: i1.WidgetsDashboardEventService }, { type: i2.DashboardChildComponent }, { type: i3.Router }, { type: i3.ActivatedRoute }]; }, propDecorators: { canDecouple: [{
|
|
258
258
|
type: Input
|
|
259
259
|
}], dateContextChange: [{
|
|
@@ -262,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
262
262
|
type: ViewChild,
|
|
263
263
|
args: [DashboardChildActionComponent]
|
|
264
264
|
}] } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUNMLHNCQUFzQixFQUV0QixZQUFZLEVBQ2IsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JDLE1BQU0sT0FBTywwQkFBMEI7SUE4Q3JDOztPQUVHO0lBQ0gsWUFDVSxrQkFBZ0QsRUFDaEQsY0FBdUMsRUFDdkMsTUFBYyxFQUNkLGNBQThCO1FBSDlCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBOEI7UUFDaEQsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFw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RCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDckMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FDM0QsQ0FBQztJQUNKLENBQUM7O3VIQXRTVSwwQkFBMEI7MkdBQTFCLDBCQUEwQix5UEF1QjFCLDZCQUE2QixnREN0RDFDLDAwRkEwRkE7MkZEM0RhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIsUUFFN0IsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUU7Mk1BTzFDLFdBQVc7c0JBRFYsS0FBSztnQkFlTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS21DLE1BQU07c0JBQS9DLFNBQVM7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCwgVGltZUNvbnRleHRFdmVudCB9IGZyb20gJy4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBQcmVkZWZpbmVkVGltZVNwYW4sXG4gIFRpbWVTcGFuSW5Nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktd2lkZ2V0LXRpbWUtY29udGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2QtZmxleCBhLWktY2VudGVyIGdhcC00JyB9XG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgY2FuIGRlY291cGxlIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNhbkRlY291cGxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFRoZSBkYXRlcyB0byBzZXQgYXMgZGVmYXVsdCBbZnJvbSwgdG9dLlxuICAgKi9cbiAgZGVmYXVsdERhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgLyoqXG4gICAqIFRoZSBnbG9iYWwgdGltZSBjb250ZXh0IHZhbHVlLlxuICAgKi9cbiAgZ2xvYmFsRGF0ZTogRGF0ZVRpbWVDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBFbWl0cyBlYWNoIGNoYW5nZSBhcyBhbiBhcnJheSBvZiBkYXRlcyBbZnJvbSwgdG9dLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGRhdGVDb250ZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlVGltZUNvbnRleHQ+KCk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50KSBhY3Rpb246IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbG9jYWwgZGF0ZSBpZiBkZWNvdXBsZWQuXG4gICAqL1xuICBsb2NhbERhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGltZSBjb250ZXh0IGlzIGJvdW5kIHRvIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAqL1xuICBpc0NvdXBsZWQgPSB0cnVlO1xuICBkZWNvdXBsZVRpbWVDb250ZXh0TGFiZWwgPSBnZXR0ZXh0KCdEZWNvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgY291cGxlVGltZUNvbnRleHRMYWJlbCA9IGdldHRleHQoJ0NvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIG1vZGVsOiB7XG4gICAgZnJvbURhdGU6IHN0cmluZztcbiAgICB0b0RhdGU6IHN0cmluZztcbiAgfTtcblxuICBwcmVkZWZpbmVkVGltZVNwYW5MaXN0OiBQcmVkZWZpbmVkVGltZVNwYW5bXTtcbiAgY3VycmVudFByZWRlZmluZWRUaW1lU3BhbjogUHJlZGVmaW5lZFRpbWVTcGFuID0gbnVsbDtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHdpZGdldEV2ZW50U2VydmljZTogV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMuc2V0UHJlZGVmaW5lZERhdGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZSBTdWJzY3JpYmluZyB0byB0aGUgZ2xvYmFsIGNvbnRleHQuXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbml0aWFsRGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbERhdGUoKTtcblxuICAgIHRoaXMuaW5pdEZvcm0oaW5pdGlhbERhdGUpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCk7XG4gICAgdGhpcy51cGRhdGUoaW5pdGlhbERhdGUpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVBhcmFtc0NoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgQWRkaW5nIGN1c3RvbSBhY3Rpb25zLlxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkRlY291cGxlKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZENoaWxkLmFkZEFjdGlvbnMoW3RoaXMuYWN0aW9uXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGNvdXBsaW5nIG9uIG9yIG9mZi5cbiAgICovXG4gIHRvZ2dsZURlY291cGxpbmcoKSB7XG4gICAgdGhpcy5pc0NvdXBsZWQgPSAhdGhpcy5pc0NvdXBsZWQ7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLnN1YnNjcmliZVRvR2xvYmFsQ29udGV4dCgpO1xuICAgICAgdGhpcy5nbG9iYWxEYXRlID0gdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZ2V0TGFzdFZhbHVlKCdUSU1FX0NPTlRFWFQnKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh0aGlzLmdsb2JhbERhdGUpO1xuICAgICAgdGhpcy5kYXRlQ29udGV4dENoYW5nZS5lbWl0KHRoaXMuZ2xvYmFsRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICAgICAgaWYgKCF0aGlzLmxvY2FsRGF0ZSkge1xuICAgICAgICB0aGlzLmxvY2FsRGF0ZSA9IHRoaXMuZ2xvYmFsRGF0ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh0aGlzLmxvY2FsRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZm9ybSB2YWx1ZSB0byBnbG9iYWwgb3IgbG9jYWwgZGF0ZSBjb250ZXh0LlxuICAgKi9cbiAgYXBwbHlEYXRldGltZUNvbnRleHQoKSB7XG4gICAgdGhpcy51cGRhdGUoW25ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS5mcm9tRGF0ZSksIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50b0RhdGUpXSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGZvcm0gdG8gaW5pdGlhbCB2YWx1ZSBhbmQgdXBkYXRlIGNvbnRleHQuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHREYXRlKCk7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWVzKHRoaXMuZGVmYXVsdERhdGUpO1xuICAgIHRoaXMudXBkYXRlKHRoaXMuZGVmYXVsdERhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgdW5zdWJzY3JpYmluZy5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICB9XG5cbiAgcHJlZGVmaW5lZERhdGVGcm9tU2VsZWN0ZWQoc2VsZWN0ZWREYXRlRnJvbTogUHJlZGVmaW5lZFRpbWVTcGFuKSB7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0RGF0ZSgpO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWREYXRlRnJvbSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5kZWZhdWx0RGF0ZVsxXS52YWx1ZU9mKCkgLSBzZWxlY3RlZERhdGVGcm9tLnRpbWVTcGFuSW5Nc1xuICAgICk7XG4gICAgdGhpcy51cGRhdGUoW2NhbGN1bGF0ZWREYXRlRnJvbSwgdGhpcy5kZWZhdWx0RGF0ZVsxXV0sIHNlbGVjdGVkRGF0ZUZyb20pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEZWZhdWx0RGF0ZSgpIHtcbiAgICBjb25zdCB0b2RheURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHllc3RlcmRheURhdGUgPSBuZXcgRGF0ZSh0b2RheURhdGUudmFsdWVPZigpIC0gMTAwMCAqIDYwICogNjAgKiAyNCk7XG4gICAgdGhpcy5kZWZhdWx0RGF0ZSA9IFt5ZXN0ZXJkYXlEYXRlLCB0b2RheURhdGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcmVkZWZpbmVkRGF0ZXMoKSB7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0RGF0ZSgpO1xuICAgIGNvbnN0IHRvZGF5RGF0ZUNvcHkgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHREYXRlWzFdLnZhbHVlT2YoKSk7XG4gICAgY29uc3QgbGFzdE1vbnRoVGltZVNwYW4gPVxuICAgICAgdG9kYXlEYXRlQ29weS52YWx1ZU9mKCkgLVxuICAgICAgbmV3IERhdGUodG9kYXlEYXRlQ29weS5zZXRNb250aCh0b2RheURhdGVDb3B5LmdldE1vbnRoKCkgLSAxKSkudmFsdWVPZigpO1xuXG4gICAgdGhpcy5wcmVkZWZpbmVkVGltZVNwYW5MaXN0ID0gW1xuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBtaW51dGUnKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuTUlOVVRFIH0sXG4gICAgICB7IHRpdGxlOiBnZXR0ZXh0KCdMYXN0IGhvdXInKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuSE9VUiB9LFxuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBkYXknKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuREFZIH0sXG4gICAgICB7IHRpdGxlOiBnZXR0ZXh0KCdMYXN0IHdlZWsnKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuV0VFSyB9LFxuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBtb250aCcpLCB0aW1lU3BhbkluTXM6IGxhc3RNb250aFRpbWVTcGFuIH1cbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGRhdGV0aW1lIHBpY2tlciBmb3JtIHdpdGggcHJvcGVyIGZpZWxkcyBhbmQgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBWYWx1ZSB0byBmaWxsIGZvcm0gd2l0aC5cbiAgICovXG4gIHByaXZhdGUgaW5pdEZvcm0oaW5pdGlhbFZhbHVlOiBEYXRlVGltZUNvbnRleHQpIHtcbiAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICB0aGlzLmZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2RhdGUtdGltZScsXG4gICAgICAgIGtleTogJ2Zyb21EYXRlJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Zyb21gZGF0ZWAnKVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMubWF4RGF0ZSc6IChtb2RlbDogYW55KSA9PiBtb2RlbD8udG9EYXRlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdkYXRlLXRpbWUnLFxuICAgICAgICBrZXk6ICd0b0RhdGUnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVG9gZGF0ZWAnKVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMubWluRGF0ZSc6IChtb2RlbDogYW55KSA9PiBtb2RlbD8uZnJvbURhdGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5tb2RlbCA9IHtcbiAgICAgIGZyb21EYXRlOiBpbml0aWFsVmFsdWVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIHRvRGF0ZTogaW5pdGlhbFZhbHVlWzFdLnRvSVNPU3RyaW5nKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgbmV3IFdpZGdldENoYW5nZUV2ZW50IGVpdGhlciBvbiB0aGUgbG9jYWwgY2hhbmdlIGVtaXR0ZXIgb3Igb24gdGhlIGdsb2JhbCBvbmUuXG4gICAqIEBwYXJhbSBkYXRlUmFuZ2UgVGhlIGV2ZW50IGRhdGEgdG8gc2VuZC5cbiAgICogQHBhcmFtIHByZWRlZmluZWREYXRlRnJvbSBUaW1lIHJhbmdlIHNlbGVjdGVkIGZyb20gZHJvcGRvd24uXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZShkYXRlUmFuZ2U6IERhdGVUaW1lQ29udGV4dCwgcHJlZGVmaW5lZERhdGVGcm9tPzogUHJlZGVmaW5lZFRpbWVTcGFuKSB7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHsgdHlwZTogJ1RJTUVfQ09OVEVYVCcsIGRhdGE6IGRhdGVSYW5nZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2NhbERhdGUgPSBkYXRlUmFuZ2U7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoZGF0ZVJhbmdlKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50UHJlZGVmaW5lZFRpbWVTcGFuID1cbiAgICAgIHByZWRlZmluZWREYXRlRnJvbSB8fCB0aGlzLmdldEN1cnJlbnRQcmVkZWZpbmVkVGltZVNwYW4oZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCkge1xuICAgIGNvbnN0IGV2ZW50JCA9IHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmdldE9ic2VydmFibGU8VGltZUNvbnRleHRFdmVudD4oJ1RJTUVfQ09OVEVYVCcpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gZXZlbnQkLnN1YnNjcmliZSgoZGF0ZUNvbnRleHRDaGFuZ2U6IERhdGVUaW1lQ29udGV4dCkgPT4ge1xuICAgICAgdGhpcy5nbG9iYWxEYXRlID0gZGF0ZUNvbnRleHRDaGFuZ2U7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoZGF0ZUNvbnRleHRDaGFuZ2UpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWVzKGRhdGVDb250ZXh0Q2hhbmdlKTtcbiAgICAgIHRoaXMuc2V0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtVmFsdWVzKHZhbHVlOiBEYXRlVGltZUNvbnRleHQpIHtcbiAgICB0aGlzLm1vZGVsID0ge1xuICAgICAgZnJvbURhdGU6IHZhbHVlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICB0b0RhdGU6IHZhbHVlWzFdLnRvSVNPU3RyaW5nKClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUZyb21HbG9iYWxDb250ZXh0KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxEYXRlKCk6IERhdGVUaW1lQ29udGV4dCB7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRGcm9tID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtcy5EQVRFX0NPTlRFWFRfRlJPTV07XG4gICAgY29uc3QgZGF0ZUNvbnRleHRUbyA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbXMuREFURV9DT05URVhUX1RPXTtcblxuICAgIGlmICh0aGlzLmlzVmFsaWREYXRlUmFuZ2UoZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvKSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkYXRlQ29udGV4dEZyb20pLCBuZXcgRGF0ZShkYXRlQ29udGV4dFRvKV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLndpZGdldEV2ZW50U2VydmljZS5nZXRMYXN0VmFsdWUoJ1RJTUVfQ09OVEVYVCcpIHx8IHRoaXMuZGVmYXVsdERhdGU7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWREYXRlUmFuZ2Uoc3RyaW5naWZpZWREYXRlRnJvbTogc3RyaW5nLCBzdHJpbmdpZmllZERhdGVUbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVGcm9tKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVUbyk7XG4gICAgaWYgKFxuICAgICAgZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZUZyb20/LmdldFRpbWUoKSkgJiZcbiAgICAgIGRhdGVUbyBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlVG8/LmdldFRpbWUoKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRlRnJvbSA8IGRhdGVUbztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZGF0ZSBjb250ZXh0IGFzIHVybCBxdWVyeSBwYXJhbXMuXG4gICAqL1xuICBwcml2YXRlIHNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLCBzdHJpbmc+ID0ge1xuICAgICAgZGF0ZUNvbnRleHRGcm9tOiB0aGlzLmdsb2JhbERhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGRhdGVDb250ZXh0VG86IHRoaXMuZ2xvYmFsRGF0ZVsxXS50b0lTT1N0cmluZygpXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1F1ZXJ5UGFyYW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHsgZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvIH06IHsgW2tleSBpbiBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zXTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHRoaXMuaXNWYWxpZERhdGVSYW5nZShkYXRlQ29udGV4dEZyb20sIGRhdGVDb250ZXh0VG8pICYmXG4gICAgICAgICAgICAgICh0aGlzLmdsb2JhbERhdGVbMF0udG9JU09TdHJpbmcoKSAhPT0gZGF0ZUNvbnRleHRGcm9tIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxEYXRlWzFdLnRvSVNPU3RyaW5nKCkgIT09IGRhdGVDb250ZXh0VG8pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHsgZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvIH06IHsgW2tleSBpbiBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zXTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRlQ29udGV4dDogRGF0ZVRpbWVDb250ZXh0ID0gW25ldyBEYXRlKGRhdGVDb250ZXh0RnJvbSksIG5ldyBEYXRlKGRhdGVDb250ZXh0VG8pXTtcbiAgICAgICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHsgdHlwZTogJ1RJTUVfQ09OVEVYVCcsIGRhdGE6IGRhdGVDb250ZXh0IH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50UHJlZGVmaW5lZFRpbWVTcGFuKGRhdGVSYW5nZTogRGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgaWYgKGRhdGVSYW5nZVsxXS50b0lTT1N0cmluZygpICE9PSB0aGlzLmRlZmF1bHREYXRlWzFdLnRvSVNPU3RyaW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGltZVNwYW4gPSBkYXRlUmFuZ2VbMV0udmFsdWVPZigpIC0gZGF0ZVJhbmdlWzBdLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkVGltZVNwYW5MaXN0LmZpbmQoXG4gICAgICBwcmVkZWZUaW1lU3BhbiA9PiBwcmVkZWZUaW1lU3Bhbi50aW1lU3BhbkluTXMgPT09IHRpbWVTcGFuXG4gICAgKTtcbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgKm5nSWY9XCJpc0NvdXBsZWRcIlxuICBbZ3JvdXBJZF09XCIndGltZWNvbnRleHQnXCJcbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlVGltZVBpY2tlclwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0ZTogZ2xvYmFsRGF0ZSB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwiIWlzQ291cGxlZFwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVUaW1lUGlja2VyXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0ZTogbG9jYWxEYXRlIH1cIlxuPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUGlja2VyIGxldC1kYXRlPVwiZGF0ZVwiPlxuICA8bGFiZWw+e3sgJ1RpbWUgcmFuZ2UnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcGRvd24gbS1yLTRcIlxuICAgIGRyb3Bkb3duXG4gICAgI2Ryb3Bkb3duPVwiYnMtZHJvcGRvd25cIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGZvcm0tY29udHJvbCBsLWgtMSBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgdGl0bGU9XCJ7eyBkYXRlWzBdIHwgYzh5RGF0ZTogJ3Nob3J0JyB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6ICdzaG9ydCcgfX1cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGRhdGVbMF0gfCBjOHlEYXRlOiAnc2hvcnREYXRlJyB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6ICdzaG9ydERhdGUnIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldCBtLXItOCBtLWwtNFwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgKmRyb3Bkb3duTWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS0tZGF0ZS1yYW5nZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTZcIj5cbiAgICAgICAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiPjwvZm9ybWx5LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGQtZmxleCBnYXAtOCBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzZXQoKTsgZHJvcGRvd24uaXNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBSZXNldFxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKGNsaWNrKT1cImFwcGx5RGF0ZXRpbWVDb250ZXh0KCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZvcm0ucHJpc3RpbmUgJiYgZm9ybS51bnRvdWNoZWQpIHx8IGZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEFwcGx5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICA8c2VsZWN0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSYW5nZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW25nTW9kZWxdPVwiY3VycmVudFByZWRlZmluZWRUaW1lU3BhblwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJwcmVkZWZpbmVkRGF0ZUZyb21TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwidW5kZWZpbmVkXCIgZGlzYWJsZWQ9XCJ0cnVlXCI+e3sgJ0N1c3RvbSByYW5nZWB0aW1lYCcgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRhdGVGcm9tIG9mIHByZWRlZmluZWRUaW1lU3Bhbkxpc3RcIiBbbmdWYWx1ZV09XCJkYXRlRnJvbVwiPlxuICAgICAgICB7eyBkYXRlRnJvbS50aXRsZSB9fVxuICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGVjb3VwbGluZygpO1wiIHR5cGU9XCJidXR0b25cIj5cbiAgICA8aSBbYzh5SWNvbl09XCJpc0NvdXBsZWQgPyAnc2NoZWR1bGUxJyA6ICd0b2RheSdcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWwtNFwiPlxuICAgICAge3sgKGlzQ291cGxlZCA/IGRlY291cGxlVGltZUNvbnRleHRMYWJlbCA6IGNvdXBsZVRpbWVDb250ZXh0TGFiZWwpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4iXX0=
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbWUtY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL3dpZGdldC10aW1lLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUNMLHNCQUFzQixFQUV0QixZQUFZLEVBQ2IsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JDLE1BQU0sT0FBTywwQkFBMEI7SUE4Q3JDOztPQUVHO0lBQ0gsWUFDVSxrQkFBZ0QsRUFDaEQsY0FBdUMsRUFDdkMsTUFBYyxFQUNkLGNBQThCO1FBSDlCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBOEI7UUFDaEQsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFw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RCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDckMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FDM0QsQ0FBQztJQUNKLENBQUM7O3VIQXRTVSwwQkFBMEI7MkdBQTFCLDBCQUEwQix5UEF1QjFCLDZCQUE2QixnREN0RDFDLHMxRkEwRkE7MkZEM0RhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIsUUFFN0IsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUU7Mk1BTzFDLFdBQVc7c0JBRFYsS0FBSztnQkFlTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS21DLE1BQU07c0JBQS9DLFNBQVM7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVUaW1lQ29udGV4dCwgVGltZUNvbnRleHRFdmVudCB9IGZyb20gJy4vd2lkZ2V0LWNoYW5nZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLFxuICBQcmVkZWZpbmVkVGltZVNwYW4sXG4gIFRpbWVTcGFuSW5Nc1xufSBmcm9tICcuL3dpZGdldC10aW1lLWNvbnRleHQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktd2lkZ2V0LXRpbWUtY29udGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtdGltZS1jb250ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2QtZmxleCBhLWktY2VudGVyIGdhcC00JyB9XG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFRpbWVDb250ZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBjb21wb25lbnQgY2FuIGRlY291cGxlIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNhbkRlY291cGxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFRoZSBkYXRlcyB0byBzZXQgYXMgZGVmYXVsdCBbZnJvbSwgdG9dLlxuICAgKi9cbiAgZGVmYXVsdERhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgLyoqXG4gICAqIFRoZSBnbG9iYWwgdGltZSBjb250ZXh0IHZhbHVlLlxuICAgKi9cbiAgZ2xvYmFsRGF0ZTogRGF0ZVRpbWVDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBFbWl0cyBlYWNoIGNoYW5nZSBhcyBhbiBhcnJheSBvZiBkYXRlcyBbZnJvbSwgdG9dLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGRhdGVDb250ZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlVGltZUNvbnRleHQ+KCk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50KSBhY3Rpb246IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbG9jYWwgZGF0ZSBpZiBkZWNvdXBsZWQuXG4gICAqL1xuICBsb2NhbERhdGU6IERhdGVUaW1lQ29udGV4dDtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGltZSBjb250ZXh0IGlzIGJvdW5kIHRvIHRoZSBnbG9iYWwgc2NvcGUuXG4gICAqL1xuICBpc0NvdXBsZWQgPSB0cnVlO1xuICBkZWNvdXBsZVRpbWVDb250ZXh0TGFiZWwgPSBnZXR0ZXh0KCdEZWNvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgY291cGxlVGltZUNvbnRleHRMYWJlbCA9IGdldHRleHQoJ0NvdXBsZSB0aW1lIGNvbnRleHQnKTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW107XG4gIG1vZGVsOiB7XG4gICAgZnJvbURhdGU6IHN0cmluZztcbiAgICB0b0RhdGU6IHN0cmluZztcbiAgfTtcblxuICBwcmVkZWZpbmVkVGltZVNwYW5MaXN0OiBQcmVkZWZpbmVkVGltZVNwYW5bXTtcbiAgY3VycmVudFByZWRlZmluZWRUaW1lU3BhbjogUHJlZGVmaW5lZFRpbWVTcGFuID0gbnVsbDtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlIG9ubHkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHdpZGdldEV2ZW50U2VydmljZTogV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGRhc2hib2FyZENoaWxkOiBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMuc2V0UHJlZGVmaW5lZERhdGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZSBTdWJzY3JpYmluZyB0byB0aGUgZ2xvYmFsIGNvbnRleHQuXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbml0aWFsRGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbERhdGUoKTtcblxuICAgIHRoaXMuaW5pdEZvcm0oaW5pdGlhbERhdGUpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCk7XG4gICAgdGhpcy51cGRhdGUoaW5pdGlhbERhdGUpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9RdWVyeVBhcmFtc0NoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgQWRkaW5nIGN1c3RvbSBhY3Rpb25zLlxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbkRlY291cGxlKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZENoaWxkLmFkZEFjdGlvbnMoW3RoaXMuYWN0aW9uXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGNvdXBsaW5nIG9uIG9yIG9mZi5cbiAgICovXG4gIHRvZ2dsZURlY291cGxpbmcoKSB7XG4gICAgdGhpcy5pc0NvdXBsZWQgPSAhdGhpcy5pc0NvdXBsZWQ7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLnN1YnNjcmliZVRvR2xvYmFsQ29udGV4dCgpO1xuICAgICAgdGhpcy5nbG9iYWxEYXRlID0gdGhpcy53aWRnZXRFdmVudFNlcnZpY2UuZ2V0TGFzdFZhbHVlKCdUSU1FX0NPTlRFWFQnKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh0aGlzLmdsb2JhbERhdGUpO1xuICAgICAgdGhpcy5kYXRlQ29udGV4dENoYW5nZS5lbWl0KHRoaXMuZ2xvYmFsRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICAgICAgaWYgKCF0aGlzLmxvY2FsRGF0ZSkge1xuICAgICAgICB0aGlzLmxvY2FsRGF0ZSA9IHRoaXMuZ2xvYmFsRGF0ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlcyh0aGlzLmxvY2FsRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZm9ybSB2YWx1ZSB0byBnbG9iYWwgb3IgbG9jYWwgZGF0ZSBjb250ZXh0LlxuICAgKi9cbiAgYXBwbHlEYXRldGltZUNvbnRleHQoKSB7XG4gICAgdGhpcy51cGRhdGUoW25ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS5mcm9tRGF0ZSksIG5ldyBEYXRlKHRoaXMuZm9ybS52YWx1ZS50b0RhdGUpXSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGZvcm0gdG8gaW5pdGlhbCB2YWx1ZSBhbmQgdXBkYXRlIGNvbnRleHQuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHREYXRlKCk7XG4gICAgdGhpcy51cGRhdGVGb3JtVmFsdWVzKHRoaXMuZGVmYXVsdERhdGUpO1xuICAgIHRoaXMudXBkYXRlKHRoaXMuZGVmYXVsdERhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmUgdW5zdWJzY3JpYmluZy5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVGcm9tR2xvYmFsQ29udGV4dCgpO1xuICB9XG5cbiAgcHJlZGVmaW5lZERhdGVGcm9tU2VsZWN0ZWQoc2VsZWN0ZWREYXRlRnJvbTogUHJlZGVmaW5lZFRpbWVTcGFuKSB7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0RGF0ZSgpO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWREYXRlRnJvbSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5kZWZhdWx0RGF0ZVsxXS52YWx1ZU9mKCkgLSBzZWxlY3RlZERhdGVGcm9tLnRpbWVTcGFuSW5Nc1xuICAgICk7XG4gICAgdGhpcy51cGRhdGUoW2NhbGN1bGF0ZWREYXRlRnJvbSwgdGhpcy5kZWZhdWx0RGF0ZVsxXV0sIHNlbGVjdGVkRGF0ZUZyb20pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEZWZhdWx0RGF0ZSgpIHtcbiAgICBjb25zdCB0b2RheURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHllc3RlcmRheURhdGUgPSBuZXcgRGF0ZSh0b2RheURhdGUudmFsdWVPZigpIC0gMTAwMCAqIDYwICogNjAgKiAyNCk7XG4gICAgdGhpcy5kZWZhdWx0RGF0ZSA9IFt5ZXN0ZXJkYXlEYXRlLCB0b2RheURhdGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcmVkZWZpbmVkRGF0ZXMoKSB7XG4gICAgdGhpcy51cGRhdGVEZWZhdWx0RGF0ZSgpO1xuICAgIGNvbnN0IHRvZGF5RGF0ZUNvcHkgPSBuZXcgRGF0ZSh0aGlzLmRlZmF1bHREYXRlWzFdLnZhbHVlT2YoKSk7XG4gICAgY29uc3QgbGFzdE1vbnRoVGltZVNwYW4gPVxuICAgICAgdG9kYXlEYXRlQ29weS52YWx1ZU9mKCkgLVxuICAgICAgbmV3IERhdGUodG9kYXlEYXRlQ29weS5zZXRNb250aCh0b2RheURhdGVDb3B5LmdldE1vbnRoKCkgLSAxKSkudmFsdWVPZigpO1xuXG4gICAgdGhpcy5wcmVkZWZpbmVkVGltZVNwYW5MaXN0ID0gW1xuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBtaW51dGUnKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuTUlOVVRFIH0sXG4gICAgICB7IHRpdGxlOiBnZXR0ZXh0KCdMYXN0IGhvdXInKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuSE9VUiB9LFxuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBkYXknKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuREFZIH0sXG4gICAgICB7IHRpdGxlOiBnZXR0ZXh0KCdMYXN0IHdlZWsnKSwgdGltZVNwYW5Jbk1zOiBUaW1lU3BhbkluTXMuV0VFSyB9LFxuICAgICAgeyB0aXRsZTogZ2V0dGV4dCgnTGFzdCBtb250aCcpLCB0aW1lU3BhbkluTXM6IGxhc3RNb250aFRpbWVTcGFuIH1cbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGRhdGV0aW1lIHBpY2tlciBmb3JtIHdpdGggcHJvcGVyIGZpZWxkcyBhbmQgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBWYWx1ZSB0byBmaWxsIGZvcm0gd2l0aC5cbiAgICovXG4gIHByaXZhdGUgaW5pdEZvcm0oaW5pdGlhbFZhbHVlOiBEYXRlVGltZUNvbnRleHQpIHtcbiAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICB0aGlzLmZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2RhdGUtdGltZScsXG4gICAgICAgIGtleTogJ2Zyb21EYXRlJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Zyb21gZGF0ZWAnKVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMubWF4RGF0ZSc6IChtb2RlbDogYW55KSA9PiBtb2RlbD8udG9EYXRlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdkYXRlLXRpbWUnLFxuICAgICAgICBrZXk6ICd0b0RhdGUnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVG9gZGF0ZWAnKVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMubWluRGF0ZSc6IChtb2RlbDogYW55KSA9PiBtb2RlbD8uZnJvbURhdGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5tb2RlbCA9IHtcbiAgICAgIGZyb21EYXRlOiBpbml0aWFsVmFsdWVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIHRvRGF0ZTogaW5pdGlhbFZhbHVlWzFdLnRvSVNPU3RyaW5nKClcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgbmV3IFdpZGdldENoYW5nZUV2ZW50IGVpdGhlciBvbiB0aGUgbG9jYWwgY2hhbmdlIGVtaXR0ZXIgb3Igb24gdGhlIGdsb2JhbCBvbmUuXG4gICAqIEBwYXJhbSBkYXRlUmFuZ2UgVGhlIGV2ZW50IGRhdGEgdG8gc2VuZC5cbiAgICogQHBhcmFtIHByZWRlZmluZWREYXRlRnJvbSBUaW1lIHJhbmdlIHNlbGVjdGVkIGZyb20gZHJvcGRvd24uXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZShkYXRlUmFuZ2U6IERhdGVUaW1lQ29udGV4dCwgcHJlZGVmaW5lZERhdGVGcm9tPzogUHJlZGVmaW5lZFRpbWVTcGFuKSB7XG4gICAgaWYgKHRoaXMuaXNDb3VwbGVkKSB7XG4gICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHsgdHlwZTogJ1RJTUVfQ09OVEVYVCcsIGRhdGE6IGRhdGVSYW5nZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2NhbERhdGUgPSBkYXRlUmFuZ2U7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoZGF0ZVJhbmdlKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50UHJlZGVmaW5lZFRpbWVTcGFuID1cbiAgICAgIHByZWRlZmluZWREYXRlRnJvbSB8fCB0aGlzLmdldEN1cnJlbnRQcmVkZWZpbmVkVGltZVNwYW4oZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9HbG9iYWxDb250ZXh0KCkge1xuICAgIGNvbnN0IGV2ZW50JCA9IHRoaXMud2lkZ2V0RXZlbnRTZXJ2aWNlLmdldE9ic2VydmFibGU8VGltZUNvbnRleHRFdmVudD4oJ1RJTUVfQ09OVEVYVCcpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gZXZlbnQkLnN1YnNjcmliZSgoZGF0ZUNvbnRleHRDaGFuZ2U6IERhdGVUaW1lQ29udGV4dCkgPT4ge1xuICAgICAgdGhpcy5nbG9iYWxEYXRlID0gZGF0ZUNvbnRleHRDaGFuZ2U7XG4gICAgICB0aGlzLmRhdGVDb250ZXh0Q2hhbmdlLmVtaXQoZGF0ZUNvbnRleHRDaGFuZ2UpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmFsdWVzKGRhdGVDb250ZXh0Q2hhbmdlKTtcbiAgICAgIHRoaXMuc2V0RGF0ZUNvbnRleHRRdWVyeVBhcmFtcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGb3JtVmFsdWVzKHZhbHVlOiBEYXRlVGltZUNvbnRleHQpIHtcbiAgICB0aGlzLm1vZGVsID0ge1xuICAgICAgZnJvbURhdGU6IHZhbHVlWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICB0b0RhdGU6IHZhbHVlWzFdLnRvSVNPU3RyaW5nKClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUZyb21HbG9iYWxDb250ZXh0KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluaXRpYWxEYXRlKCk6IERhdGVUaW1lQ29udGV4dCB7XG4gICAgY29uc3QgZGF0ZUNvbnRleHRGcm9tID1cbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbRGF0ZUNvbnRleHRRdWVyeVBhcmFtcy5EQVRFX0NPTlRFWFRfRlJPTV07XG4gICAgY29uc3QgZGF0ZUNvbnRleHRUbyA9XG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zW0RhdGVDb250ZXh0UXVlcnlQYXJhbXMuREFURV9DT05URVhUX1RPXTtcblxuICAgIGlmICh0aGlzLmlzVmFsaWREYXRlUmFuZ2UoZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvKSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkYXRlQ29udGV4dEZyb20pLCBuZXcgRGF0ZShkYXRlQ29udGV4dFRvKV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLndpZGdldEV2ZW50U2VydmljZS5nZXRMYXN0VmFsdWUoJ1RJTUVfQ09OVEVYVCcpIHx8IHRoaXMuZGVmYXVsdERhdGU7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWREYXRlUmFuZ2Uoc3RyaW5naWZpZWREYXRlRnJvbTogc3RyaW5nLCBzdHJpbmdpZmllZERhdGVUbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVGcm9tKTtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZShzdHJpbmdpZmllZERhdGVUbyk7XG4gICAgaWYgKFxuICAgICAgZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAhaXNOYU4oZGF0ZUZyb20/LmdldFRpbWUoKSkgJiZcbiAgICAgIGRhdGVUbyBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlVG8/LmdldFRpbWUoKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRlRnJvbSA8IGRhdGVUbztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZGF0ZSBjb250ZXh0IGFzIHVybCBxdWVyeSBwYXJhbXMuXG4gICAqL1xuICBwcml2YXRlIHNldERhdGVDb250ZXh0UXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zLCBzdHJpbmc+ID0ge1xuICAgICAgZGF0ZUNvbnRleHRGcm9tOiB0aGlzLmdsb2JhbERhdGVbMF0udG9JU09TdHJpbmcoKSxcbiAgICAgIGRhdGVDb250ZXh0VG86IHRoaXMuZ2xvYmFsRGF0ZVsxXS50b0lTT1N0cmluZygpXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1F1ZXJ5UGFyYW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHsgZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvIH06IHsgW2tleSBpbiBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zXTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHRoaXMuaXNWYWxpZERhdGVSYW5nZShkYXRlQ29udGV4dEZyb20sIGRhdGVDb250ZXh0VG8pICYmXG4gICAgICAgICAgICAgICh0aGlzLmdsb2JhbERhdGVbMF0udG9JU09TdHJpbmcoKSAhPT0gZGF0ZUNvbnRleHRGcm9tIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxEYXRlWzFdLnRvSVNPU3RyaW5nKCkgIT09IGRhdGVDb250ZXh0VG8pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHsgZGF0ZUNvbnRleHRGcm9tLCBkYXRlQ29udGV4dFRvIH06IHsgW2tleSBpbiBEYXRlQ29udGV4dFF1ZXJ5UGFyYW1zXTogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRlQ29udGV4dDogRGF0ZVRpbWVDb250ZXh0ID0gW25ldyBEYXRlKGRhdGVDb250ZXh0RnJvbSksIG5ldyBEYXRlKGRhdGVDb250ZXh0VG8pXTtcbiAgICAgICAgICB0aGlzLndpZGdldEV2ZW50U2VydmljZS5lbWl0KHsgdHlwZTogJ1RJTUVfQ09OVEVYVCcsIGRhdGE6IGRhdGVDb250ZXh0IH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50UHJlZGVmaW5lZFRpbWVTcGFuKGRhdGVSYW5nZTogRGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgaWYgKGRhdGVSYW5nZVsxXS50b0lTT1N0cmluZygpICE9PSB0aGlzLmRlZmF1bHREYXRlWzFdLnRvSVNPU3RyaW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGltZVNwYW4gPSBkYXRlUmFuZ2VbMV0udmFsdWVPZigpIC0gZGF0ZVJhbmdlWzBdLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWZpbmVkVGltZVNwYW5MaXN0LmZpbmQoXG4gICAgICBwcmVkZWZUaW1lU3BhbiA9PiBwcmVkZWZUaW1lU3Bhbi50aW1lU3BhbkluTXMgPT09IHRpbWVTcGFuXG4gICAgKTtcbiAgfVxufVxuIiwiPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgKm5nSWY9XCJpc0NvdXBsZWRcIlxuICBbZ3JvdXBJZF09XCIndGltZWNvbnRleHQnXCJcbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlVGltZVBpY2tlclwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0ZTogZ2xvYmFsRGF0ZSB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwiIWlzQ291cGxlZFwiXG4gIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVUaW1lUGlja2VyXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0ZTogbG9jYWxEYXRlIH1cIlxuPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUGlja2VyIGxldC1kYXRlPVwiZGF0ZVwiPlxuICA8bGFiZWw+e3sgJ1RpbWUgcmFuZ2UnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcGRvd24gbS1yLTRcIlxuICAgIGRyb3Bkb3duXG4gICAgI2Ryb3Bkb3duPVwiYnMtZHJvcGRvd25cIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIGZvcm0tY29udHJvbCBsLWgtMSBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgdGl0bGU9XCJ7eyBkYXRlWzBdIHwgYzh5RGF0ZTogJ3Nob3J0JyB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6ICdzaG9ydCcgfX1cIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGRhdGVbMF0gfCBjOHlEYXRlOiAnc2hvcnREYXRlJyB9fSDigJQge3sgZGF0ZVsxXSB8IGM4eURhdGU6ICdzaG9ydERhdGUnIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldCBtLXItOCBtLWwtNFwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgKmRyb3Bkb3duTWVudSBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS0tZGF0ZS1yYW5nZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTZcIj5cbiAgICAgICAgPGZvcm1seS1mb3JtIFtmb3JtXT1cImZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiPjwvZm9ybWx5LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IGQtZmxleCBnYXAtOCBzZXBhcmF0b3ItdG9wXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzZXQoKTsgZHJvcGRvd24uaXNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBSZXNldFxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgKGNsaWNrKT1cImFwcGx5RGF0ZXRpbWVDb250ZXh0KCk7IGRyb3Bkb3duLmlzT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZvcm0ucHJpc3RpbmUgJiYgZm9ybS51bnRvdWNoZWQpIHx8IGZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEFwcGx5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICA8c2VsZWN0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSYW5nZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW25nTW9kZWxdPVwiY3VycmVudFByZWRlZmluZWRUaW1lU3BhblwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJwcmVkZWZpbmVkRGF0ZUZyb21TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwidW5kZWZpbmVkXCIgZGlzYWJsZWQ9XCJ0cnVlXCI+e3sgJ0N1c3RvbSByYW5nZWB0aW1lYCcgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRhdGVGcm9tIG9mIHByZWRlZmluZWRUaW1lU3Bhbkxpc3RcIiBbbmdWYWx1ZV09XCJkYXRlRnJvbVwiPlxuICAgICAgICB7eyBkYXRlRnJvbS50aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRGVjb3VwbGluZygpO1wiIHR5cGU9XCJidXR0b25cIj5cbiAgICA8aSBbYzh5SWNvbl09XCJpc0NvdXBsZWQgPyAnc2NoZWR1bGUxJyA6ICd0b2RheSdcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJtLWwtNFwiPlxuICAgICAge3sgKGlzQ291cGxlZCA/IGRlY291cGxlVGltZUNvbnRleHRMYWJlbCA6IGNvdXBsZVRpbWVDb250ZXh0TGFiZWwpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4iXX0=
|
|
@@ -59,6 +59,7 @@ export class PackageDetailsComponent {
|
|
|
59
59
|
this.isChangingAvailability = true;
|
|
60
60
|
pckg = await this.packageAvailability.askIfAvailabilityShouldBeSetTo(pckg, newAvailability);
|
|
61
61
|
await this.loadData(pckg);
|
|
62
|
+
this.contextRouteService.setContext(this.activatedRoute, pckg);
|
|
62
63
|
this.isChangingAvailability = false;
|
|
63
64
|
}
|
|
64
65
|
async loadData(pckg) {
|
|
@@ -111,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
111
112
|
type: Component,
|
|
112
113
|
args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label for=\"availability\" translate>Availability</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"availability\"\n class=\"form-control\"\n [ngModel]=\"package.availability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option *ngFor=\"let availability of availabilities\" [ngValue]=\"availability.value\">\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i c8yIcon=\"big-parcel\" class=\"c8y-icon-duocolor icon-48\"></i>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n [delay]=\"500\"\n >\n <span [ngClass]=\"appState?.class\" class=\"label\">\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n type=\"button\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n [delay]=\"500\"\n >\n <span [ngClass]=\"packageContentState?.class\" class=\"label\">\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p *ngIf=\"!description\" class=\"text-muted\">\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div *ngIf=\"isPackageBlueprint\" class=\"col-3 text-right-md p-r-md-40\">\n <button (click)=\"deploy()\" class=\"btn btn-primary btn-sm\">\n <i c8yIcon=\"output\" class=\"m-r-4\"></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n *ngIf=\"!markdown\"\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of "README", add the file "README.md" to the package.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n class=\"markdown-content\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div class=\"p-16\" *ngIf=\"(exportedPlugins$ | async).length === 0\">\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n" }]
|
|
113
114
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FetchClient }, { type: i3.WizardModalService }, { type: i4.EcosystemService }, { type: i3.ContextRouteService }, { type: i3.PluginsService }, { type: i5.PackageAvailabilityService }, { type: i3.AppStateService }, { type: i3.PluginsService }]; } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsV0FBVyxFQUlaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFFTCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxXQUFXLEVBQ1gsY0FBYyxFQUVkLGtCQUFrQixFQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNwQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQU03RSxNQUFNLE9BQU8sdUJBQXVCO0lBMEJsQyxZQUNVLGNBQThCLEVBQzlCLE1BQW1CLEVBQ25CLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLG1CQUErQyxFQUMvQyxFQUFtQixFQUNuQixhQUE2QjtRQVI3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQix1QkFBa0IsR0FBbEIsa0JB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Q0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE1BQXNCLENBQUM7UUFDM0IsTUFBTSxPQUFPLEdBQWtCO1lBQzdCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFDRixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3pELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQztJQUM5QyxDQUFDOztvSEE1R1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMkRDbENwQyw0dU1BMktBOzJGRHpJYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LFxuICBGZXRjaENsaWVudCxcbiAgSUFwcGxpY2F0aW9uLFxuICBJRmV0Y2hPcHRpb25zLFxuICBJRmV0Y2hSZXNwb25zZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblBsdWdpbixcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBQYWNrYWdlVHlwZSxcbiAgUGx1Z2luc1NlcnZpY2UsXG4gIFByb3BlcnRpZXNMaXN0SXRlbSxcbiAgV2l6YXJkTW9kYWxTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU3RhdGUsXG4gIEVjb3N5c3RlbVNlcnZpY2UsXG4gIEVjb3N5c3RlbVdpemFyZHMsXG4gIHBhY2thZ2VQcm9wZXJ0aWVzLFxuICBQQUNLQUdFX1RZUEVfTEFCRUxTXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBQYWNrYWdlQXZhaWxhYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3BhY2thZ2UtYXZhaWxhYmlsaXR5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhY2thZ2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBtYXJrZG93bjogc3RyaW5nO1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIHBhY2thZ2U6IElBcHBsaWNhdGlvbiA9IHt9O1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFwcFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBpc1BhY2thZ2VCbHVlcHJpbnQ6IGJvb2xlYW47XG4gIGV4cG9ydGVkUGx1Z2lucyQ6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvblBsdWdpbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuICBhdmFpbGFiaWxpdGllcyA9IFtcbiAgICB7IGxhYmVsOiBnZXR0ZXh0KCdQcml2YXRlYHBhY2thZ2UgYXZhaWxhYmlsaXR5YCcpLCB2YWx1ZTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkuUFJJVkFURSB9LFxuICAgIHsgbGFiZWw6IGdldHRleHQoJ01hcmtldGBwYWNrYWdlIGF2YWlsYWJpbGl0eWAnKSwgdmFsdWU6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5Lk1BUktFVCB9LFxuICAgIHsgbGFiZWw6IGdldHRleHQoJ1NoYXJlZGBwYWNrYWdlIGF2YWlsYWJpbGl0eWAnKSwgdmFsdWU6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LlNIQVJFRCB9XG4gIF07XG4gIGlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSBmYWxzZTtcbiAgaXNPd25lZEJ5Q3VycmVudFRlbmFudCA9IGZhbHNlO1xuICBpc0FsbG93ZWRUb0NyZWF0ZVN1YnRlbmFudHMgPSBmYWxzZTtcbiAgcGFja2FnZUNvbnRlbnRTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgcGFja2FnZVR5cGU6IFBhY2thZ2VUeXBlO1xuXG4gIHJlYWRvbmx5IHBhY2thZ2VUeXBlTGFiZWxzID0gUEFDS0FHRV9UWVBFX0xBQkVMUztcbiAgcmVhZG9ubHkgUEFDS0FHRV9UWVBFID0gUGFja2FnZVR5cGU7XG4gIHJlYWRvbmx5IHBhY2thZ2VQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnM6IGFueSA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfTtcbiAgcHJpdmF0ZSBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IDQwNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZUF2YWlsYWJpbGl0eTogUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luU2VydmljZTogUGx1Z2luc1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzID0gISF0aGlzLnVpLmN1cnJlbnRUZW5hbnQudmFsdWU/LmFsbG93Q3JlYXRlVGVuYW50cztcbiAgICBhd2FpdCB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBkZXBsb3koKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBhbnkgPSB7XG4gICAgICB3aXphcmRDb25maWc6IHt9LFxuICAgICAgaWQ6IEVjb3N5c3RlbVdpemFyZHMuQkxVRVBSSU5UX0RFUExPWU1FTlQsXG4gICAgICBwYWNrYWdlOiB0aGlzLnBhY2thZ2VcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsT3B0aW9uczogTW9kYWxPcHRpb25zID0geyBpbml0aWFsU3RhdGUgfTtcbiAgICB0aGlzLndpemFyZE1vZGFsU2VydmljZS5zaG93KG1vZGFsT3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB0b2dnbGVQYWNrYWdlQXZhaWxhYmlsaXR5KHBja2c6IElBcHBsaWNhdGlvbiwgbmV3QXZhaWxhYmlsaXR5OiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSkge1xuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IHRydWU7XG4gICAgcGNrZyA9IGF3YWl0IHRoaXMucGFja2FnZUF2YWlsYWJpbGl0eS5hc2tJZkF2YWlsYWJpbGl0eVNob3VsZEJlU2V0VG8ocGNrZywgbmV3QXZhaWxhYmlsaXR5KTtcbiAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHBja2cpO1xuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwY2tnPzogSUFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5wYWNrYWdlID0gcGNrZ1xuICAgICAgPyBwY2tnXG4gICAgICA6IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5wYWNrYWdlQ29udGVudFN0YXRlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldFBhY2thZ2VDb250ZW50U3RhdGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLnBhY2thZ2VUeXBlID0gdGhpcy5wbHVnaW5TZXJ2aWNlLmdldFBhY2thZ2VUeXBlKHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5wYWNrYWdlPy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLnBhY2thZ2U/Lm1hbmlmZXN0Py5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLm1hcmtkb3duID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlQ29udGVudCgpO1xuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuZ2V0QmFzZVVybCgpO1xuICAgIHRoaXMuYXBwU3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwU3RhdGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmlzUGFja2FnZUJsdWVwcmludCA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5pc1BhY2thZ2VCbHVlcHJpbnQodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmlzT3duZWRCeUN1cnJlbnRUZW5hbnQgPVxuICAgICAgdGhpcy5wYWNrYWdlPy5vd25lcj8udGVuYW50Py5pZCA9PT0gdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5uYW1lO1xuICAgIHRoaXMuZXh0cmFjdFBhY2thZ2VNRkV4cG9ydHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFBhY2thZ2VNRkV4cG9ydHMoKSB7XG4gICAgY29uc3QgZXhwb3J0cyA9IHRoaXMucGx1Z2luc1NlcnZpY2UuZ2V0TUZFeHBvcnRzKHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy5leHBvcnRlZFBsdWdpbnMkLm5leHQoZXhwb3J0cyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGVDb250ZW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVhZG1lRmlsZSA9IGF3YWl0IHRoaXMuZ2V0UmVhZG1lRmlsZSgpO1xuXG4gICAgaWYgKHJlYWRtZUZpbGUuc3RhdHVzID09PSAyMDApIHtcbiAgICAgIHJldHVybiBhd2FpdCByZWFkbWVGaWxlLnRleHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWFkbWVGaWxlKCk6IFByb21pc2U8SUZldGNoUmVzcG9uc2U+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgbGV0IHJlc3VsdDogSUZldGNoUmVzcG9uc2U7XG4gICAgY29uc3Qgb3B0aW9uczogSUZldGNoT3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnNcbiAgICB9O1xuICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAke2Jhc2VVcmx9UkVBRE1FLm1kYCwgb3B0aW9ucyk7XG5cbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5zdGF0dXMgPT09IHRoaXMuTk9UX0ZPVU5EX0VSUk9SX0NPREUpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAke2Jhc2VVcmx9cmVhZG1lLm1kYCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldEJhc2VVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYC9hcHBzLyR7dGhpcy5wYWNrYWdlLmNvbnRleHRQYXRofS9gO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IG5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtpY29uXT1cIidjOHktYXRvbSdcIiBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2JpZy1wYXJjZWwnXCJcbiAgICBbbGFiZWxdPVwiJ0V4dGVuc2lvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInZWNvc3lzdGVtL2V4dGVuc2lvbi9leHRlbnNpb25zJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCJuYW1lIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmNcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCInRXh0ZW5zaW9uIHBhY2thZ2UnIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgcGxhY2VtZW50PVwicmlnaHRcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4gICpuZ0lmPVwiaXNPd25lZEJ5Q3VycmVudFRlbmFudCAmJiBpc0FsbG93ZWRUb0NyZWF0ZVN1YnRlbmFudHNcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJhdmFpbGFiaWxpdHlcIiB0cmFuc2xhdGU+QXZhaWxhYmlsaXR5PC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGlkPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgW25nTW9kZWxdPVwicGFja2FnZS5hdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0NoYW5naW5nQXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVQYWNrYWdlQXZhaWxhYmlsaXR5KHBhY2thZ2UsICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIGF2YWlsYWJpbGl0aWVzXCIgW25nVmFsdWVdPVwiYXZhaWxhYmlsaXR5LnZhbHVlXCI+XG4gICAgICAgICAgICB7eyBhdmFpbGFiaWxpdHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBkLWdyaWQgZ3JpZF9fY29sLS04LTQtLW1kIGdyaWRfX3Jvdy0tZml0LWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgZ3JpZF9fY29sLS1mdWxsc3BhbiBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTI0IHAtYi0yNCBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cInBhY2thZ2VUeXBlICE9PSBQQUNLQUdFX1RZUEUuQ1VTVE9NXCJcbiAgICAgICAgY2xhc3M9XCJjYXJkX19yaWJib24gYnRuLWNsZWFuXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAocGFja2FnZS5sYWJlbCB8IHRyYW5zbGF0ZVBhY2thZ2VMYWJlbCkgK1xuICAgICAgICAgICc6ICcgK1xuICAgICAgICAgIChwYWNrYWdlVHlwZUxhYmVsc1twYWNrYWdlVHlwZV0udG9vbHRpcCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgXCJcbiAgICAgICAgdG9vbHRpcD1cInt7IHBhY2thZ2VUeXBlTGFiZWxzW3BhY2thZ2VUeXBlXS50b29sdGlwIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWluZm8nOiBwYWNrYWdlVHlwZSA9PT0gUEFDS0FHRV9UWVBFLkNPTU1VTklUWSxcbiAgICAgICAgICAgICdiZy1wcmltYXJ5JzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5PRkZJQ0lBTFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFja2FnZS5sYWJlbCB8IHRyYW5zbGF0ZVBhY2thZ2VMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImJpZy1wYXJjZWxcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIj48L2k+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAoYXBwU3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlKSArICc6ICcgKyAoYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImFwcFN0YXRlPy5jbGFzc1wiIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgYXBwU3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAocGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAgICAgJzogJyArXG4gICAgICAgICAgICAgIChwYWNrYWdlQ29udGVudFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LmNsYXNzXCIgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IGNvbC0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtODBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LWJvbGQgbS1iLThcIj57eyBuYW1lIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCJkZXNjcmlwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8cCAqbmdJZj1cIiFkZXNjcmlwdGlvblwiIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgICAgIDxlbT57eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlLicgfCB0cmFuc2xhdGUgfX08L2VtPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1BhY2thZ2VCbHVlcHJpbnRcIiBjbGFzcz1cImNvbC0zIHRleHQtcmlnaHQtbWQgcC1yLW1kLTQwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlcGxveSgpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm91dHB1dFwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0RlcGxveSBhcHBsaWNhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJwYWNrYWdlLm1hbmlmZXN0XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJwYWNrYWdlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgID48L2M4eS1wcm9wZXJ0aWVzLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgJ0V4dGVuc2lvbiBwYWNrYWdlIG92ZXJ2aWV3JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTZcIj5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgKm5nSWY9XCIhbWFya2Rvd25cIlxuICAgICAgICBbaWNvbl09XCIndXNlci1tYW51YWwnXCJcbiAgICAgICAgW3RpdGxlXT1cIidObyBSRUFETUUubWQgZm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICdUbyB2aWV3IHRoZSBjb250ZW50cyBvZiAmcXVvdDtSRUFETUUmcXVvdDssIGFkZCB0aGUgZmlsZSAmcXVvdDtSRUFETUUubWQmcXVvdDsgdG8gdGhlIHBhY2thZ2UuJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIFtpbm5lckhUTUxdPVwibWFya2Rvd24gfCBtYXJrZG93blRvSHRtbDogeyBiYXNlVXJsIH0gfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1ib3R0b20gdmlzaWJsZS1zbSB2aXNpYmxlLXhzXCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgZC1mbGV4IGQtY29sXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdQYWNrYWdlIHBsdWdpbnMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1sZWZ0IGZsZXgtZ3Jvd1wiPlxuICAgICAgPCEtLSBlbXB0eSBzdGF0ZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2XCIgKm5nSWY9XCIoZXhwb3J0ZWRQbHVnaW5zJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwbHVnaW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoaXMgcGFja2FnZSBkb2VzblxcJ3QgY29udGFpbiBwbHVnaW5zLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktcGx1Z2luLWxpc3RcbiAgICAgICAgW3BsdWdpbnMkXT1cImV4cG9ydGVkUGx1Z2lucyRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtpbnN0YWxsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3BhY2thZ2VdPVwicGFja2FnZVwiXG4gICAgICA+PC9jOHktcGx1Z2luLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsV0FBVyxFQUlaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFFTCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxXQUFXLEVBQ1gsY0FBYyxFQUVkLGtCQUFrQixFQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNwQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQU03RSxNQUFNLE9BQU8sdUJBQXVCO0lBMEJsQyxZQUNVLGNBQThCLEVBQzlCLE1BQW1CLEVBQ25CLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLG1CQUErQyxFQUMvQyxFQUFtQixFQUNuQixhQUE2QjtRQVI3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQix1QkFBa0IsR0FBbEIsa0JB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O1lBQzdCLE9BQU8sTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFzQixDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7b0hBN0dVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ2xDcEMsNHVNQTJLQTsyRkR6SWEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBcHBsaWNhdGlvbixcbiAgSUZldGNoT3B0aW9ucyxcbiAgSUZldGNoUmVzcG9uc2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFdpemFyZE1vZGFsU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblN0YXRlLFxuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBFY29zeXN0ZW1XaXphcmRzLFxuICBwYWNrYWdlUHJvcGVydGllcyxcbiAgUEFDS0FHRV9UWVBFX0xBQkVMU1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Vjb3N5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9wYWNrYWdlLWF2YWlsYWJpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWFya2Rvd246IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb24gPSB7fTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgaXNQYWNrYWdlQmx1ZXByaW50OiBib29sZWFuO1xuICBleHBvcnRlZFBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgYXZhaWxhYmlsaXRpZXMgPSBbXG4gICAgeyBsYWJlbDogZ2V0dGV4dCgnUHJpdmF0ZWBwYWNrYWdlIGF2YWlsYWJpbGl0eWAnKSwgdmFsdWU6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5LlBSSVZBVEUgfSxcbiAgICB7IGxhYmVsOiBnZXR0ZXh0KCdNYXJrZXRgcGFja2FnZSBhdmFpbGFiaWxpdHlgJyksIHZhbHVlOiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5NQVJLRVQgfSxcbiAgICB7IGxhYmVsOiBnZXR0ZXh0KCdTaGFyZWRgcGFja2FnZSBhdmFpbGFiaWxpdHlgJyksIHZhbHVlOiBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eS5TSEFSRUQgfVxuICBdO1xuICBpc0NoYW5naW5nQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG4gIGlzT3duZWRCeUN1cnJlbnRUZW5hbnQgPSBmYWxzZTtcbiAgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzID0gZmFsc2U7XG4gIHBhY2thZ2VDb250ZW50U3RhdGU6IEFwcGxpY2F0aW9uU3RhdGU7XG4gIHBhY2thZ2VUeXBlOiBQYWNrYWdlVHlwZTtcblxuICByZWFkb25seSBwYWNrYWdlVHlwZUxhYmVscyA9IFBBQ0tBR0VfVFlQRV9MQUJFTFM7XG4gIHJlYWRvbmx5IFBBQ0tBR0VfVFlQRSA9IFBhY2thZ2VUeXBlO1xuICByZWFkb25seSBwYWNrYWdlUHJvcGVydGllczogUHJvcGVydGllc0xpc3RJdGVtW10gPSBwYWNrYWdlUHJvcGVydGllcztcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJzOiBhbnkgPSB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9tYXJrZG93bicsIHJlc3BvbnNlVHlwZTogJ2Jsb2InIH07XG4gIHByaXZhdGUgTk9UX0ZPVU5EX0VSUk9SX0NPREUgPSA0MDQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgd2l6YXJkTW9kYWxTZXJ2aWNlOiBXaXphcmRNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIHBhY2thZ2VBdmFpbGFiaWxpdHk6IFBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9ICEhdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5hbGxvd0NyZWF0ZVRlbmFudHM7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgZGVwbG95KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgd2l6YXJkQ29uZmlnOiB7fSxcbiAgICAgIGlkOiBFY29zeXN0ZW1XaXphcmRzLkJMVUVQUklOVF9ERVBMT1lNRU5ULFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwY2tnOiBJQXBwbGljYXRpb24sIG5ld0F2YWlsYWJpbGl0eTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkpIHtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSB0cnVlO1xuICAgIHBja2cgPSBhd2FpdCB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdHkuYXNrSWZBdmFpbGFiaWxpdHlTaG91bGRCZVNldFRvKHBja2csIG5ld0F2YWlsYWJpbGl0eSk7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YShwY2tnKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2Uuc2V0Q29udGV4dCh0aGlzLmFjdGl2YXRlZFJvdXRlLCBwY2tnKTtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGEocGNrZz86IElBcHBsaWNhdGlvbikge1xuICAgIHRoaXMucGFja2FnZSA9IHBja2dcbiAgICAgID8gcGNrZ1xuICAgICAgOiB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk/LmNvbnRleHREYXRhO1xuICAgIHRoaXMucGFja2FnZUNvbnRlbnRTdGF0ZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRQYWNrYWdlQ29udGVudFN0YXRlKHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy5wYWNrYWdlVHlwZSA9IHRoaXMucGx1Z2luU2VydmljZS5nZXRQYWNrYWdlVHlwZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMucGFja2FnZT8ubmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5wYWNrYWdlPy5tYW5pZmVzdD8uZGVzY3JpcHRpb247XG4gICAgdGhpcy5tYXJrZG93biA9IGF3YWl0IHRoaXMuZ2V0UmVhZG1lRmlsZUNvbnRlbnQoKTtcbiAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICB0aGlzLmFwcFN0YXRlID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcFN0YXRlKHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy5pc1BhY2thZ2VCbHVlcHJpbnQgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuaXNQYWNrYWdlQmx1ZXByaW50KHRoaXMucGFja2FnZSk7XG4gICAgdGhpcy5pc093bmVkQnlDdXJyZW50VGVuYW50ID1cbiAgICAgIHRoaXMucGFja2FnZT8ub3duZXI/LnRlbmFudD8uaWQgPT09IHRoaXMudWkuY3VycmVudFRlbmFudC52YWx1ZT8ubmFtZTtcbiAgICB0aGlzLmV4dHJhY3RQYWNrYWdlTUZFeHBvcnRzKCk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RQYWNrYWdlTUZFeHBvcnRzKCkge1xuICAgIGNvbnN0IGV4cG9ydHMgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmdldE1GRXhwb3J0cyh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuZXhwb3J0ZWRQbHVnaW5zJC5uZXh0KGV4cG9ydHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWFkbWVGaWxlQ29udGVudCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlYWRtZUZpbGUgPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGUoKTtcblxuICAgIGlmIChyZWFkbWVGaWxlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVhZG1lRmlsZS50ZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVhZG1lRmlsZSgpOiBQcm9taXNlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZ2V0QmFzZVVybCgpO1xuICAgIGxldCByZXN1bHQ6IElGZXRjaFJlc3BvbnNlO1xuICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzXG4gICAgfTtcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgJHtiYXNlVXJsfVJFQURNRS5tZGAsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3RhdHVzID09PSB0aGlzLk5PVF9GT1VORF9FUlJPUl9DT0RFKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaChgJHtiYXNlVXJsfXJlYWRtZS5tZGAsIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAvYXBwcy8ke3RoaXMucGFja2FnZS5jb250ZXh0UGF0aH0vYDtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyBuYW1lIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbaWNvbl09XCInYzh5LWF0b20nXCIgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidiaWctcGFyY2VsJ1wiXG4gICAgW2xhYmVsXT1cIidFeHRlbnNpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwibmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ0V4dGVuc2lvbiBwYWNrYWdlJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuICAqbmdJZj1cImlzT3duZWRCeUN1cnJlbnRUZW5hbnQgJiYgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgZm9yPVwiYXZhaWxhYmlsaXR5XCIgdHJhbnNsYXRlPkF2YWlsYWJpbGl0eTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBpZD1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInBhY2thZ2UuYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwYWNrYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGF2YWlsYWJpbGl0eSBvZiBhdmFpbGFiaWxpdGllc1wiIFtuZ1ZhbHVlXT1cImF2YWlsYWJpbGl0eS52YWx1ZVwiPlxuICAgICAgICAgICAge3sgYXZhaWxhYmlsaXR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgZC1ncmlkIGdyaWRfX2NvbC0tOC00LS1tZCBncmlkX19yb3ctLWZpdC1hdXRvXCI+XG4gIDxkaXYgY2xhc3M9XCJiZy1sZXZlbC0xIGdyaWRfX2NvbC0tZnVsbHNwYW4gc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0yNCBwLWItMjQgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJwYWNrYWdlVHlwZSAhPT0gUEFDS0FHRV9UWVBFLkNVU1RPTVwiXG4gICAgICAgIGNsYXNzPVwiY2FyZF9fcmliYm9uIGJ0bi1jbGVhblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgKHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwpICtcbiAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAocGFja2FnZVR5cGVMYWJlbHNbcGFja2FnZVR5cGVdLnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIHRvb2x0aXA9XCJ7eyBwYWNrYWdlVHlwZUxhYmVsc1twYWNrYWdlVHlwZV0udG9vbHRpcCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdiZy1pbmZvJzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5DT01NVU5JVFksXG4gICAgICAgICAgICAnYmctcHJpbWFyeSc6IHBhY2thZ2VUeXBlID09PSBQQUNLQUdFX1RZUEUuT0ZGSUNJQUxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxpIGM4eUljb249XCJiaWctcGFyY2VsXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4XCI+PC9pPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgKGFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cImFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJhcHBTdGF0ZT8uY2xhc3NcIiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7IGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKHBhY2thZ2VDb250ZW50U3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlKSArXG4gICAgICAgICAgICAgICc6ICcgK1xuICAgICAgICAgICAgICAocGFja2FnZUNvbnRlbnRTdGF0ZT8udG9vbHRpcCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJwYWNrYWdlQ29udGVudFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJwYWNrYWdlQ29udGVudFN0YXRlPy5jbGFzc1wiIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTgwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgdGV4dC1ib2xkIG0tYi04XCI+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCIhZGVzY3JpcHRpb25cIiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgICAgICA8ZW0+e3sgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZS4nIHwgdHJhbnNsYXRlIH19PC9lbT5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNQYWNrYWdlQmx1ZXByaW50XCIgY2xhc3M9XCJjb2wtMyB0ZXh0LXJpZ2h0LW1kIHAtci1tZC00MFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZXBsb3koKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJvdXRwdXRcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZXBsb3kgYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxjOHktcHJvcGVydGllcy1saXN0XG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicGFja2FnZS5tYW5pZmVzdFwiXG4gICAgICAgICAgICAgICAgW3Byb3BlcnRpZXNdPVwicGFja2FnZVByb3BlcnRpZXNcIlxuICAgICAgICAgICAgICA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdFeHRlbnNpb24gcGFja2FnZSBvdmVydmlldycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWwtMTYgcC1yLTE2XCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICpuZ0lmPVwiIW1hcmtkb3duXCJcbiAgICAgICAgW2ljb25dPVwiJ3VzZXItbWFudWFsJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gUkVBRE1FLm1kIGZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnVG8gdmlldyB0aGUgY29udGVudHMgb2YgJnF1b3Q7UkVBRE1FJnF1b3Q7LCBhZGQgdGhlIGZpbGUgJnF1b3Q7UkVBRE1FLm1kJnF1b3Q7IHRvIHRoZSBwYWNrYWdlLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPGRpdlxuICAgICAgICBbaW5uZXJIVE1MXT1cIm1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItYm90dG9tIHZpc2libGUtc20gdmlzaWJsZS14c1wiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnUGFja2FnZSBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItbGVmdCBmbGV4LWdyb3dcIj5cbiAgICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiKGV4cG9ydGVkUGx1Z2lucyQgfCBhc3luYykubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICBbaWNvbl09XCIncGx1Z2luJ1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidObyBwbHVnaW5zIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cIidUaGlzIHBhY2thZ2UgZG9lc25cXCd0IGNvbnRhaW4gcGx1Z2lucy4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXBsdWdpbi1saXN0XG4gICAgICAgIFtwbHVnaW5zJF09XCJleHBvcnRlZFBsdWdpbnMkXCJcbiAgICAgICAgW3NlbGVjdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICBbaW5zdGFsbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtwYWNrYWdlXT1cInBhY2thZ2VcIlxuICAgICAgPjwvYzh5LXBsdWdpbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1716,6 +1716,7 @@ class PackageDetailsComponent {
|
|
|
1716
1716
|
this.isChangingAvailability = true;
|
|
1717
1717
|
pckg = yield this.packageAvailability.askIfAvailabilityShouldBeSetTo(pckg, newAvailability);
|
|
1718
1718
|
yield this.loadData(pckg);
|
|
1719
|
+
this.contextRouteService.setContext(this.activatedRoute, pckg);
|
|
1719
1720
|
this.isChangingAvailability = false;
|
|
1720
1721
|
});
|
|
1721
1722
|
}
|