@porscheinformatik/clr-addons 18.1.3 → 18.1.5

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.
@@ -9,6 +9,8 @@ export declare class ClrDateFilterComponent<T extends {
9
9
  private clrPopoverEventsService;
10
10
  private nestedProp;
11
11
  timeActive: boolean;
12
+ dateValidationError: string;
13
+ valError: boolean;
12
14
  set property(value: string);
13
15
  get property(): string;
14
16
  constructor(commonStrings: ClrCommonStringsService, clrPopoverEventsService: ClrPopoverEventsService, filterContainer: ClrDatagridFilter);
@@ -50,6 +52,7 @@ export declare class ClrDateFilterComponent<T extends {
50
52
  get state(): any;
51
53
  clearFilter(): void;
52
54
  equals(other: ClrDatagridFilterInterface<T, any>): boolean;
55
+ private validateDates;
53
56
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrDateFilterComponent<any>, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<ClrDateFilterComponent<any>, "clr-date-filter", never, { "timeActive": { "alias": "timeActive"; "required": false; }; "property": { "alias": "clrProperty"; "required": false; }; "maxPlaceholder": { "alias": "clrFilterMaxPlaceholder"; "required": false; }; "minPlaceholder": { "alias": "clrFilterMinPlaceholder"; "required": false; }; "value": { "alias": "clrFilterValue"; "required": false; }; }, { "filterValueChange": "clrFilterValueChange"; }, never, never, false, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClrDateFilterComponent<any>, "clr-date-filter", never, { "timeActive": { "alias": "timeActive"; "required": false; }; "dateValidationError": { "alias": "dateValidationError"; "required": false; }; "property": { "alias": "clrProperty"; "required": false; }; "maxPlaceholder": { "alias": "clrFilterMaxPlaceholder"; "required": false; }; "minPlaceholder": { "alias": "clrFilterMinPlaceholder"; "required": false; }; "value": { "alias": "clrFilterValue"; "required": false; }; }, { "filterValueChange": "clrFilterValueChange"; }, never, never, false, never>;
55
58
  }
@@ -21,6 +21,7 @@ export class ClrDateFilterComponent {
21
21
  this.commonStrings = commonStrings;
22
22
  this.clrPopoverEventsService = clrPopoverEventsService;
23
23
  this.timeActive = false;
24
+ this.valError = false;
24
25
  this.filterValueChange = new EventEmitter();
25
26
  /**
26
27
  * Internal values and accessor
@@ -47,14 +48,14 @@ export class ClrDateFilterComponent {
47
48
  if (values && (values[0] !== this._from || values[1] !== this._to)) {
48
49
  if (typeof values[0] === 'object') {
49
50
  this._from = values[0];
50
- this._fromTime = this._from?.toLocaleTimeString();
51
+ this._fromTime = this._from?.toLocaleTimeString().substring(0, 5);
51
52
  }
52
53
  else {
53
54
  this._from = null;
54
55
  }
55
56
  if (typeof values[1] === 'object') {
56
57
  this._to = values[1];
57
- this._toTime = this._to?.toLocaleTimeString();
58
+ this._toTime = this._to?.toLocaleTimeString().substring(0, 5);
58
59
  }
59
60
  else {
60
61
  this._to = null;
@@ -74,14 +75,18 @@ export class ClrDateFilterComponent {
74
75
  }
75
76
  set from(from) {
76
77
  if (typeof from === 'object' && from !== this._from) {
77
- if (from && typeof from.setHours === 'function') {
78
+ if (!this.timeActive && from && typeof from.setHours === 'function') {
78
79
  from.setHours(0, 0, 0, 0); // set from-date to start of day
79
80
  }
80
- if (this.fromTime) {
81
+ if (!this.fromTime && from && from?.toLocaleTimeString() !== '00:00:00') {
82
+ this.fromTime = from?.toLocaleTimeString().substring(0, 5);
83
+ }
84
+ if (this.fromTime && from) {
81
85
  const [hours, minutes, seconds] = this.fromTime.split(':').map(n => parseInt(n));
82
86
  from.setHours(hours, minutes, seconds || 0, 0);
83
87
  }
84
88
  this._from = from;
89
+ this.validateDates();
85
90
  this._changes.next([this._from, this._to]);
86
91
  this.filterValueChange.emit([this._from, this._to]);
87
92
  }
@@ -91,6 +96,7 @@ export class ClrDateFilterComponent {
91
96
  if (this._fromTime && this._from) {
92
97
  const [hours, minutes, seconds] = this._fromTime.split(':').map(n => parseInt(n));
93
98
  this._from.setHours(hours, minutes, seconds || 0, 0);
99
+ this.validateDates();
94
100
  this._changes.next([this._from, this._to]);
95
101
  this.filterValueChange.emit([this._from, this._to]);
96
102
  }
@@ -100,14 +106,18 @@ export class ClrDateFilterComponent {
100
106
  }
101
107
  set to(to) {
102
108
  if (typeof to === 'object' && to !== this._to) {
103
- if (to && typeof to.setHours === 'function') {
109
+ if (!this.timeActive && to && typeof to.setHours === 'function') {
104
110
  to.setHours(23, 59, 59, 999); // set to-date to end of day
105
111
  }
112
+ if (!this.toTime && to?.toLocaleTimeString() !== '23:59:59' && to?.toLocaleTimeString() !== '00:00:00') {
113
+ this.toTime = to?.toLocaleTimeString().substring(0, 5);
114
+ }
106
115
  if (this.toTime) {
107
116
  const [hours, minutes, seconds] = this.toTime.split(':').map(n => parseInt(n));
108
117
  to.setHours(hours, minutes, seconds || 0, 0);
109
118
  }
110
119
  this._to = to;
120
+ this.validateDates();
111
121
  this._changes.next([this._from, this._to]);
112
122
  this.filterValueChange.emit([this._from, this._to]);
113
123
  }
@@ -117,6 +127,7 @@ export class ClrDateFilterComponent {
117
127
  if (this._toTime && this._to) {
118
128
  const [hours, minutes, seconds] = this._toTime.split(':').map(n => parseInt(n));
119
129
  this._to.setHours(hours, minutes, seconds || 0, 0);
130
+ this.validateDates();
120
131
  this._changes.next([this._from, this._to]);
121
132
  this.filterValueChange.emit([this._from, this._to]);
122
133
  }
@@ -165,14 +176,21 @@ export class ClrDateFilterComponent {
165
176
  equals(other) {
166
177
  return other === this;
167
178
  }
179
+ validateDates() {
180
+ if (this._from && this._to) {
181
+ this.valError = this._from > this._to;
182
+ }
183
+ }
168
184
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, deps: [{ token: i1.ClrCommonStringsService }, { token: i1.ClrPopoverEventsService }, { token: i1.ClrDatagridFilter }], target: i0.ɵɵFactoryTarget.Component }); }
169
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i1.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i1.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i1.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: i5.ClrTimeInput, selector: "[clrTime]" }] }); }
185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", dateValidationError: "dateValidationError", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" step=\"60\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" step=\"60\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n <clr-control-error *ngIf=\"valError\"\n >{{ dateValidationError || 'Date \"from\" must be before date \"to\"!' }}\n </clr-control-error>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input,.time-filter-input{width:4.5rem!important}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i1.ClrControlError, selector: "clr-control-error" }, { kind: "component", type: i1.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i1.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i1.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: i5.ClrTimeInput, selector: "[clrTime]" }] }); }
170
186
  }
171
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, decorators: [{
172
188
  type: Component,
173
- args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"] }]
189
+ args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" step=\"60\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" step=\"60\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n <clr-control-error *ngIf=\"valError\"\n >{{ dateValidationError || 'Date \"from\" must be before date \"to\"!' }}\n </clr-control-error>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input,.time-filter-input{width:4.5rem!important}\n"] }]
174
190
  }], ctorParameters: () => [{ type: i1.ClrCommonStringsService }, { type: i1.ClrPopoverEventsService }, { type: i1.ClrDatagridFilter }], propDecorators: { timeActive: [{
175
191
  type: Input
192
+ }], dateValidationError: [{
193
+ type: Input
176
194
  }], property: [{
177
195
  type: Input,
178
196
  args: ['clrProperty']
@@ -189,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
189
207
  type: Output,
190
208
  args: ['clrFilterValueChange']
191
209
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFFakIsdUJBQXVCLEdBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1UsYUFBc0MsRUFDdEMsdUJBQWdELEVBQ3hELGVBQWtDO1FBRjFCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBWjFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUEwRGEsc0JB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QUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQXlDO1FBQ3JELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztJQUN4QixDQUFDOzhHQWhNVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4VkNsQm5DLHd5REF1REE7OzJGRHJDYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO2tLQVMzQixVQUFVO3NCQURULEtBQUs7Z0JBR29CLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkF1QmMsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBTUUsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBT3JCLEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBcUJTLGlCQUFpQjtzQkFBaEQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gIENsckRhdGFncmlkRmlsdGVyLFxuICBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZSxcbiAgQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG59IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZXN0ZWRQcm9wZXJ0eSB9IGZyb20gJy4vbmVzdGVkLXByb3BlcnR5JztcbmltcG9ydCB7IENsYXJpdHlJY29ucywgdHJhc2hJY29uIH0gZnJvbSAnQGNkcy9jb3JlL2ljb24nO1xuXG5DbGFyaXR5SWNvbnMuYWRkSWNvbnModHJhc2hJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRhdGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRGF0ZUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT5cbiAgaW1wbGVtZW50cyBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxUPiwgQWZ0ZXJWaWV3SW5pdFxue1xuICBwcml2YXRlIG5lc3RlZFByb3A6IE5lc3RlZFByb3BlcnR5PGFueT47XG4gIEBJbnB1dCgpXG4gIHRpbWVBY3RpdmUgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclByb3BlcnR5Jykgc2V0IHByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5lc3RlZFByb3AgPSBuZXcgTmVzdGVkUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFByb3AucHJvcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbHJQb3BvdmVyRXZlbnRzU2VydmljZTogQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG4gICAgZmlsdGVyQ29udGFpbmVyOiBDbHJEYXRhZ3JpZEZpbHRlclxuICApIHtcbiAgICBmaWx0ZXJDb250YWluZXIuc2V0RmlsdGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsclBvcG92ZXJFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIHdheSB0byBwYXNzIGV4dGVybmFsIHBsYWNlaG9sZGVyIGFuZCBhcmlhLWxhYmVsIHRvIHRoZSBmaWx0ZXIgaW5wdXRcbiAgICovXG4gIEBJbnB1dCgnY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXInKSBtYXhQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1heFBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlO1xuICB9XG5cbiAgQElucHV0KCdjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlcicpIG1pblBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgZ2V0IG1pblBsYWNlaG9sZGVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXIgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMubWluVmFsdWU7XG4gIH1cblxuICBASW5wdXQoJ2NsckZpbHRlclZhbHVlJylcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZXM6IFtEYXRlLCBEYXRlXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgKHZhbHVlc1swXSAhPT0gdGhpcy5fZnJvbSB8fCB2YWx1ZXNbMV0gIT09IHRoaXMuX3RvKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLl9mcm9tID0gdmFsdWVzWzBdO1xuICAgICAgICAgIHRoaXMuX2Zyb21UaW1lID0gdGhpcy5fZnJvbT8udG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZnJvbSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhpcy5fdG8gPSB2YWx1ZXNbMV07XG4gICAgICAgICAgdGhpcy5fdG9UaW1lID0gdGhpcy5fdG8/LnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RvID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VzLm5leHQodmFsdWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCdjbHJGaWx0ZXJWYWx1ZUNoYW5nZScpIGZpbHRlclZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCB2YWx1ZXMgYW5kIGFjY2Vzc29yXG4gICAqL1xuICBwcml2YXRlIF9mcm9tOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RvOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RvVGltZTogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSBfZnJvbVRpbWU6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIGdldCBmcm9tKCkge1xuICAgIHJldHVybiB0aGlzLl9mcm9tO1xuICB9XG5cbiAgcHVibGljIGdldCBmcm9tVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbVRpbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9UaW1lO1xuICB9XG5cbiAgcHVibGljIHNldCBmcm9tKGZyb206IERhdGUpIHtcbiAgICBpZiAodHlwZW9mIGZyb20gPT09ICdvYmplY3QnICYmIGZyb20gIT09IHRoaXMuX2Zyb20pIHtcbiAgICAgIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tLnNldEhvdXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZyb20uc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIHNldCBmcm9tLWRhdGUgdG8gc3RhcnQgb2YgZGF5XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mcm9tVGltZSkge1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5mcm9tVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgICAgZnJvbS5zZXRIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcyB8fCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2Zyb20gPSBmcm9tO1xuICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgZnJvbVRpbWUoZnJvbXRpbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zyb21UaW1lID0gZnJvbXRpbWU7XG4gICAgaWYgKHRoaXMuX2Zyb21UaW1lICYmIHRoaXMuX2Zyb20pIHtcbiAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSB0aGlzLl9mcm9tVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgIHRoaXMuX2Zyb20uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0bygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG87XG4gIH1cblxuICBwdWJsaWMgc2V0IHRvKHRvOiBEYXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiYgdG8gIT09IHRoaXMuX3RvKSB7XG4gICAgICBpZiAodG8gJiYgdHlwZW9mIHRvLnNldEhvdXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7IC8vIHNldCB0by1kYXRlIHRvIGVuZCBvZiBkYXlcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRvVGltZSkge1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy50b1RpbWUuc3BsaXQoJzonKS5tYXAobiA9PiBwYXJzZUludChuKSk7XG4gICAgICAgIHRvLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIHx8IDAsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fdG8gPSB0bztcbiAgICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHRvVGltZSh0b3RpbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RvVGltZSA9IHRvdGltZTtcbiAgICBpZiAodGhpcy5fdG9UaW1lICYmIHRoaXMuX3RvKSB7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5fdG9UaW1lLnNwbGl0KCc6JykubWFwKG4gPT4gcGFyc2VJbnQobikpO1xuICAgICAgdGhpcy5fdG8uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmlsdGVyIGlzIGN1cnJlbnRseSBhY3RpdmUsIChhdCBsZWFzdCBvbmUgaW5wdXQgaXMgc2V0KVxuICAgKi9cbiAgcHVibGljIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mcm9tICE9PSBudWxsIHx8IHRoaXMuX3RvICE9PSBudWxsO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IHByb3BWYWx1ZSA9IHRoaXMubmVzdGVkUHJvcCA/IHRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoaXRlbSkgOiBpdGVtO1xuICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHByb3BWYWx1ZSA9IG5ldyBEYXRlKHByb3BWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mcm9tICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPCB0aGlzLl9mcm9tLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3RvICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPiB0aGlzLl90by5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNlcnZhYmxlIHJlcXVpcmVkIGFzIHBhcnQgb2YgdGhlIEZpbHRlciBpbnRlcmZhY2VcbiAgICovXG4gIHByaXZhdGUgX2NoYW5nZXMgPSBuZXcgU3ViamVjdDxbRGF0ZSwgRGF0ZV0+KCk7XG5cbiAgLy8gV2UgZG8gbm90IHdhbnQgdG8gZXhwb3NlIHRoZSBTdWJqZWN0IGl0c2VsZiwgYnV0IHRoZSBPYnNlcnZhYmxlIHdoaWNoIGlzIHJlYWQtb25seVxuICBwdWJsaWMgZ2V0IGNoYW5nZXMoKTogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0+IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHk6IHRoaXMubmVzdGVkUHJvcCxcbiAgICAgIGZyb206IHRoaXMuX2Zyb20sXG4gICAgICB0bzogdGhpcy5fdG8sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLl9mcm9tID0gbnVsbDtcbiAgICB0aGlzLl90byA9IG51bGw7XG4gICAgdGhpcy5mcm9tVGltZSA9IG51bGw7XG4gICAgdGhpcy50b1RpbWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG90aGVyOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxULCBhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyID09PSB0aGlzO1xuICB9XG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGluayBidG4tdHJhc2hcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxuICA8Y2RzLWljb24gc2hhcGU9XCJ0cmFzaFwiPjwvY2RzLWljb24+XG48L2J1dHRvbj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhdGltZUFjdGl2ZVwiPlxuICA8Y2xyLWRhdGUtY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0X2Zyb21cbiAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgIG5hbWU9XCJmcm9tXCJcbiAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXRcIlxuICAgICAgWyhjbHJEYXRlKV09XCJmcm9tXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWluUGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgLz5cbiAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gIDxjbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBuYW1lPVwidG9cIlxuICAgICAgY2xhc3M9XCJkYXRhZ3JpZC1kYXRlLWZpbHRlci1pbnB1dFwiXG4gICAgICBbKGNsckRhdGUpXT1cInRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgLz5cbiAgPC9jbHItZGF0ZS1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lQWN0aXZlXCI+XG4gIDxjbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgICA8Y2xyLWRhdGUtY29udGFpbmVyIGNsYXNzPVwidGltZS1maWx0ZXItYWN0aXZlXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0X2Zyb21cbiAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICBuYW1lPVwiZnJvbVwiXG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXQgdGltZS1maWx0ZXItYWN0aXZlLWlucHV0XCJcbiAgICAgICAgWyhjbHJEYXRlKV09XCJmcm9tXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Nsci1kYXRlLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgY2xyVGltZSB0eXBlPVwidGltZVwiIGNsYXNzPVwidGltZS1maWx0ZXItaW5wdXRcIiBbKG5nTW9kZWwpXT1cImZyb21UaW1lXCIgLz5cbiAgPC9jbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgPGNsci1kYXRlLXRpbWUtY29udGFpbmVyPlxuICAgIDxjbHItZGF0ZS1jb250YWluZXIgY2xhc3M9XCJ0aW1lLWZpbHRlci1hY3RpdmVcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgIG5hbWU9XCJ0b1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXQgdGltZS1maWx0ZXItYWN0aXZlLWlucHV0XCJcbiAgICAgICAgWyhjbHJEYXRlKV09XCJ0b1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0IGNsclRpbWUgdHlwZT1cInRpbWVcIiBjbGFzcz1cInRpbWUtZmlsdGVyLWlucHV0XCIgWyhuZ01vZGVsKV09XCJ0b1RpbWVcIiAvPlxuICA8L2Nsci1kYXRlLXRpbWUtY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFFakIsdUJBQXVCLEdBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sc0JBQXNCO0lBV2pDLElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1UsYUFBc0MsRUFDdEMsdUJBQWdELEVBQ3hELGVBQWtDO1FBRjFCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBaEIxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSW5CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUEwRGUsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2RTs7V0FFRztRQUNLLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQzFCLFFBQUcsR0FBZ0IsSUFBSSxDQUFDO1FBd0doQzs7V0FFRztRQUNLLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQTVKN0MsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFPRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2pFLENBQUM7SUFJRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUNXLEtBQUssQ0FBQyxNQUFvQjtRQUNuQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDcEIsQ0FBQztnQkFDRCxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQVlELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLElBQUksQ0FBQyxJQUFVO1FBQ3hCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztZQUM3RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBVyxFQUFFLENBQUMsRUFBUTtRQUNwQixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2hFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFDNUQsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLFVBQVUsSUFBSSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDdkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLE1BQU0sQ0FBQyxNQUFjO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO0lBQ2xELENBQUM7SUFFRCxPQUFPLENBQUMsSUFBTztRQUNiLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDNUUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxZQUFZLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN4RyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsWUFBWSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDcEcsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBT0QscUZBQXFGO0lBQ3JGLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNiLENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUF5QztRQUNyRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzs4R0FwTlUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMFlDbEJuQyxnOURBMERBOzsyRkR4Q2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQjtrS0FTM0IsVUFBVTtzQkFEVCxLQUFLO2dCQUdOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLb0IsUUFBUTtzQkFBakMsS0FBSzt1QkFBQyxhQUFhO2dCQXVCYyxjQUFjO3NCQUEvQyxLQUFLO3VCQUFDLHlCQUF5QjtnQkFNRSxjQUFjO3NCQUEvQyxLQUFLO3VCQUFDLHlCQUF5QjtnQkFPckIsS0FBSztzQkFEZixLQUFLO3VCQUFDLGdCQUFnQjtnQkFxQlMsaUJBQWlCO3NCQUFoRCxNQUFNO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgQ2xyRGF0YWdyaWRGaWx0ZXIsXG4gIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlLFxuICBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSxcbn0gZnJvbSAnQGNsci9hbmd1bGFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5lc3RlZFByb3BlcnR5IH0gZnJvbSAnLi9uZXN0ZWQtcHJvcGVydHknO1xuaW1wb3J0IHsgQ2xhcml0eUljb25zLCB0cmFzaEljb24gfSBmcm9tICdAY2RzL2NvcmUvaWNvbic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyh0cmFzaEljb24pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGF0ZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJEYXRlRmlsdGVyQ29tcG9uZW50PFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PlxuICBpbXBsZW1lbnRzIENsckRhdGFncmlkRmlsdGVySW50ZXJmYWNlPFQ+LCBBZnRlclZpZXdJbml0XG57XG4gIHByaXZhdGUgbmVzdGVkUHJvcDogTmVzdGVkUHJvcGVydHk8YW55PjtcbiAgQElucHV0KClcbiAgdGltZUFjdGl2ZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBkYXRlVmFsaWRhdGlvbkVycm9yOiBzdHJpbmc7XG5cbiAgdmFsRXJyb3IgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclByb3BlcnR5Jykgc2V0IHByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5lc3RlZFByb3AgPSBuZXcgTmVzdGVkUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFByb3AucHJvcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbHJQb3BvdmVyRXZlbnRzU2VydmljZTogQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG4gICAgZmlsdGVyQ29udGFpbmVyOiBDbHJEYXRhZ3JpZEZpbHRlclxuICApIHtcbiAgICBmaWx0ZXJDb250YWluZXIuc2V0RmlsdGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsclBvcG92ZXJFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIHdheSB0byBwYXNzIGV4dGVybmFsIHBsYWNlaG9sZGVyIGFuZCBhcmlhLWxhYmVsIHRvIHRoZSBmaWx0ZXIgaW5wdXRcbiAgICovXG4gIEBJbnB1dCgnY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXInKSBtYXhQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1heFBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlO1xuICB9XG5cbiAgQElucHV0KCdjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlcicpIG1pblBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgZ2V0IG1pblBsYWNlaG9sZGVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXIgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMubWluVmFsdWU7XG4gIH1cblxuICBASW5wdXQoJ2NsckZpbHRlclZhbHVlJylcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZXM6IFtEYXRlLCBEYXRlXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgKHZhbHVlc1swXSAhPT0gdGhpcy5fZnJvbSB8fCB2YWx1ZXNbMV0gIT09IHRoaXMuX3RvKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLl9mcm9tID0gdmFsdWVzWzBdO1xuICAgICAgICAgIHRoaXMuX2Zyb21UaW1lID0gdGhpcy5fZnJvbT8udG9Mb2NhbGVUaW1lU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2Zyb20gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMuX3RvID0gdmFsdWVzWzFdO1xuICAgICAgICAgIHRoaXMuX3RvVGltZSA9IHRoaXMuX3RvPy50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fdG8gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZXMubmV4dCh2YWx1ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoJ2NsckZpbHRlclZhbHVlQ2hhbmdlJykgZmlsdGVyVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHZhbHVlcyBhbmQgYWNjZXNzb3JcbiAgICovXG4gIHByaXZhdGUgX2Zyb206IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdG86IERhdGUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdG9UaW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIF9mcm9tVGltZTogc3RyaW5nIHwgbnVsbDtcblxuICBwdWJsaWMgZ2V0IGZyb20oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb207XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZyb21UaW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9mcm9tVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9UaW1lKCkge1xuICAgIHJldHVybiB0aGlzLl90b1RpbWU7XG4gIH1cblxuICBwdWJsaWMgc2V0IGZyb20oZnJvbTogRGF0ZSkge1xuICAgIGlmICh0eXBlb2YgZnJvbSA9PT0gJ29iamVjdCcgJiYgZnJvbSAhPT0gdGhpcy5fZnJvbSkge1xuICAgICAgaWYgKCF0aGlzLnRpbWVBY3RpdmUgJiYgZnJvbSAmJiB0eXBlb2YgZnJvbS5zZXRIb3VycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmcm9tLnNldEhvdXJzKDAsIDAsIDAsIDApOyAvLyBzZXQgZnJvbS1kYXRlIHRvIHN0YXJ0IG9mIGRheVxuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmZyb21UaW1lICYmIGZyb20gJiYgZnJvbT8udG9Mb2NhbGVUaW1lU3RyaW5nKCkgIT09ICcwMDowMDowMCcpIHtcbiAgICAgICAgdGhpcy5mcm9tVGltZSA9IGZyb20/LnRvTG9jYWxlVGltZVN0cmluZygpLnN1YnN0cmluZygwLCA1KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZyb21UaW1lICYmIGZyb20pIHtcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuZnJvbVRpbWUuc3BsaXQoJzonKS5tYXAobiA9PiBwYXJzZUludChuKSk7XG4gICAgICAgIGZyb20uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9mcm9tID0gZnJvbTtcbiAgICAgIHRoaXMudmFsaWRhdGVEYXRlcygpO1xuICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgZnJvbVRpbWUoZnJvbXRpbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zyb21UaW1lID0gZnJvbXRpbWU7XG4gICAgaWYgKHRoaXMuX2Zyb21UaW1lICYmIHRoaXMuX2Zyb20pIHtcbiAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSB0aGlzLl9mcm9tVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgIHRoaXMuX2Zyb20uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB0aGlzLnZhbGlkYXRlRGF0ZXMoKTtcbiAgICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvKCkge1xuICAgIHJldHVybiB0aGlzLl90bztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdG8odG86IERhdGUpIHtcbiAgICBpZiAodHlwZW9mIHRvID09PSAnb2JqZWN0JyAmJiB0byAhPT0gdGhpcy5fdG8pIHtcbiAgICAgIGlmICghdGhpcy50aW1lQWN0aXZlICYmIHRvICYmIHR5cGVvZiB0by5zZXRIb3VycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0by5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpOyAvLyBzZXQgdG8tZGF0ZSB0byBlbmQgb2YgZGF5XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudG9UaW1lICYmIHRvPy50b0xvY2FsZVRpbWVTdHJpbmcoKSAhPT0gJzIzOjU5OjU5JyAmJiB0bz8udG9Mb2NhbGVUaW1lU3RyaW5nKCkgIT09ICcwMDowMDowMCcpIHtcbiAgICAgICAgdGhpcy50b1RpbWUgPSB0bz8udG9Mb2NhbGVUaW1lU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudG9UaW1lKSB7XG4gICAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSB0aGlzLnRvVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgICAgdG8uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB9XG4gICAgICB0aGlzLl90byA9IHRvO1xuICAgICAgdGhpcy52YWxpZGF0ZURhdGVzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCB0b1RpbWUodG90aW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90b1RpbWUgPSB0b3RpbWU7XG4gICAgaWYgKHRoaXMuX3RvVGltZSAmJiB0aGlzLl90bykge1xuICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuX3RvVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgIHRoaXMuX3RvLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIHx8IDAsIDApO1xuICAgICAgdGhpcy52YWxpZGF0ZURhdGVzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmlsdGVyIGlzIGN1cnJlbnRseSBhY3RpdmUsIChhdCBsZWFzdCBvbmUgaW5wdXQgaXMgc2V0KVxuICAgKi9cbiAgcHVibGljIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mcm9tICE9PSBudWxsIHx8IHRoaXMuX3RvICE9PSBudWxsO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IHByb3BWYWx1ZSA9IHRoaXMubmVzdGVkUHJvcCA/IHRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoaXRlbSkgOiBpdGVtO1xuICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHByb3BWYWx1ZSA9IG5ldyBEYXRlKHByb3BWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mcm9tICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPCB0aGlzLl9mcm9tLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3RvICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPiB0aGlzLl90by5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNlcnZhYmxlIHJlcXVpcmVkIGFzIHBhcnQgb2YgdGhlIEZpbHRlciBpbnRlcmZhY2VcbiAgICovXG4gIHByaXZhdGUgX2NoYW5nZXMgPSBuZXcgU3ViamVjdDxbRGF0ZSwgRGF0ZV0+KCk7XG5cbiAgLy8gV2UgZG8gbm90IHdhbnQgdG8gZXhwb3NlIHRoZSBTdWJqZWN0IGl0c2VsZiwgYnV0IHRoZSBPYnNlcnZhYmxlIHdoaWNoIGlzIHJlYWQtb25seVxuICBwdWJsaWMgZ2V0IGNoYW5nZXMoKTogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0+IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHk6IHRoaXMubmVzdGVkUHJvcCxcbiAgICAgIGZyb206IHRoaXMuX2Zyb20sXG4gICAgICB0bzogdGhpcy5fdG8sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLl9mcm9tID0gbnVsbDtcbiAgICB0aGlzLl90byA9IG51bGw7XG4gICAgdGhpcy5mcm9tVGltZSA9IG51bGw7XG4gICAgdGhpcy50b1RpbWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG90aGVyOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxULCBhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyID09PSB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURhdGVzKCkge1xuICAgIGlmICh0aGlzLl9mcm9tICYmIHRoaXMuX3RvKSB7XG4gICAgICB0aGlzLnZhbEVycm9yID0gdGhpcy5fZnJvbSA+IHRoaXMuX3RvO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpbmsgYnRuLXRyYXNoXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cbiAgPGNkcy1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nkcy1pY29uPlxuPC9idXR0b24+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXRpbWVBY3RpdmVcIj5cbiAgPGNsci1kYXRlLWNvbnRhaW5lcj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dF9mcm9tXG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBuYW1lPVwiZnJvbVwiXG4gICAgICBjbGFzcz1cImRhdGFncmlkLWRhdGUtZmlsdGVyLWlucHV0XCJcbiAgICAgIFsoY2xyRGF0ZSldPVwiZnJvbVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwibWluUGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgIC8+XG4gIDwvY2xyLWRhdGUtY29udGFpbmVyPlxuICA8Y2xyLWRhdGUtY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgbmFtZT1cInRvXCJcbiAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXRcIlxuICAgICAgWyhjbHJEYXRlKV09XCJ0b1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1heFBsYWNlaG9sZGVyVmFsdWVcIlxuICAgIC8+XG4gIDwvY2xyLWRhdGUtY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidGltZUFjdGl2ZVwiPlxuICA8Y2xyLWRhdGUtdGltZS1jb250YWluZXI+XG4gICAgPGNsci1kYXRlLWNvbnRhaW5lciBjbGFzcz1cInRpbWUtZmlsdGVyLWFjdGl2ZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dF9mcm9tXG4gICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgbmFtZT1cImZyb21cIlxuICAgICAgICBjbGFzcz1cImRhdGFncmlkLWRhdGUtZmlsdGVyLWlucHV0IHRpbWUtZmlsdGVyLWFjdGl2ZS1pbnB1dFwiXG4gICAgICAgIFsoY2xyRGF0ZSldPVwiZnJvbVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0IGNsclRpbWUgdHlwZT1cInRpbWVcIiBjbGFzcz1cInRpbWUtZmlsdGVyLWlucHV0XCIgc3RlcD1cIjYwXCIgWyhuZ01vZGVsKV09XCJmcm9tVGltZVwiIC8+XG4gIDwvY2xyLWRhdGUtdGltZS1jb250YWluZXI+XG4gIDxjbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgICA8Y2xyLWRhdGUtY29udGFpbmVyIGNsYXNzPVwidGltZS1maWx0ZXItYWN0aXZlXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICBuYW1lPVwidG9cIlxuICAgICAgICBjbGFzcz1cImRhdGFncmlkLWRhdGUtZmlsdGVyLWlucHV0IHRpbWUtZmlsdGVyLWFjdGl2ZS1pbnB1dFwiXG4gICAgICAgIFsoY2xyRGF0ZSldPVwidG9cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvY2xyLWRhdGUtY29udGFpbmVyPlxuICAgIDxpbnB1dCBjbHJUaW1lIHR5cGU9XCJ0aW1lXCIgY2xhc3M9XCJ0aW1lLWZpbHRlci1pbnB1dFwiIHN0ZXA9XCI2MFwiIFsobmdNb2RlbCldPVwidG9UaW1lXCIgLz5cbiAgPC9jbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgPGNsci1jb250cm9sLWVycm9yICpuZ0lmPVwidmFsRXJyb3JcIlxuICAgID57eyBkYXRlVmFsaWRhdGlvbkVycm9yIHx8ICdEYXRlIFwiZnJvbVwiIG11c3QgYmUgYmVmb3JlIGRhdGUgXCJ0b1wiIScgfX1cbiAgPC9jbHItY29udHJvbC1lcnJvcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -136,7 +136,6 @@ export class ClrDaterangepickerDirective {
136
136
  if (!target) {
137
137
  return;
138
138
  }
139
- console.log('aaaaa', target, this.regex.test(target.value));
140
139
  if (target.value && this.regex.test(target.value)) {
141
140
  // handle easy access
142
141
  this.handleEasyAccess(target.value);
@@ -327,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
327
326
  type: HostListener,
328
327
  args: ['blur']
329
328
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kaXJlY3RpdmVzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFFcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDOztPQUVHO0lBQ0gsSUFDVyxHQUFHLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFD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QUNqQzs7MEJBNkdJLElBQUk7eU9BdkdJLEdBQUc7c0JBRGIsS0FBSztnQkFTSyxHQUFHO3NCQURiLEtBQUs7Z0JBU0MsYUFBYTtzQkFEbkIsS0FBSztnQkFlVSxXQUFXO3NCQUExQixLQUFLO2dCQUdLLGVBQWU7c0JBRHpCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQXlCcEIsRUFBRTtzQkFGWixXQUFXOztzQkFDWCxLQUFLO2dCQWtCSyxRQUFRO3NCQUZsQixXQUFXO3VCQUFDLFVBQVU7O3NCQUN0QixLQUFLO2dCQWlCQyxXQUFXO3NCQURqQixNQUFNO2dCQUtBLFNBQVM7c0JBRGYsV0FBVzt1QkFBQyxXQUFXO2dCQUlqQixVQUFVO3NCQURoQixXQUFXO3VCQUFDLGlCQUFpQjtnQkF5RHZCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQXlDbEMsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxPQUFPO2dCQVNkLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUIH0gZnJvbSAnLi4vLi4vZGF0ZXJhbmdlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBOdWxsYWJsZURhdGVyYW5nZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGF0ZXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9kYXkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9kYXRlcmFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlcmFuZ2VQYXJzaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9kYXRlcmFuZ2UtcGFyc2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3QtZm9ybS1jb21wb25lbnQvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IE51bGxhYmxlVGltZXJhbmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aW1lcmFuZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRpbWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90aW1lLm1vZGVsJztcblxuLyoqXG4gKiBEYXRlcmFuZ2VwaWNrZXIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJEYXRlcmFuZ2VwaWNrZXJdJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLm1pbkRhdGUgPSAhdmFsdWUgPyBudWxsIDogbmV3IERheU1vZGVsKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS5tYXhEYXRlID0gIXZhbHVlID8gbnVsbCA6IG5ldyBEYXlNb2RlbCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9jYWxlIHRleHQgYmV0d2VlbiAnZnJvbScgYW5kICd0bycgZGF0ZXJhbmdlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXBhcmF0b3JUZXh0OiBzdHJpbmcgPSBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUO1xuXG4gIHJlZ2V4ID0gL15bMC05XStbbWhkd10kLztcbiAgcmVnZXhXID0gL15bMC05XSt3JC87XG4gIHJlZ2V4SCA9IC9eWzAtOV0raCQvO1xuICByZWdleEQgPSAvXlswLTldK2QkLztcbiAgcmVnZXhNID0gL15bMC05XSttJC87XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZCBhZ2FpbnN0IG92ZXJyaWRpbmcgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHBsYWNlaG9sZGVyLlxuICAgKiBBZGRpbmcgYW4gaW5jb3JyZWN0IHBsYWNlaG9sZGVyIHdpbGwgY3JlYXRlIGNvbmZ1c2lvbiB3aGlsZSBlbnRlcmluZyB0aGUgZGF0ZXJhbmdlIGluIHRoZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5wbGFjZWhvbGRlcicpXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGF0ZXJhbmdlU2VydmljZS50aW1lQWN0aXZlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID8/XG4gICAgICAgIHRoaXMuZGF0ZXJhbmdlUGFyc2luZ1NlcnZpY2UubG9jYWxlRm9ybWF0ICtcbiAgICAgICAgICAnIGhoOm1tJyArXG4gICAgICAgICAgKHRoaXMuZGF0ZXJhbmdlU2VydmljZS50aW1lU2Vjb25kc0FjdGl2ZSA/ICc6c3MnIDogJycpICtcbiAgICAgICAgICB0aGlzLnNlcGFyYXRvclRleHQgK1xuICAgICAgICAgIHRoaXMuZGF0ZXJhbmdlUGFyc2luZ1NlcnZpY2UubG9jYWxlRm9ybWF0ICtcbiAgICAgICAgICAnIGhoOm1tJyArXG4gICAgICAgICAgKHRoaXMuZGF0ZXJhbmdlU2VydmljZS50aW1lU2Vjb25kc0FjdGl2ZSA/ICc6c3MnIDogJycpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA/P1xuICAgICAgdGhpcy5kYXRlcmFuZ2VQYXJzaW5nU2VydmljZS5sb2NhbGVGb3JtYXQgKyB0aGlzLnNlcGFyYXRvclRleHQgKyB0aGlzLmRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlLmxvY2FsZUZvcm1hdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSWQtYXR0cmlidXRlLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKClcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIElkLWF0dHJpYnV0ZS5cbiAgICogQHJldHVybnMgSWQtYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZSBjb250cm9sLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdkaXNhYmxlZCcpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlZCBzdGF0ZS5cbiAgICogQHJldHVybnMgRGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TnVsbGFibGVEYXRlcmFuZ2U+KCk7XG5cbiAgLyoqIFNldCB0aGUgYHR5cGVgIGF0dHJpYnV0ZSBhbHdheXMgdG8gXCJ0ZXh0XCIsIHRvIG5vdCBnZXQgdGhlIG5hdGl2ZSBkYXRlcGlja2VyLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpXG4gIHB1YmxpYyBpbnB1dFR5cGUgPSAndGV4dCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jbHItaW5wdXQnKVxuICBwdWJsaWMgaW5wdXRDbGFzcyA9IHRydWU7XG5cbiAgLyoqIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucyB0byBsYXRlciBkZXN0cm95LiAqL1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlOiBEYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbElkU2VydmljZTogQ29udHJvbElkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVyYW5nZVNlcnZpY2U6IERhdGVyYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlcmFuZ2VQYXJzaW5nU2VydmljZTogRGF0ZXJhbmdlUGFyc2luZ1NlcnZpY2VcbiAgKSB7XG4gICAgLy8gVG8gZ2V0IGFjY2VzcyB0byB0aGUgTmdDb250cm9sLCB3ZSBoYWQgdG8gcmVtb3ZlIHRoZSBgTkdfVkFMVUVfQUNDRVNTT1JgXG4gICAgLy8gcHJvdmlkZXIgYW5kIHNldCB0aGVtIG1hbnVhbGx5LCB3aGlsZSBzdGlsbCBrZWVwaW5nIHRoZSBpbnRlcmZhY2VzLlxuICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkZvckRhdGVyYW5nZVZhbHVlQ2hhbmdlcygpO1xuICAgIHRoaXMubGlzdGVuRm9yQ29udHJvbFN0YXR1c0NoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3IgZGF0ZXJhbmdlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkZvckRhdGVyYW5nZVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKF9kYXRlcmFuZ2U6IE51bGxhYmxlRGF0ZXJhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMudHJpZ2dlckNoYW5nZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3IgY29udHJvbCBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRm9yQ29udHJvbFN0YXR1c0NoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKF9zdGF0dXM6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLnVwZGF0ZVN0YXR1cyh0aGlzLmNvbnRyb2wuY29udHJvbCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIG1hbnVhbCBjaGFuZ2VzIHRvIHRoZSBpbnB1dC5cbiAgICogQHBhcmFtIHRhcmdldCAtIElucHV0IGVsZW1lbnQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudC50YXJnZXQnXSlcbiAgcHVibGljIG9uQ2hhbmdlRXZlbnQodGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlICdpbnZhbGlkJyBlcnJvci5cbiAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wuaGFzRXJyb3IoJ2ludmFsaWQnKSkge1xuICAgICAgZGVsZXRlIHRoaXMuY29udHJvbC5jb250cm9sLmVycm9ycy5pbnZhbGlkO1xuICAgIH1cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdhYWFhYScsIHRhcmdldCwgdGhpcy5yZWdleC50ZXN0KHRhcmdldC52YWx1ZSkpO1xuICAgIGlmICh0YXJnZXQudmFsdWUgJiYgdGhpcy5yZWdleC50ZXN0KHRhcmdldC52YWx1ZSkpIHtcbiAgICAgIC8vIGhhbmRsZSBlYXN5IGFjY2Vzc1xuICAgICAgdGhpcy5oYW5kbGVFYXN5QWNjZXNzKHRhcmdldC52YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgbm90aGluZyB0byBwYXJzZSwgYENsckRhdGVyYW5nZVJlcXVpcmVkVmFsaWRhdG9yYCB3aWxsIHRha2UgY2FyZSBvZiB0aGlzLlxuICAgIGlmICghdGFyZ2V0LnZhbHVlKSB7XG4gICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UobnVsbCwgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZXJhbmdlID0gdGhpcy5kYXRlcmFuZ2VQYXJzaW5nU2VydmljZS5wYXJzZSh0YXJnZXQudmFsdWUsIHRoaXMuc2VwYXJhdG9yVGV4dCk7XG4gICAgY29uc3QgaW52YWxpZERhdGVyYW5nZTogYm9vbGVhbiA9IGRhdGVyYW5nZSA9PSBudWxsIHx8IGRhdGVyYW5nZS5mcm9tID09IG51bGwgfHwgZGF0ZXJhbmdlLnRvID09IG51bGw7XG5cbiAgICAvLyBJbnZhbGlkIG1hbnVhbCBkYXRlcmFuZ2Ugc3BlY2lmaWVkLlxuICAgIGlmIChpbnZhbGlkRGF0ZXJhbmdlKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICBpbnZhbGlkOiB0YXJnZXQudmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgZGF0ZXJhbmdlLCBidXQgb25seSBub3RpZnkgd2hlbiB2YWxpZC5cbiAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UoZGF0ZXJhbmdlLCAhaW52YWxpZERhdGVyYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIGZvY3VzIGV2ZW50LlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICBwdWJsaWMgZm9jdXNFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIGJsdXIgZXZlbnQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgcHVibGljIGJsdXJFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UuZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBldmVudHMgdG8gbm90aWZ5IGZvcm0gY29udHJvbHMsIHRyaWdnZXIgdmFsaWRhdGlvbiBhbmQgdXBkYXRlIGF0dHJpYnV0ZXMvcHJvcGVydGllcy5cbiAgICovXG4gIHByaXZhdGUgdHJpZ2dlckNoYW5nZSgpOiB2b2lkIHtcbiAgICBsZXQgZGF0ZXJhbmdlID0gdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnNlbGVjdGVkRGF0ZXJhbmdlO1xuXG4gICAgLy8gV2hlbiBgZnJvbWAgb3IgYHRvYCBwcm9wZXJ0aWVzIGFyZSBub3Qgc2V0LCByZXR1cm4gbnVsbC5cbiAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgYHJlcXVpcmVkYCB2YWxpZGF0b3IgKGlmIHByZXNlbnQpLlxuICAgIGlmICghdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLmlzVmFsaWQoKSkge1xuICAgICAgZGF0ZXJhbmdlID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBNYXJrIGNvbnRyb2wgZGlydHkuXG4gICAgdGhpcy5vblRvdWNoZWQoZGF0ZXJhbmdlKTtcbiAgICAvLyBVcGRhdGUgTmdNb2RlbC5cbiAgICB0aGlzLm9uQ2hhbmdlZChkYXRlcmFuZ2UpO1xuICAgIC8vIE5vdGlmeSBwYXJlbnQuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGRhdGVyYW5nZSk7XG4gICAgLy8gVXBkYXRlIGF0dHJpYnV0ZXMvcHJvcGVydGllcy5cbiAgICB0aGlzLnVwZGF0ZUlucHV0KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGlucHV0IHdpdGggZnJpZW5kbHkgZGF0ZXJhbmdlIHRleHQuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUlucHV0KCk6IHZvaWQge1xuICAgIGxldCBkYXRlU3RyaW5nO1xuICAgIGlmICh0aGlzLmRhdGVyYW5nZVNlcnZpY2UudGltZUFjdGl2ZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2Uuc2VsZWN0ZWREYXRlcmFuZ2UgJiZcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZGF0ZXJhbmdlU2VydmljZS5zZWxlY3RlZERhdGVyYW5nZSwgJ2Zyb21UaW1lJylcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UoXG4gICAgICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnNlbGVjdGVkRGF0ZXJhbmdlXG4gICAgICAgICAgICA/ICh0aGlzLmRhdGVyYW5nZVNlcnZpY2Uuc2VsZWN0ZWREYXRlcmFuZ2UgYXMgTnVsbGFibGVUaW1lcmFuZ2UpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRhdGVTdHJpbmcgPSB0aGlzLmRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlLnRvTG9jYWxlU3RyaW5nV2l0aFRpbWUoXG4gICAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS5zZWxlY3RlZERhdGVyYW5nZSxcbiAgICAgICAgdGhpcy5zZXBhcmF0b3JUZXh0XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlU3RyaW5nID0gdGhpcy5kYXRlcmFuZ2VQYXJzaW5nU2VydmljZS50b0xvY2FsZVN0cmluZyhcbiAgICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnNlbGVjdGVkRGF0ZXJhbmdlLFxuICAgICAgICB0aGlzLnNlcGFyYXRvclRleHRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIGRhdGVTdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZC4gU2V0IHZhbHVlIGZyb20gTmdNb2RlbC5cbiAgICogQHBhcmFtIHZhbHVlIC0gRGF0ZXJhbmdlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IE51bGxhYmxlRGF0ZXJhbmdlKSB7XG4gICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkRGF0ZXJhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2QuIFJlZ2lzdGVyIGNoYW5nZSBldmVudC4gV2hlbiB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gZm4gLSBDaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBOdWxsYWJsZURhdGVyYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VkID0gZm47XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlZCA9IChfdmFsdWU6IE51bGxhYmxlRGF0ZXJhbmdlKTogdm9pZCA9PiB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZC4gUmVnaXN0ZXIgdG91Y2ggZXZlbnQuIFdoZW4gY29udHJvbCBpcyBkaXJ0eS5cbiAgICogQHBhcmFtIGZuIC0gVG91Y2ggZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICh2YWx1ZTogTnVsbGFibGVEYXRlcmFuZ2UpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoX3ZhbHVlOiBOdWxsYWJsZURhdGVyYW5nZSk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2QuIFNldCBkaXNhYmxlZCBzdGF0ZS5cbiAgICogQHBhcmFtIGRpc2FibGVkIC0gRGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFYXN5QWNjZXNzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmICh0aGlzLnJlZ2V4Vy50ZXN0KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCd3JywgJycpO1xuICAgICAgbm93LnNldERhdGUobm93LmdldERhdGUoKSAtIE51bWJlcih2YWx1ZSkgKiA3KTtcbiAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShcbiAgICAgICAge1xuICAgICAgICAgIGZyb206IG5ldyBEYXlNb2RlbChub3cpLFxuICAgICAgICAgIHRvOiBuZXcgRGF5TW9kZWwobmV3IERhdGUoKSksXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlZ2V4RC50ZXN0KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdkJywgJycpO1xuICAgICAgbm93LnNldERhdGUobm93LmdldERhdGUoKSAtIE51bWJlcih2YWx1ZSkpO1xuICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkRGF0ZXJhbmdlKFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogbmV3IERheU1vZGVsKG5vdyksXG4gICAgICAgICAgdG86IG5ldyBEYXlNb2RlbChuZXcgRGF0ZSgpKSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVnZXhILnRlc3QodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2gnLCAnJyk7XG4gICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiBuZXcgRGF5TW9kZWwobmV3IERhdGUoKSksXG4gICAgICAgICAgdG86IG5ldyBEYXlNb2RlbChuZXcgRGF0ZSgpKSxcbiAgICAgICAgICBmcm9tVGltZTogbmV3IFRpbWVNb2RlbChuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIE51bWJlcih2YWx1ZSkgKiAzNjAwMDAwKSksXG4gICAgICAgICAgdG9UaW1lOiBuZXcgVGltZU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZWdleE0udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnbScsICcnKTtcbiAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShcbiAgICAgICAge1xuICAgICAgICAgIGZyb206IG5ldyBEYXlNb2RlbChuZXcgRGF0ZSgpKSxcbiAgICAgICAgICB0bzogbmV3IERheU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICAgIGZyb21UaW1lOiBuZXcgVGltZU1vZGVsKG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gTnVtYmVyKHZhbHVlKSAqIDYwMDAwKSksXG4gICAgICAgICAgdG9UaW1lOiBuZXcgVGltZU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9kaXJlY3RpdmVzL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFFcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDOztPQUVHO0lBQ0gsSUFDVyxHQUFHLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7O09BRUc7SUFD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QUs7Z0JBR0ssZUFBZTtzQkFEekIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBeUJwQixFQUFFO3NCQUZaLFdBQVc7O3NCQUNYLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRmxCLFdBQVc7dUJBQUMsVUFBVTs7c0JBQ3RCLEtBQUs7Z0JBaUJDLFdBQVc7c0JBRGpCLE1BQU07Z0JBS0EsU0FBUztzQkFEZixXQUFXO3VCQUFDLFdBQVc7Z0JBSWpCLFVBQVU7c0JBRGhCLFdBQVc7dUJBQUMsaUJBQWlCO2dCQXlEdkIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBd0NsQyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLE9BQU87Z0JBU2QsU0FBUztzQkFEZixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNFUEFSQVRPUl9URVhUX0RFRkFVTFQgfSBmcm9tICcuLi8uLi9kYXRlcmFuZ2UuY29uc3RhbnRzJztcbmltcG9ydCB7IE51bGxhYmxlRGF0ZXJhbmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kYXRlcmFuZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IERheU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RheS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlcmFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2RhdGVyYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2RhdGVyYW5nZS1wYXJzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9kYXRlcmFuZ2UtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVsbGFibGVUaW1lcmFuZ2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWVyYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGltZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RpbWUubW9kZWwnO1xuXG4vKipcbiAqIERhdGVyYW5nZXBpY2tlci5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NsckRhdGVyYW5nZXBpY2tlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJEYXRlcmFuZ2VwaWNrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogTWluaW11bSBkYXRlIHRoYXQgY2FuIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtaW4odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UubWluRGF0ZSA9ICF2YWx1ZSA/IG51bGwgOiBuZXcgRGF5TW9kZWwodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1heGltdW0gZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLm1heERhdGUgPSAhdmFsdWUgPyBudWxsIDogbmV3IERheU1vZGVsKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NhbGUgdGV4dCBiZXR3ZWVuICdmcm9tJyBhbmQgJ3RvJyBkYXRlcmFuZ2VzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlcGFyYXRvclRleHQ6IHN0cmluZyA9IFNFUEFSQVRPUl9URVhUX0RFRkFVTFQ7XG5cbiAgcmVnZXggPSAvXlswLTldK1ttaGR3XSQvO1xuICByZWdleFcgPSAvXlswLTldK3ckLztcbiAgcmVnZXhIID0gL15bMC05XStoJC87XG4gIHJlZ2V4RCA9IC9eWzAtOV0rZCQvO1xuICByZWdleE0gPSAvXlswLTldK20kLztcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dC5cbiAgICpcbiAgICogSXQgaXMgcmVjb21tZW5kIGFnYWluc3Qgb3ZlcnJpZGluZyB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgcGxhY2Vob2xkZXIuXG4gICAqIEFkZGluZyBhbiBpbmNvcnJlY3QgcGxhY2Vob2xkZXIgd2lsbCBjcmVhdGUgY29uZnVzaW9uIHdoaWxlIGVudGVyaW5nIHRoZSBkYXRlcmFuZ2UgaW4gdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnBsYWNlaG9sZGVyJylcbiAgcHVibGljIGdldCBwbGFjZWhvbGRlclRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnRpbWVBY3RpdmUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPz9cbiAgICAgICAgdGhpcy5kYXRlcmFuZ2VQYXJzaW5nU2VydmljZS5sb2NhbGVGb3JtYXQgK1xuICAgICAgICAgICcgaGg6bW0nICtcbiAgICAgICAgICAodGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnRpbWVTZWNvbmRzQWN0aXZlID8gJzpzcycgOiAnJykgK1xuICAgICAgICAgIHRoaXMuc2VwYXJhdG9yVGV4dCArXG4gICAgICAgICAgdGhpcy5kYXRlcmFuZ2VQYXJzaW5nU2VydmljZS5sb2NhbGVGb3JtYXQgK1xuICAgICAgICAgICcgaGg6bW0nICtcbiAgICAgICAgICAodGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnRpbWVTZWNvbmRzQWN0aXZlID8gJzpzcycgOiAnJylcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID8/XG4gICAgICB0aGlzLmRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlLmxvY2FsZUZvcm1hdCArIHRoaXMuc2VwYXJhdG9yVGV4dCArIHRoaXMuZGF0ZXJhbmdlUGFyc2luZ1NlcnZpY2UubG9jYWxlRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZC1hdHRyaWJ1dGUuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoKVxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQ7XG4gIH1cblxuICAvKipcbiAgICogSWQtYXR0cmlidXRlLlxuICAgKiBAcmV0dXJucyBJZC1hdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGNvbnRyb2wuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2Rpc2FibGVkJylcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVkIHN0YXRlLlxuICAgKiBAcmV0dXJucyBEaXNhYmxlZCBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOdWxsYWJsZURhdGVyYW5nZT4oKTtcblxuICAvKiogU2V0IHRoZSBgdHlwZWAgYXR0cmlidXRlIGFsd2F5cyB0byBcInRleHRcIiwgdG8gbm90IGdldCB0aGUgbmF0aXZlIGRhdGVwaWNrZXIuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50eXBlJylcbiAgcHVibGljIGlucHV0VHlwZSA9ICd0ZXh0JztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsci1pbnB1dCcpXG4gIHB1YmxpYyBpbnB1dENsYXNzID0gdHJ1ZTtcblxuICAvKiogTGlzdCBvZiBzdWJzY3JpcHRpb25zIHRvIGxhdGVyIGRlc3Ryb3kuICovXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2U6IERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sSWRTZXJ2aWNlOiBDb250cm9sSWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0ZXJhbmdlU2VydmljZTogRGF0ZXJhbmdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlOiBEYXRlcmFuZ2VQYXJzaW5nU2VydmljZVxuICApIHtcbiAgICAvLyBUbyBnZXQgYWNjZXNzIHRvIHRoZSBOZ0NvbnRyb2wsIHdlIGhhZCB0byByZW1vdmUgdGhlIGBOR19WQUxVRV9BQ0NFU1NPUmBcbiAgICAvLyBwcm92aWRlciBhbmQgc2V0IHRoZW0gbWFudWFsbHksIHdoaWxlIHN0aWxsIGtlZXBpbmcgdGhlIGludGVyZmFjZXMuXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuRm9yRGF0ZXJhbmdlVmFsdWVDaGFuZ2VzKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JDb250cm9sU3RhdHVzQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBkYXRlcmFuZ2UgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRm9yRGF0ZXJhbmdlVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoX2RhdGVyYW5nZTogTnVsbGFibGVEYXRlcmFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBjb250cm9sIHN0YXR1cyBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JDb250cm9sU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoX3N0YXR1czogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmRhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2UudXBkYXRlU3RhdHVzKHRoaXMuY29udHJvbC5jb250cm9sKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gbWFudWFsIGNoYW5nZXMgdG8gdGhlIGlucHV0LlxuICAgKiBAcGFyYW0gdGFyZ2V0IC0gSW5wdXQgZWxlbWVudC5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScsIFsnJGV2ZW50LnRhcmdldCddKVxuICBwdWJsaWMgb25DaGFuZ2VFdmVudCh0YXJnZXQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgJ2ludmFsaWQnIGVycm9yLlxuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC5oYXNFcnJvcignaW52YWxpZCcpKSB7XG4gICAgICBkZWxldGUgdGhpcy5jb250cm9sLmNvbnRyb2wuZXJyb3JzLmludmFsaWQ7XG4gICAgfVxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldC52YWx1ZSAmJiB0aGlzLnJlZ2V4LnRlc3QodGFyZ2V0LnZhbHVlKSkge1xuICAgICAgLy8gaGFuZGxlIGVhc3kgYWNjZXNzXG4gICAgICB0aGlzLmhhbmRsZUVhc3lBY2Nlc3ModGFyZ2V0LnZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIHBhcnNlLCBgQ2xyRGF0ZXJhbmdlUmVxdWlyZWRWYWxpZGF0b3JgIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMuXG4gICAgaWYgKCF0YXJnZXQudmFsdWUpIHtcbiAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShudWxsLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlcmFuZ2UgPSB0aGlzLmRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlLnBhcnNlKHRhcmdldC52YWx1ZSwgdGhpcy5zZXBhcmF0b3JUZXh0KTtcbiAgICBjb25zdCBpbnZhbGlkRGF0ZXJhbmdlOiBib29sZWFuID0gZGF0ZXJhbmdlID09IG51bGwgfHwgZGF0ZXJhbmdlLmZyb20gPT0gbnVsbCB8fCBkYXRlcmFuZ2UudG8gPT0gbnVsbDtcblxuICAgIC8vIEludmFsaWQgbWFudWFsIGRhdGVyYW5nZSBzcGVjaWZpZWQuXG4gICAgaWYgKGludmFsaWREYXRlcmFuZ2UpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgIGludmFsaWQ6IHRhcmdldC52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBkYXRlcmFuZ2UsIGJ1dCBvbmx5IG5vdGlmeSB3aGVuIHZhbGlkLlxuICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShkYXRlcmFuZ2UsICFpbnZhbGlkRGF0ZXJhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gZm9jdXMgZXZlbnQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIHB1YmxpYyBmb2N1c0V2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5mb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gYmx1ciBldmVudC5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgYmx1ckV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXJhbmdlQ29udHJvbFN0YXRlU2VydmljZS5mb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGV2ZW50cyB0byBub3RpZnkgZm9ybSBjb250cm9scywgdHJpZ2dlciB2YWxpZGF0aW9uIGFuZCB1cGRhdGUgYXR0cmlidXRlcy9wcm9wZXJ0aWVzLlxuICAgKi9cbiAgcHJpdmF0ZSB0cmlnZ2VyQ2hhbmdlKCk6IHZvaWQge1xuICAgIGxldCBkYXRlcmFuZ2UgPSB0aGlzLmRhdGVyYW5nZVNlcnZpY2Uuc2VsZWN0ZWREYXRlcmFuZ2U7XG5cbiAgICAvLyBXaGVuIGBmcm9tYCBvciBgdG9gIHByb3BlcnRpZXMgYXJlIG5vdCBzZXQsIHJldHVybiBudWxsLlxuICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgcmVxdWlyZWRgIHZhbGlkYXRvciAoaWYgcHJlc2VudCkuXG4gICAgaWYgKCF0aGlzLmRhdGVyYW5nZVNlcnZpY2UuaXNWYWxpZCgpKSB7XG4gICAgICBkYXRlcmFuZ2UgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIE1hcmsgY29udHJvbCBkaXJ0eS5cbiAgICB0aGlzLm9uVG91Y2hlZChkYXRlcmFuZ2UpO1xuICAgIC8vIFVwZGF0ZSBOZ01vZGVsLlxuICAgIHRoaXMub25DaGFuZ2VkKGRhdGVyYW5nZSk7XG4gICAgLy8gTm90aWZ5IHBhcmVudC5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZGF0ZXJhbmdlKTtcbiAgICAvLyBVcGRhdGUgYXR0cmlidXRlcy9wcm9wZXJ0aWVzLlxuICAgIHRoaXMudXBkYXRlSW5wdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaW5wdXQgd2l0aCBmcmllbmRseSBkYXRlcmFuZ2UgdGV4dC5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSW5wdXQoKTogdm9pZCB7XG4gICAgbGV0IGRhdGVTdHJpbmc7XG4gICAgaWYgKHRoaXMuZGF0ZXJhbmdlU2VydmljZS50aW1lQWN0aXZlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS5zZWxlY3RlZERhdGVyYW5nZSAmJlxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnNlbGVjdGVkRGF0ZXJhbmdlLCAnZnJvbVRpbWUnKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShcbiAgICAgICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2Uuc2VsZWN0ZWREYXRlcmFuZ2VcbiAgICAgICAgICAgID8gKHRoaXMuZGF0ZXJhbmdlU2VydmljZS5zZWxlY3RlZERhdGVyYW5nZSBhcyBOdWxsYWJsZVRpbWVyYW5nZSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGF0ZVN0cmluZyA9IHRoaXMuZGF0ZXJhbmdlUGFyc2luZ1NlcnZpY2UudG9Mb2NhbGVTdHJpbmdXaXRoVGltZShcbiAgICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnNlbGVjdGVkRGF0ZXJhbmdlLFxuICAgICAgICB0aGlzLnNlcGFyYXRvclRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVTdHJpbmcgPSB0aGlzLmRhdGVyYW5nZVBhcnNpbmdTZXJ2aWNlLnRvTG9jYWxlU3RyaW5nKFxuICAgICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2Uuc2VsZWN0ZWREYXRlcmFuZ2UsXG4gICAgICAgIHRoaXMuc2VwYXJhdG9yVGV4dFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgZGF0ZVN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kLiBTZXQgdmFsdWUgZnJvbSBOZ01vZGVsLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBEYXRlcmFuZ2UgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogTnVsbGFibGVEYXRlcmFuZ2UpIHtcbiAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZC4gUmVnaXN0ZXIgY2hhbmdlIGV2ZW50LiBXaGVuIHZhbHVlIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBmbiAtIENoYW5nZSBldmVudC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IE51bGxhYmxlRGF0ZXJhbmdlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VkID0gKF92YWx1ZTogTnVsbGFibGVEYXRlcmFuZ2UpOiB2b2lkID0+IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kLiBSZWdpc3RlciB0b3VjaCBldmVudC4gV2hlbiBjb250cm9sIGlzIGRpcnR5LlxuICAgKiBAcGFyYW0gZm4gLSBUb3VjaCBldmVudC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKHZhbHVlOiBOdWxsYWJsZURhdGVyYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBwcml2YXRlIG9uVG91Y2hlZCA9IChfdmFsdWU6IE51bGxhYmxlRGF0ZXJhbmdlKTogdm9pZCA9PiB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZC4gU2V0IGRpc2FibGVkIHN0YXRlLlxuICAgKiBAcGFyYW0gZGlzYWJsZWQgLSBEaXNhYmxlZCBzdGF0ZS5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcmFuZ2VDb250cm9sU3RhdGVTZXJ2aWNlLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVhc3lBY2Nlc3ModmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHRoaXMucmVnZXhXLnRlc3QodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ3cnLCAnJyk7XG4gICAgICBub3cuc2V0RGF0ZShub3cuZ2V0RGF0ZSgpIC0gTnVtYmVyKHZhbHVlKSAqIDcpO1xuICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkRGF0ZXJhbmdlKFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogbmV3IERheU1vZGVsKG5vdyksXG4gICAgICAgICAgdG86IG5ldyBEYXlNb2RlbChuZXcgRGF0ZSgpKSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVnZXhELnRlc3QodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2QnLCAnJyk7XG4gICAgICBub3cuc2V0RGF0ZShub3cuZ2V0RGF0ZSgpIC0gTnVtYmVyKHZhbHVlKSk7XG4gICAgICB0aGlzLmRhdGVyYW5nZVNlcnZpY2UudXBkYXRlU2VsZWN0ZWREYXRlcmFuZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tOiBuZXcgRGF5TW9kZWwobm93KSxcbiAgICAgICAgICB0bzogbmV3IERheU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZWdleEgudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnaCcsICcnKTtcbiAgICAgIHRoaXMuZGF0ZXJhbmdlU2VydmljZS51cGRhdGVTZWxlY3RlZERhdGVyYW5nZShcbiAgICAgICAge1xuICAgICAgICAgIGZyb206IG5ldyBEYXlNb2RlbChuZXcgRGF0ZSgpKSxcbiAgICAgICAgICB0bzogbmV3IERheU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICAgIGZyb21UaW1lOiBuZXcgVGltZU1vZGVsKG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gTnVtYmVyKHZhbHVlKSAqIDM2MDAwMDApKSxcbiAgICAgICAgICB0b1RpbWU6IG5ldyBUaW1lTW9kZWwobmV3IERhdGUoKSksXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlZ2V4TS50ZXN0KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdtJywgJycpO1xuICAgICAgdGhpcy5kYXRlcmFuZ2VTZXJ2aWNlLnVwZGF0ZVNlbGVjdGVkRGF0ZXJhbmdlKFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogbmV3IERheU1vZGVsKG5ldyBEYXRlKCkpLFxuICAgICAgICAgIHRvOiBuZXcgRGF5TW9kZWwobmV3IERhdGUoKSksXG4gICAgICAgICAgZnJvbVRpbWU6IG5ldyBUaW1lTW9kZWwobmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBOdW1iZXIodmFsdWUpICogNjAwMDApKSxcbiAgICAgICAgICB0b1RpbWU6IG5ldyBUaW1lTW9kZWwobmV3IERhdGUoKSksXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -53,11 +53,11 @@ export class ClrHistory {
53
53
  this.historyService.setHistoryPinned(this.username, !this.pinActivated);
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, deps: [{ token: i1.ClrHistoryService }, { token: HISTORY_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i3.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i3.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i3.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i3.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: i4.ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }] }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary history-button\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{ dropdownHeader }}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{ history.title }}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{ dropdownPin }}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{ dropdownUnpin }}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i3.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i3.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i3.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i3.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: i4.ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }] }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, decorators: [{
59
59
  type: Component,
60
- args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n" }]
60
+ args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary history-button\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{ dropdownHeader }}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{ history.title }}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{ dropdownPin }}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{ dropdownUnpin }}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n" }]
61
61
  }], ctorParameters: () => [{ type: i1.ClrHistoryService }, { type: i5.HistoryProvider, decorators: [{
62
62
  type: Inject,
63
63
  args: [HISTORY_PROVIDER]
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
88
88
  type: Input,
89
89
  args: ['clrPosition']
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS50cyIsIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFFdkUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFNOUMsTUFBTSxPQUFPLFVBQVU7SUFpQnJCLFlBQ1UsY0FBaUMsRUFDSyxlQUFnQztRQUR0RSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDSyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFoQnpELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDWixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUMxQixrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUVyQyxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLdEMsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFFcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdDVSxVQUFVLG1EQW1CWCxnQkFBZ0I7a0dBbkJmLFVBQVUsMlpDcEJ2QiwyNUJBaUJBOzsyRkRHYSxVQUFVO2tCQUp0QixTQUFTOytCQUNFLGFBQWE7OzBCQXNCcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUFHLFFBQVE7eUNBbEJmLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFDQyxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBL0IsS0FBSzt1QkFBQyxjQUFjO2dCQUNPLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNELFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNJLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNMLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xySGlzdG9yeU1vZGVsIH0gZnJvbSAnLi9oaXN0b3J5LW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4vaGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCBoaXN0b3J5SWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcbmltcG9ydCB7IEhJU1RPUllfUFJPVklERVIsIEhpc3RvcnlQcm92aWRlciB9IGZyb20gJy4vaGlzdG9yeS5wcm92aWRlcic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyhoaXN0b3J5SWNvbiwgYW5nbGVJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vaGlzdG9yeS5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xySGlzdG9yeSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdjbHJVc2VybmFtZScpIHVzZXJuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgnY2xyQ29udGV4dCcpIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIEBJbnB1dCgnY2xyUGluQWN0aXZlJykgcGluQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJEcm9wZG93bkhlYWRlcicpIGRyb3Bkb3duSGVhZGVyID0gJ0hpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duUGluJykgZHJvcGRvd25QaW4gPSAnUGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duVW5waW4nKSBkcm9wZG93blVucGluID0gJ1VucGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRvbWFpbicpIGRvbWFpbjogc3RyaW5nO1xuICBASW5wdXQoJ2NsclBvc2l0aW9uJykgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcblxuICAvKipcbiAgICogVGhlIGFycmF5IG9mIGhpc3RvcnkgZWxlbWVudHMgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgaGlzdG9yeUVsZW1lbnRzOiBDbHJIaXN0b3J5TW9kZWxbXSA9IFtdO1xuICBwaW5BY3RpdmF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhpc3RvcnlTZXJ2aWNlOiBDbHJIaXN0b3J5U2VydmljZSxcbiAgICBASW5qZWN0KEhJU1RPUllfUFJPVklERVIpIEBPcHRpb25hbCgpIHByaXZhdGUgaGlzdG9yeVByb3ZpZGVyOiBIaXN0b3J5UHJvdmlkZXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVNlcnZpY2UuZ2V0SGlzdG9yeURpc3BsYXkodGhpcy51c2VybmFtZSwgdGhpcy5jb250ZXh0KTtcbiAgICB0aGlzLmhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVByb3ZpZGVyXG4gICAgICA/IHRoaXMuaGlzdG9yeVByb3ZpZGVyLmdldE1vZGlmaWVkSGlzdG9yeUVudHJpZXMoaGlzdG9yeUVsZW1lbnRzKVxuICAgICAgOiBoaXN0b3J5RWxlbWVudHM7XG5cbiAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLmluaXRpYWxpemVDb29raWVTZXR0aW5ncyh0aGlzLnVzZXJuYW1lLCB0aGlzLmRvbWFpbik7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5jb29raWVTZXR0aW5ncyQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMucGluQWN0aXZhdGVkID0gc2V0dGluZ3MuZmluZChzZXR0aW5nID0+IHNldHRpbmcudXNlcm5hbWUgPT09IHRoaXMudXNlcm5hbWUpLmhpc3RvcnlQaW5uZWQ7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VsZWN0KGhpc3Rvcnk6IENsckhpc3RvcnlNb2RlbCk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaGlzdG9yeS51cmw7XG4gIH1cblxuICB0b2dnbGVQaW5IaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2Uuc2V0SGlzdG9yeVBpbm5lZCh0aGlzLnVzZXJuYW1lLCAhdGhpcy5waW5BY3RpdmF0ZWQpO1xuICB9XG59XG4iLCI8Y2xyLWRyb3Bkb3duPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tb3V0bGluZS1wcmltYXJ5XCIgY2xyRHJvcGRvd25UcmlnZ2VyPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImhpc3RvcnlcIiBzaXplPVwiMTZcIj48L2Nkcy1pY29uPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImFuZ2xlXCIgZGlyZWN0aW9uPVwiZG93blwiIHNpemU9XCIxMlwiPjwvY2RzLWljb24+XG4gIDwvYnV0dG9uPlxuICA8Y2xyLWRyb3Bkb3duLW1lbnUgW2NsclBvc2l0aW9uXT1cInBvc2l0aW9uXCIgKmNscklmT3Blbj5cbiAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57e2Ryb3Bkb3duSGVhZGVyfX08L2xhYmVsPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsckRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgaGlzdG9yeSBvZiBoaXN0b3J5RWxlbWVudHNcIiAoY2xpY2spPVwic2VsZWN0KGhpc3RvcnkpXCI+XG4gICAgICB7e2hpc3RvcnkudGl0bGV9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJwaW5BY3RpdmVcIiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIiByb2xlPVwic2VwYXJhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgPGJ1dHRvbiBjbHJEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInRvZ2dsZVBpbkhpc3RvcnkoKVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwaW5BY3RpdmUgJiYgIXBpbkFjdGl2YXRlZFwiPnt7ZHJvcGRvd25QaW59fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGluQWN0aXZlICYmIHBpbkFjdGl2YXRlZFwiPnt7ZHJvcGRvd25VbnBpbn19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Nsci1kcm9wZG93bi1tZW51PlxuPC9jbHItZHJvcGRvd24+XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS50cyIsIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFFdkUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFNOUMsTUFBTSxPQUFPLFVBQVU7SUFpQnJCLFlBQ1UsY0FBaUMsRUFDSyxlQUFnQztRQUR0RSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDSyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFoQnpELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDWixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUMxQixrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUVyQyxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLdEMsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFFcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdDVSxVQUFVLG1EQW1CWCxnQkFBZ0I7a0dBbkJmLFVBQVUsMlpDcEJ2QixrN0JBaUJBOzsyRkRHYSxVQUFVO2tCQUp0QixTQUFTOytCQUNFLGFBQWE7OzBCQXNCcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUFHLFFBQVE7eUNBbEJmLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFDQyxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBL0IsS0FBSzt1QkFBQyxjQUFjO2dCQUNPLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNELFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNJLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNMLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xySGlzdG9yeU1vZGVsIH0gZnJvbSAnLi9oaXN0b3J5LW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4vaGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCBoaXN0b3J5SWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcbmltcG9ydCB7IEhJU1RPUllfUFJPVklERVIsIEhpc3RvcnlQcm92aWRlciB9IGZyb20gJy4vaGlzdG9yeS5wcm92aWRlcic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyhoaXN0b3J5SWNvbiwgYW5nbGVJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vaGlzdG9yeS5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xySGlzdG9yeSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdjbHJVc2VybmFtZScpIHVzZXJuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgnY2xyQ29udGV4dCcpIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIEBJbnB1dCgnY2xyUGluQWN0aXZlJykgcGluQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJEcm9wZG93bkhlYWRlcicpIGRyb3Bkb3duSGVhZGVyID0gJ0hpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duUGluJykgZHJvcGRvd25QaW4gPSAnUGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duVW5waW4nKSBkcm9wZG93blVucGluID0gJ1VucGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRvbWFpbicpIGRvbWFpbjogc3RyaW5nO1xuICBASW5wdXQoJ2NsclBvc2l0aW9uJykgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcblxuICAvKipcbiAgICogVGhlIGFycmF5IG9mIGhpc3RvcnkgZWxlbWVudHMgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgaGlzdG9yeUVsZW1lbnRzOiBDbHJIaXN0b3J5TW9kZWxbXSA9IFtdO1xuICBwaW5BY3RpdmF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhpc3RvcnlTZXJ2aWNlOiBDbHJIaXN0b3J5U2VydmljZSxcbiAgICBASW5qZWN0KEhJU1RPUllfUFJPVklERVIpIEBPcHRpb25hbCgpIHByaXZhdGUgaGlzdG9yeVByb3ZpZGVyOiBIaXN0b3J5UHJvdmlkZXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVNlcnZpY2UuZ2V0SGlzdG9yeURpc3BsYXkodGhpcy51c2VybmFtZSwgdGhpcy5jb250ZXh0KTtcbiAgICB0aGlzLmhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVByb3ZpZGVyXG4gICAgICA/IHRoaXMuaGlzdG9yeVByb3ZpZGVyLmdldE1vZGlmaWVkSGlzdG9yeUVudHJpZXMoaGlzdG9yeUVsZW1lbnRzKVxuICAgICAgOiBoaXN0b3J5RWxlbWVudHM7XG5cbiAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLmluaXRpYWxpemVDb29raWVTZXR0aW5ncyh0aGlzLnVzZXJuYW1lLCB0aGlzLmRvbWFpbik7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5jb29raWVTZXR0aW5ncyQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMucGluQWN0aXZhdGVkID0gc2V0dGluZ3MuZmluZChzZXR0aW5nID0+IHNldHRpbmcudXNlcm5hbWUgPT09IHRoaXMudXNlcm5hbWUpLmhpc3RvcnlQaW5uZWQ7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VsZWN0KGhpc3Rvcnk6IENsckhpc3RvcnlNb2RlbCk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaGlzdG9yeS51cmw7XG4gIH1cblxuICB0b2dnbGVQaW5IaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2Uuc2V0SGlzdG9yeVBpbm5lZCh0aGlzLnVzZXJuYW1lLCAhdGhpcy5waW5BY3RpdmF0ZWQpO1xuICB9XG59XG4iLCI8Y2xyLWRyb3Bkb3duPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tb3V0bGluZS1wcmltYXJ5IGhpc3RvcnktYnV0dG9uXCIgY2xyRHJvcGRvd25UcmlnZ2VyPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImhpc3RvcnlcIiBzaXplPVwiMTZcIj48L2Nkcy1pY29uPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImFuZ2xlXCIgZGlyZWN0aW9uPVwiZG93blwiIHNpemU9XCIxMlwiPjwvY2RzLWljb24+XG4gIDwvYnV0dG9uPlxuICA8Y2xyLWRyb3Bkb3duLW1lbnUgW2NsclBvc2l0aW9uXT1cInBvc2l0aW9uXCIgKmNscklmT3Blbj5cbiAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBkcm9wZG93bkhlYWRlciB9fTwvbGFiZWw+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xyRHJvcGRvd25JdGVtICpuZ0Zvcj1cImxldCBoaXN0b3J5IG9mIGhpc3RvcnlFbGVtZW50c1wiIChjbGljayk9XCJzZWxlY3QoaGlzdG9yeSlcIj5cbiAgICAgIHt7IGhpc3RvcnkudGl0bGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwicGluQWN0aXZlXCIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCIgcm9sZT1cInNlcGFyYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgIDxidXR0b24gY2xyRHJvcGRvd25JdGVtIChjbGljayk9XCJ0b2dnbGVQaW5IaXN0b3J5KClcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGluQWN0aXZlICYmICFwaW5BY3RpdmF0ZWRcIj57eyBkcm9wZG93blBpbiB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGluQWN0aXZlICYmIHBpbkFjdGl2YXRlZFwiPnt7IGRyb3Bkb3duVW5waW4gfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvY2xyLWRyb3Bkb3duLW1lbnU+XG48L2Nsci1kcm9wZG93bj5cbiJdfQ==