@coreui/angular-pro 4.2.17 → 4.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/calendar/calendar/calendar.component.mjs +10 -8
- package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +11 -8
- package/esm2020/lib/calendar/calendar.utils.mjs +1 -1
- package/esm2020/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +20 -7
- package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +3 -3
- package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +152 -102
- package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +11 -8
- package/esm2020/lib/multi-select/multi-select.module.mjs +5 -4
- package/esm2020/lib/smart-table/public_api.mjs +2 -1
- package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +20 -15
- package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +17 -3
- package/esm2020/lib/smart-table/smart-table.module.mjs +3 -3
- package/fesm2015/coreui-angular-pro.mjs +292 -202
- package/fesm2015/coreui-angular-pro.mjs.map +1 -1
- package/fesm2020/coreui-angular-pro.mjs +284 -197
- package/fesm2020/coreui-angular-pro.mjs.map +1 -1
- package/lib/calendar/calendar/calendar.component.d.ts +2 -2
- package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +9 -3
- package/lib/multi-select/multi-select/multi-select.component.d.ts +27 -6
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
- package/lib/multi-select/multi-select.module.d.ts +2 -1
- package/lib/smart-table/public_api.d.ts +1 -0
- package/lib/smart-table/smart-table/smart-table.component.d.ts +6 -3
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +5 -1
- package/lib/smart-table/smart-table.module.d.ts +1 -1
- package/package.json +4 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostBinding, Input, Output, ViewChildren } from '@angular/core';
|
|
2
2
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
3
|
-
import { tryDate } from '../calendar.utils';
|
|
4
|
-
import { CalendarService } from '../calendar.service';
|
|
5
3
|
import { CalendarMonthComponent } from '../calendar-month/calendar-month.component';
|
|
4
|
+
import { CalendarService } from '../calendar.service';
|
|
5
|
+
import { tryDate } from '../calendar.utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "../calendar.service";
|
|
8
8
|
import * as i2 from "@angular/common";
|
|
@@ -40,11 +40,13 @@ export class CalendarComponent {
|
|
|
40
40
|
* @type (Date | string)
|
|
41
41
|
*/
|
|
42
42
|
set calendarDate(value) {
|
|
43
|
-
const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.
|
|
43
|
+
// const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));
|
|
44
|
+
const _value = new Date(tryDate(value ?? this.startDate, 'calendarDate'));
|
|
45
|
+
if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
|
|
46
|
+
const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
|
|
47
|
+
this._calendarDate = _calendarDate;
|
|
48
|
+
this.calendarDateChange.emit(_calendarDate);
|
|
49
|
+
this.calendarService.update({ calendarDate: _calendarDate });
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
get calendarDate() {
|
|
@@ -371,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
371
373
|
type: ViewChildren,
|
|
372
374
|
args: [CalendarMonthComponent]
|
|
373
375
|
}] } });
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxlQUFlLEVBQW9ELE1BQU0scUJBQXFCLENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFVcEYsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXFCbEMsa0JBQWEsR0FBUyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBYzFDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFtQnZCLGVBQVUsR0FBa0IsU0FBUyxDQUFDO1FBY3RDLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQWlCakQsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFlL0IsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFzQnZCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBYzVCLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFhNUIsYUFBUSxHQUFnQixJQUFJ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TUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDOzsrR0E5V1UsaUJBQWlCO21HQUFqQixpQkFBaUIsMnFCQUZqQixDQUFDLGVBQWUsQ0FBQyw2REFxUmQsc0JBQXNCLHlFQzdTdEMsNmhCQWVBOzRGRFdhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxZQUFZLFlBR1osV0FBVyxhQUNWLENBQUMsZUFBZSxDQUFDO3NHQW1CeEIsWUFBWTtzQkFEZixLQUFLO2dCQW9CRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLFNBQVM7c0JBRFosS0FBSztnQkFlRixhQUFhO3NCQURoQixLQUFLO2dCQWVGLFNBQVM7c0JBRFosS0FBSztnQkFrQkYsT0FBTztzQkFEVixLQUFLO2dCQXlCRixjQUFjO3NCQURqQixLQUFLO2dCQWNGLE1BQU07c0JBRFQsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBY0YsT0FBTztzQkFEVixLQUFLO2dCQWVGLFVBQVU7c0JBRGIsS0FBSztnQkFlRixZQUFZO3NCQURmLEtBQUs7Z0JBaUJGLEtBQUs7c0JBRFIsS0FBSztnQkFnQkYsSUFBSTtzQkFEUCxLQUFLO2dCQWdCRixhQUFhO3NCQURoQixLQUFLO2dCQVdGLFVBQVU7c0JBRGIsS0FBSztnQkFLSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQWVILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQU9rQixjQUFjO3NCQUFuRCxZQUFZO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcblxyXG5pbXBvcnQgeyB0cnlEYXRlIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb250aENvbXBvbmVudCB9IGZyb20gJy4uL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXInLFxyXG4gIHByb3ZpZGVyczogW0NhbGVuZGFyU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbmF2aWdhdGlvbjogQm9vbGVhbklucHV0O1xyXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uYXZZZWFyRmlyc3Q6IEJvb2xlYW5JbnB1dDtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmFuZ2U6IEJvb2xlYW5JbnB1dDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgZGF0ZSBvZiB0aGUgY29tcG9uZW50XHJcbiAgICogQHR5cGUgIChEYXRlIHwgc3RyaW5nKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNhbGVuZGFyRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSgodmFsdWUgPz8gdGhpcy5zdGFydERhdGUgPz8gbmV3IERhdGUoKSksICdjYWxlbmRhckRhdGUnKSk7XHJcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gX3ZhbHVlLmdldFRpbWUoKSkge1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSk7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlQ2hhbmdlLmVtaXQoX3ZhbHVlKTtcclxuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBfdmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBjYWxlbmRhckRhdGUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJEYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jYWxlbmRhckRhdGU6IERhdGUgPSB0cnlEYXRlKG5ldyBEYXRlKCkpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbnVtYmVyIG9mIGNhbGVuZGFycyB0aGF0IHJlbmRlciBvbiBkZXNrdG9wIGRldmljZXMuXHJcbiAgICogQHR5cGUgbnVtYmVyXHJcbiAgICogZGVmYXVsdCAxXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY2FsZW5kYXJzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2NhbGVuZGFycyA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGNhbGVuZGFycygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFycztcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2FsZW5kYXJzOiBudW1iZXIgPSAxO1xyXG5cclxuICBnZXQgY2FsZW5kYXJzQXJyYXkoKSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5jYWxlbmRhcnMgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGZvcm1hdCBvZiBkYXkgbmFtZS5cclxuICAgKiBAZGVmYXVsdCAnbnVtZXJpYydcclxuICAgKiBAdHlwZSBEYXlGb3JtYXRUeXBlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF5Rm9ybWF0KHZhbHVlOiBEYXlGb3JtYXRUeXBlKSB7XHJcbiAgICB0aGlzLl9kYXlGb3JtYXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGRheUZvcm1hdDogdGhpcy5fZGF5Rm9ybWF0IH0pO1xyXG4gIH1cclxuICBnZXQgZGF5Rm9ybWF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RheUZvcm1hdDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZ5IHRoZSBsaXN0IG9mIGRhdGVzIHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLlxyXG4gICAqIEB0eXBlICAoRGF0ZVtdIHwgRGF0ZVtdW10pXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdIHwgRGF0ZVtdW10pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGRpc2FibGVkRGF0ZXM6IHRoaXMuX2Rpc2FibGVkRGF0ZXMgfSk7XHJcbiAgfVxyXG4gIGdldCBkaXNhYmxlZERhdGVzKCk6IERhdGVbXSB8IERhdGVbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xyXG4gIH1cclxuICBwcml2YXRlIF9kaXNhYmxlZERhdGVzOiAoRGF0ZVtdIHwgRGF0ZVtdW10pID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgZGF0ZS5cclxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHN0YXJ0RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnc3RhcnREYXRlJykgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiB0aGlzLl9zdGFydERhdGUgfSk7XHJcbiAgICBpZiAoIXRoaXMucmFuZ2UgfHwgIXRoaXMuX3N0YXJ0RGF0ZSB8fCAodGhpcy5lbmREYXRlICYmIHRoaXMuX3N0YXJ0RGF0ZSA+IHRoaXMuZW5kRGF0ZSkpIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGU7XHJcbiAgfVxyXG4gIF9zdGFydERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBzZWxlY3RlZCB0byBkYXRlIChyYW5nZSkuXHJcbiAgICogQHR5cGUgIChEYXRlIHwgbnVsbClcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBlbmREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fZW5kRGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnZW5kRGF0ZScpIDogbnVsbDtcclxuICAgIC8vIHRoaXMuX2VuZERhdGUgPSB0aGlzLnJhbmdlID8gdGhpcy5fZW5kRGF0ZSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBlbmREYXRlOiB0aGlzLl9lbmREYXRlIH0pO1xyXG4gIH1cclxuICBnZXQgZW5kRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnJhbmdlID8gdGhpcy5fZW5kRGF0ZSA6IG51bGw7XHJcbiAgfVxyXG4gIF9lbmREYXRlOiAoRGF0ZSB8IG51bGwpID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGF5IG9mIHN0YXJ0IHdlZWsuXHJcbiAgICogLSAwIC0gU3VuZGF5LFxyXG4gICAqIC0gMSAtIE1vbmRheSxcclxuICAgKiAtIDIgLSBUdWVzZGF5LFxyXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcclxuICAgKiAtIDQgLSBUaHVyc2RheSxcclxuICAgKiAtIDUgLSBGcmlkYXksXHJcbiAgICogLSA2IC0gU2F0dXJkYXksXHJcbiAgICpcclxuICAgKiBAdHlwZSBudW1iZXJcclxuICAgKiBAZGVmYXVsdCAxXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBmaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xyXG4gIH1cclxuICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxyXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGxvY2FsZTogdmFsdWUgfSk7XHJcbiAgfVxyXG4gIGdldCBsb2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbWF4RGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnbWF4RGF0ZScpIDogbnVsbDtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IG1heERhdGU6IHRoaXMuX21heERhdGUgfSk7XHJcbiAgfVxyXG4gIGdldCBtYXhEYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBtaW5EYXRlOiB0aGlzLl9taW5EYXRlIH0pO1xyXG4gIH1cclxuICBnZXQgbWluRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9taW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgbmF2aWdhdGlvbi5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbmF2aWdhdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbmF2aWdhdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBuYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XHJcbiAgfVxyXG4gIHByaXZhdGUgX25hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBSZW9yZGVyIHllYXItbW9udGggbmF2aWdhdGlvbiwgYW5kIHJlbmRlciB5ZWFyIGZpcnN0LlxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5hdlllYXJGaXJzdCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbmF2WWVhckZpcnN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IG5hdlllYXJGaXJzdDogdGhpcy5fbmF2WWVhckZpcnN0IH0pO1xyXG4gIH1cclxuICBnZXQgbmF2WWVhckZpcnN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hdlllYXJGaXJzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX25hdlllYXJGaXJzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgcmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JhbmdlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHJhbmdlOiB0aGlzLl9yYW5nZSB9KTtcclxuICB9XHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuICBwcml2YXRlIF9yYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgY2FsZW5kYXIgdmlldy5cclxuICAgKiBAdHlwZSAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycydcclxuICAgKiBAZGVmYXVsdCAnZGF5cydcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB2aWV3KHZhbHVlKSB7XHJcbiAgICB0aGlzLl92aWV3ID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB2YWx1ZSB9KTtcclxuICB9XHJcbiAgZ2V0IHZpZXcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlldztcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cclxuICAgKiBAdHlwZSBudW1iZXIgfCAnbG9uZycgfCAnbmFycm93JyB8ICdzaG9ydCdcclxuICAgKiBAZGVmYXVsdCAnc2hvcnQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgd2Vla2RheUZvcm1hdCh2YWx1ZTogV2Vla2RheUZvcm1hdFR5cGUpIHtcclxuICAgIHRoaXMuX3dlZWtkYXlGb3JtYXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHdlZWtkYXlGb3JtYXQ6IHRoaXMuX3dlZWtkYXlGb3JtYXQgfSk7XHJcbiAgfVxyXG4gIGdldCB3ZWVrZGF5Rm9ybWF0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlGb3JtYXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3dlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0ZUZpbHRlcih2YWx1ZTogRGF0ZUZpbHRlclR5cGUgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGRhdGVGaWx0ZXI6IHZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGNhbGVuZGFyQ2VsbEhvdmVyOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcclxuICBAT3V0cHV0KCkgY2FsZW5kYXJEYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcbiAgQE91dHB1dCgpIGVuZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xyXG4gIEBPdXRwdXQoKSBzdGFydERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xyXG4gIEBPdXRwdXQoKSB2aWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvLyB1c2VkIHdpdGggY2FsZW5kYXJTZXJ2aWNlXHJcbiAgc2V0IGhvdmVyRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX2hvdmVyRGF0ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYWxlbmRhckNlbGxIb3Zlci5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGhvdmVyRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faG92ZXJEYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9ob3ZlckRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBjYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdjYWxlbmRhcnMnOiB0cnVlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihDYWxlbmRhck1vbnRoQ29tcG9uZW50KSBjYWxlbmRhck1vbnRocyE6IFF1ZXJ5TGlzdDxDYWxlbmRhck1vbnRoQ29tcG9uZW50PjtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBsb2NhbGU6IHRoaXMubG9jYWxlLCB2aWV3OiB0aGlzLnZpZXcsIHJhbmdlOiB0aGlzLnJhbmdlIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJTdGF0ZVN1YnNjcmliZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoc3Vic2NyaWJlKSB7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiA9XHJcbiAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSQuc3Vic2NyaWJlKHN0YXRlID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzdGF0ZSk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkgaW4gdGhpcykge1xyXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICBpZiAodGhpc1trZXldICE9PSBzdGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3N0YXJ0RGF0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVDaGFuZ2UuZW1pdCh0aGlzLl9zdGFydERhdGUpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnZW5kRGF0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlQ2hhbmdlLmVtaXQodGhpcy5fZW5kRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNldENhbGVuZGFyUGFnZSh5ZWFyczogbnVtYmVyLCBtb250aHMgPSAwLCBzZXRNb250aD86IG51bWJlcikge1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuY2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMuY2FsZW5kYXJEYXRlLmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG5cclxuICAgIHllYXJzICYmIGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xyXG4gICAgbW9udGhzICYmIGQuc2V0TW9udGgoZC5nZXRNb250aCgpICsgbW9udGhzKTtcclxuICAgIHR5cGVvZiBzZXRNb250aCA9PT0gJ251bWJlcicgJiYgZC5zZXRNb250aChzZXRNb250aCk7XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhckRhdGUgPSBkO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlTmF2aWdhdGlvbkNsaWNrKGRpcmVjdGlvbjogJ3ByZXYnIHwgJ25leHQnLCB5ZWFycyA9IGZhbHNlKSB7XHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncHJldicpIHtcclxuICAgICAgaWYgKHllYXJzKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UodGhpcy52aWV3ID09PSAneWVhcnMnID8gLTEwIDogLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMudmlldyAhPT0gJ2RheXMnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgLTEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSAnbmV4dCcpIHtcclxuICAgICAgaWYgKHllYXJzKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UodGhpcy52aWV3ID09PSAneWVhcnMnID8gMTAgOiAxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXcgIT09ICdkYXlzJykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgMSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZVxyXG4gICAqIEB0eXBlIHZvaWRcclxuICAgKi9cclxuICBwdWJsaWMgY2xlYXJEYXRlcygpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IG51bGwgfSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IG51bGwgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhbGVuZGFyIG9mIGNhbGVuZGFyc0FycmF5OyBsZXQgaT1pbmRleDtcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cInZpZXcgfCBjYWxlbmRhckNsYXNzVmlld1wiPlxyXG4gICAgPGMtY2FsZW5kYXItbmF2aWdhdGlvblxyXG4gICAgICBbYWRkTW9udGhzXT1cImlcIlxyXG4gICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uXCJcclxuICAgICAgKG5hdmlnYXRpb25DbGljayk9XCJoYW5kbGVOYXZpZ2F0aW9uQ2xpY2soJGV2ZW50LmRpcmVjdGlvbiwgJGV2ZW50LnllYXJzKVwiXHJcbiAgICA+PC9jLWNhbGVuZGFyLW5hdmlnYXRpb24+XHJcblxyXG4gICAgPGMtY2FsZW5kYXItbW9udGhcclxuICAgICAgW2FkZE1vbnRoc109XCJpXCJcclxuICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcclxuICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdFwiXHJcbiAgICA+PC9jLWNhbGVuZGFyLW1vbnRoPlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBb0QsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFVNUMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXlCbEMsa0JBQWEsR0FBUyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBZ0IxQyxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBcUJ2QixlQUFVLEdBQWtCLFNBQVMsQ0FBQztRQWdCdEMsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBbUJqRCxlQUFVLEdBQWdCLElBQUksQ0FBQztRQWlCL0IsYUFBUSxHQUFrQixJQUFJLENBQUM7UUF3QnZCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBZ0I1QixZQUFPLEdBQVcsU0FBUyxDQUFDO1FBZTVCLGFBQVEsR0FBZ0Is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QVc7dUJBQUMsT0FBTztnQkFPa0IsY0FBYztzQkFBbkQsWUFBWTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyTW9udGhDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIERhdGVGaWx0ZXJUeXBlLCBEYXlGb3JtYXRUeXBlLCBXZWVrZGF5Rm9ybWF0VHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0cnlEYXRlIH0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYy1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGV4cG9ydEFzOiAnY0NhbGVuZGFyJyxcclxuICBwcm92aWRlcnM6IFtDYWxlbmRhclNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX25hdmlnYXRpb246IEJvb2xlYW5JbnB1dDtcclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbmF2WWVhckZpcnN0OiBCb29sZWFuSW5wdXQ7XHJcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JhbmdlOiBCb29sZWFuSW5wdXQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGRhdGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IHN0cmluZylcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhckRhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIC8vIGNvbnN0IF92YWx1ZSA9IG5ldyBEYXRlKHRyeURhdGUoKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlID8/IG5ldyBEYXRlKCkpLCAnY2FsZW5kYXJEYXRlJykpO1xyXG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSh2YWx1ZSA/PyB0aGlzLnN0YXJ0RGF0ZSwgJ2NhbGVuZGFyRGF0ZScpKTtcclxuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XHJcbiAgICAgIGNvbnN0IF9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBfY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KF9jYWxlbmRhckRhdGUpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IF9jYWxlbmRhckRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyRGF0ZTogRGF0ZSA9IHRyeURhdGUobmV3IERhdGUoKSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cclxuICAgKiBAdHlwZSBudW1iZXJcclxuICAgKiBkZWZhdWx0IDFcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhcnModmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fY2FsZW5kYXJzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhbGVuZGFycygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyczogbnVtYmVyID0gMTtcclxuXHJcbiAgZ2V0IGNhbGVuZGFyc0FycmF5KCkge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuY2FsZW5kYXJzIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBmb3JtYXQgb2YgZGF5IG5hbWUuXHJcbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXHJcbiAgICogQHR5cGUgRGF5Rm9ybWF0VHlwZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRheUZvcm1hdCh2YWx1ZTogRGF5Rm9ybWF0VHlwZSkge1xyXG4gICAgdGhpcy5fZGF5Rm9ybWF0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBkYXlGb3JtYXQ6IHRoaXMuX2RheUZvcm1hdCB9KTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlGb3JtYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF5Rm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF5Rm9ybWF0OiBEYXlGb3JtYXRUeXBlID0gJ251bWVyaWMnO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZ5IHRoZSBsaXN0IG9mIGRhdGVzIHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLlxyXG4gICAqIEB0eXBlICAoRGF0ZVtdIHwgRGF0ZVtdW10pXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdIHwgRGF0ZVtdW10pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGRpc2FibGVkRGF0ZXM6IHRoaXMuX2Rpc2FibGVkRGF0ZXMgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWREYXRlcygpOiBEYXRlW10gfCBEYXRlW11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IChEYXRlW10gfCBEYXRlW11bXSkgPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RhcnREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc3RhcnREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdzdGFydERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IHRoaXMuX3N0YXJ0RGF0ZSB9KTtcclxuICAgIGlmICghdGhpcy5yYW5nZSB8fCAhdGhpcy5fc3RhcnREYXRlIHx8ICh0aGlzLmVuZERhdGUgJiYgdGhpcy5fc3RhcnREYXRlID4gdGhpcy5lbmREYXRlKSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGU7XHJcbiAgfVxyXG5cclxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZW5kRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2VuZERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ2VuZERhdGUnKSA6IG51bGw7XHJcbiAgICAvLyB0aGlzLl9lbmREYXRlID0gdGhpcy5yYW5nZSA/IHRoaXMuX2VuZERhdGUgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZW5kRGF0ZTogdGhpcy5fZW5kRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgPyB0aGlzLl9lbmREYXRlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIF9lbmREYXRlOiAoRGF0ZSB8IG51bGwpID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGF5IG9mIHN0YXJ0IHdlZWsuXHJcbiAgICogLSAwIC0gU3VuZGF5LFxyXG4gICAqIC0gMSAtIE1vbmRheSxcclxuICAgKiAtIDIgLSBUdWVzZGF5LFxyXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcclxuICAgKiAtIDQgLSBUaHVyc2RheSxcclxuICAgKiAtIDUgLSBGcmlkYXksXHJcbiAgICogLSA2IC0gU2F0dXJkYXksXHJcbiAgICpcclxuICAgKiBAdHlwZSBudW1iZXJcclxuICAgKiBAZGVmYXVsdCAxXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9maXJzdERheU9mV2VlaztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpcnN0RGF5T2ZXZWVrOiBudW1iZXIgPSAxO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXHJcbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgbG9jYWxlOiB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX21heERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21heERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBtYXhEYXRlOiB0aGlzLl9tYXhEYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBtaW5EYXRlOiB0aGlzLl9taW5EYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbkRhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBuYXZpZ2F0aW9uLlxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBuYXZpZ2F0aW9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9uYXZpZ2F0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBuYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uYXZpZ2F0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBuYXZZZWFyRmlyc3QodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX25hdlllYXJGaXJzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBuYXZZZWFyRmlyc3Q6IHRoaXMuX25hdlllYXJGaXJzdCB9KTtcclxuICB9XHJcblxyXG4gIGdldCBuYXZZZWFyRmlyc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmF2WWVhckZpcnN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmF2WWVhckZpcnN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgcmFuZ2U6IHRoaXMuX3JhbmdlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXHJcbiAgICogQHR5cGUgJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnXHJcbiAgICogQGRlZmF1bHQgJ2RheXMnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlldyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLl92aWV3O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnID0gJ2RheXMnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cclxuICAgKiBAdHlwZSBudW1iZXIgfCAnbG9uZycgfCAnbmFycm93JyB8ICdzaG9ydCdcclxuICAgKiBAZGVmYXVsdCAnc2hvcnQnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgd2Vla2RheUZvcm1hdCh2YWx1ZTogV2Vla2RheUZvcm1hdFR5cGUpIHtcclxuICAgIHRoaXMuX3dlZWtkYXlGb3JtYXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHdlZWtkYXlGb3JtYXQ6IHRoaXMuX3dlZWtkYXlGb3JtYXQgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla2RheUZvcm1hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWVrZGF5Rm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfd2Vla2RheUZvcm1hdDogV2Vla2RheUZvcm1hdFR5cGUgPSAnc2hvcnQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBkYXRlRmlsdGVyKHZhbHVlOiBEYXRlRmlsdGVyVHlwZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZGF0ZUZpbHRlcjogdmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgY2FsZW5kYXJDZWxsSG92ZXI6IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xyXG4gIEBPdXRwdXQoKSBjYWxlbmRhckRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuICBAT3V0cHV0KCkgZW5kRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XHJcbiAgQE91dHB1dCgpIHN0YXJ0RGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IG51bGw+KCk7XHJcbiAgQE91dHB1dCgpIHZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8vIHVzZWQgd2l0aCBjYWxlbmRhclNlcnZpY2VcclxuICBzZXQgaG92ZXJEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5faG92ZXJEYXRlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNhbGVuZGFyQ2VsbEhvdmVyLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdmVyRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faG92ZXJEYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaG92ZXJEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXHJcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnY2FsZW5kYXJzJzogdHJ1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJNb250aENvbXBvbmVudCkgY2FsZW5kYXJNb250aHMhOiBRdWVyeUxpc3Q8Q2FsZW5kYXJNb250aENvbXBvbmVudD47XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgdmlldzogdGhpcy52aWV3LCByYW5nZTogdGhpcy5yYW5nZSB9KTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBpZiAoa2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXNba2V5XSAhPT0gc3RhdGVba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpc1trZXldID0gc3RhdGVba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLmVtaXQodGhpcy5fc3RhcnREYXRlKTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2VuZERhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuX2VuZERhdGUpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYWxlbmRhclBhZ2UoeWVhcnM6IG51bWJlciwgbW9udGhzID0gMCwgc2V0TW9udGg/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLmNhbGVuZGFyRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcclxuXHJcbiAgICB5ZWFycyAmJiBkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSArIHllYXJzKTtcclxuICAgIG1vbnRocyAmJiBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIG1vbnRocyk7XHJcbiAgICB0eXBlb2Ygc2V0TW9udGggPT09ICdudW1iZXInICYmIGQuc2V0TW9udGgoc2V0TW9udGgpO1xyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gZDtcclxuICB9XHJcblxyXG4gIGhhbmRsZU5hdmlnYXRpb25DbGljayhkaXJlY3Rpb246ICdwcmV2JyB8ICduZXh0JywgeWVhcnMgPSBmYWxzZSkge1xyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XHJcbiAgICAgIGlmICh5ZWFycykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKHRoaXMudmlldyA9PT0gJ3llYXJzJyA/IC0xMCA6IC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnZpZXcgIT09ICdkYXlzJykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKC0xKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIC0xKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ25leHQnKSB7XHJcbiAgICAgIGlmICh5ZWFycykge1xyXG4gICAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKHRoaXMudmlldyA9PT0gJ3llYXJzJyA/IDEwIDogMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy52aWV3ICE9PSAnZGF5cycpIHtcclxuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQYWdlKDAsIDEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzdGFydERhdGUgYW5kIGVuZERhdGVcclxuICAgKiBAdHlwZSB2b2lkXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyRGF0ZXMoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBlbmREYXRlOiBudWxsIH0pO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiBudWxsIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxlbmRhciBvZiBjYWxlbmRhcnNBcnJheTsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ2aWV3IHwgY2FsZW5kYXJDbGFzc1ZpZXdcIj5cclxuICAgIDxjLWNhbGVuZGFyLW5hdmlnYXRpb25cclxuICAgICAgW2FkZE1vbnRoc109XCJpXCJcclxuICAgICAgW25hdmlnYXRpb25dPVwibmF2aWdhdGlvblwiXHJcbiAgICAgIChuYXZpZ2F0aW9uQ2xpY2spPVwiaGFuZGxlTmF2aWdhdGlvbkNsaWNrKCRldmVudC5kaXJlY3Rpb24sICRldmVudC55ZWFycylcIlxyXG4gICAgPjwvYy1jYWxlbmRhci1uYXZpZ2F0aW9uPlxyXG5cclxuICAgIDxjLWNhbGVuZGFyLW1vbnRoXHJcbiAgICAgIFthZGRNb250aHNdPVwiaVwiXHJcbiAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXHJcbiAgICAgIFt3ZWVrZGF5Rm9ybWF0XT1cIndlZWtkYXlGb3JtYXRcIlxyXG4gICAgPjwvYy1jYWxlbmRhci1tb250aD5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
|
@@ -138,12 +138,13 @@ export class CalendarMonthComponent {
|
|
|
138
138
|
* @type Date
|
|
139
139
|
*/
|
|
140
140
|
set calendarDate(value) {
|
|
141
|
-
const _value = new Date(tryDate((value ?? this.startDate
|
|
142
|
-
if (this._calendarDate.getTime() !== _value.getTime()) {
|
|
141
|
+
const _value = new Date(tryDate((value ?? this.startDate), 'calendarDate'));
|
|
142
|
+
if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {
|
|
143
143
|
this.listOfYears = createGroupsInArray(getYears(_value.getFullYear()), 4);
|
|
144
|
-
|
|
144
|
+
const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));
|
|
145
|
+
this._calendarDate = _calendarDate;
|
|
145
146
|
this.setMonthDetails(this.date);
|
|
146
|
-
this.calendarService.update({ calendarDate:
|
|
147
|
+
this.calendarService.update({ calendarDate: _calendarDate });
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
150
|
get calendarDate() {
|
|
@@ -180,7 +181,7 @@ export class CalendarMonthComponent {
|
|
|
180
181
|
this.calendarService.update({ hoverDate: hoverValue });
|
|
181
182
|
}
|
|
182
183
|
handleYearCellClick(year) {
|
|
183
|
-
const calendarDate = new Date(year, this.calendarDate.getMonth(), 1);
|
|
184
|
+
const calendarDate = new Date(year, this.calendarDate.getMonth(), 1, 0, 0, 0, 0);
|
|
184
185
|
this.view = 'months';
|
|
185
186
|
this.calendarService.update({ view: this.view, calendarDate: calendarDate });
|
|
186
187
|
}
|
|
@@ -204,7 +205,7 @@ export class CalendarMonthComponent {
|
|
|
204
205
|
setCalendarPage(years, months = 0, setMonth) {
|
|
205
206
|
const year = this.date.getFullYear();
|
|
206
207
|
const month = this.date.getMonth();
|
|
207
|
-
const d = new Date(year, month);
|
|
208
|
+
const d = new Date(year, month, 1, 0, 0, 0, 0);
|
|
208
209
|
years && d.setFullYear(d.getFullYear() + years);
|
|
209
210
|
months && d.setMonth(d.getMonth() + months);
|
|
210
211
|
typeof setMonth === 'number' && d.setMonth(setMonth);
|
|
@@ -233,8 +234,10 @@ export class CalendarMonthComponent {
|
|
|
233
234
|
return;
|
|
234
235
|
}
|
|
235
236
|
if (this.startDate && this.endDate) {
|
|
236
|
-
|
|
237
|
+
const calendarDate = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0, 0);
|
|
238
|
+
this.calendarDate = calendarDate;
|
|
237
239
|
this.endDate = null;
|
|
240
|
+
this.startDate = null;
|
|
238
241
|
return;
|
|
239
242
|
}
|
|
240
243
|
if (!!this.startDate && !this.endDate) {
|
|
@@ -318,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
318
321
|
}], calendarDate: [{
|
|
319
322
|
type: Input
|
|
320
323
|
}] } });
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsT0FBTyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBVTNCLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFLakMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQWMvQixlQUFVLEdBQWdCLElBQUksQ0FBQztRQWMvQixhQUFRLEdBQWtCLElBQUksQ0FBQztRQWF2QixtQkFBYyxHQUF3QixFQUFFLENBQUM7UUFtQnpDLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBYzVCLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFZNUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBc0IsT0FBTyxDQUFDO1FBZTVDLFVBQUssR0FBZ0MsTUFBTSxDQUFDO1FBWTVDLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBWTdCLGFBQVEs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eUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDOztvSEE5VVUsc0JBQXNCO3dHQUF0QixzQkFBc0IsOFhDdEJuQyxvNUVBOERBOzRGRHhDYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0Usa0JBQWtCLFlBR2xCLGdCQUFnQjtzR0FVakIsU0FBUztzQkFBakIsS0FBSztnQkFPRixTQUFTO3NCQURaLEtBQUs7Z0JBZUYsT0FBTztzQkFEVixLQUFLO2dCQWVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBb0JGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBY0YsTUFBTTtzQkFEVCxLQUFLO2dCQWNGLEtBQUs7c0JBRFIsS0FBSztnQkFjRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkFjRixPQUFPO3NCQURWLEtBQUs7Z0JBYUYsT0FBTztzQkFEVixLQUFLO2dCQWtCRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZUdyb3Vwc0luQXJyYXksXHJcbiAgZ2V0TW9udGhEZXRhaWxzLFxyXG4gIGdldE1vbnRoc05hbWVzLFxyXG4gIGdldFllYXJzLFxyXG4gIGlzRGF0ZURpc2FibGVkLFxyXG4gIGlzRGF0ZUluUmFuZ2VEaXNhYmxlZCxcclxuICB0cnlEYXRlXHJcbn0gZnJvbSAnLi4vY2FsZW5kYXIudXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYy1jYWxlbmRhci1tb250aCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGV4cG9ydEFzOiAnY0NhbGVuZGFyTW9udGgnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhck1vbnRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYWRkTW9udGhzOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsIHNlbGVjdGVkIGRhdGUuXHJcbiAgICogQHR5cGUgIChEYXRlIHwgbnVsbClcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBzdGFydERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9zdGFydERhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ3N0YXJ0RGF0ZScpIDogbnVsbDtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHN0YXJ0RGF0ZTogdGhpcy5fc3RhcnREYXRlIH0pO1xyXG4gIH1cclxuICBnZXQgc3RhcnREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0RGF0ZTtcclxuICB9XHJcbiAgX3N0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRvIGRhdGUgKHJhbmdlKS5cclxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGVuZERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9lbmREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdlbmREYXRlJykgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZW5kRGF0ZTogdGhpcy5fZW5kRGF0ZSB9KTtcclxuICB9XHJcbiAgZ2V0IGVuZERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZTtcclxuICB9XHJcbiAgX2VuZERhdGU6IChEYXRlIHwgbnVsbCkgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZ5IHRoZSBsaXN0IG9mIGRhdGVzIHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLlxyXG4gICAqIEB0eXBlICAoRGF0ZVtdIHwgRGF0ZVtdW10pXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWREYXRlcyh2YWx1ZTogRGF0ZVtdIHwgRGF0ZVtdW10pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkRGF0ZXMgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IChEYXRlW10gfCBEYXRlW11bXSkgPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGF5IG9mIHN0YXJ0IHdlZWsuXHJcbiAgICogLSAwIC0gU3VuZGF5LFxyXG4gICAqIC0gMSAtIE1vbmRheSxcclxuICAgKiAtIDIgLSBUdWVzZGF5LFxyXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcclxuICAgKiAtIDQgLSBUaHVyc2RheSxcclxuICAgKiAtIDUgLSBGcmlkYXksXHJcbiAgICogLSA2IC0gU2F0dXJkYXksXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlyc3REYXlPZldlZWsodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZmlyc3REYXlPZldlZWsgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBmaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrO1xyXG4gIH1cclxuICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxyXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxvY2FsZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XHJcbiAgICB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModmFsdWUpLCA0KTtcclxuICB9XHJcbiAgZ2V0IGxvY2FsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgcmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JhbmdlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuICBwcml2YXRlIF9yYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cclxuICAgKiBAdHlwZSBudW1iZXIgfCAnbG9uZycgfCAnbmFycm93JyB8ICdzaG9ydCdcclxuICAgKiBAZGVmYXVsdCAnc2hvcnQnXHJcbiAgICovXHJcbiAgQElucHV0KCkgd2Vla2RheUZvcm1hdDogV2Vla2RheUZvcm1hdFR5cGUgPSAnc2hvcnQnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgY2FsZW5kYXIgdmlldy5cclxuICAgKiBAdHlwZSAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycydcclxuICAgKiBAZGVmYXVsdCAnZGF5cydcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB2aWV3KHZhbHVlKSB7XHJcbiAgICB0aGlzLl92aWV3ID0gdmFsdWU7XHJcbiAgICB0aGlzLmxpc3RPZlllYXJzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRZZWFycyh0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSksIDQpO1xyXG4gIH1cclxuICBnZXQgdmlldygpIHtcclxuICAgIHJldHVybiB0aGlzLl92aWV3O1xyXG4gIH1cclxuICBwcml2YXRlIF92aWV3OiAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycycgPSAnZGF5cyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xyXG4gIH1cclxuICBnZXQgbWF4RGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhEYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX21pbkRhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtaW5EYXRlJykgOiBudWxsO1xyXG4gIH1cclxuICBnZXQgbWluRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gIH1cclxuICBwcml2YXRlIF9taW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModGhpcy5sb2NhbGUpLCA0KTtcclxuICBsaXN0T2ZZZWFycyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnModGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLCA0KTtcclxuICBwcml2YXRlIGNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgZGF0ZSBvZiB0aGUgY29tcG9uZW50XHJcbiAgICogQHR5cGUgRGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNhbGVuZGFyRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSgodmFsdWUgPz8gdGhpcy5zdGFydERhdGUgPz8gbmV3IERhdGUoKSksICdjYWxlbmRhckRhdGUnKSk7XHJcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gX3ZhbHVlLmdldFRpbWUoKSkge1xyXG4gICAgICB0aGlzLmxpc3RPZlllYXJzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRZZWFycyhfdmFsdWUuZ2V0RnVsbFllYXIoKSksIDQpO1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSk7XHJcbiAgICAgIHRoaXMuc2V0TW9udGhEZXRhaWxzKHRoaXMuZGF0ZSk7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGNhbGVuZGFyRGF0ZTogdGhpcy5fY2FsZW5kYXJEYXRlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2FsZW5kYXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgZGF0ZUZpbHRlciE6IERhdGVGaWx0ZXJUeXBlO1xyXG5cclxuICBnZXQgZGF0ZSgpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZT8uZ2V0RnVsbFllYXIoKSwgdGhpcy5jYWxlbmRhckRhdGU/LmdldE1vbnRoKCkgKyB0aGlzLmFkZE1vbnRocyk7XHJcbiAgfVxyXG4gIGRheUZvcm1hdCE6IERheUZvcm1hdFR5cGU7XHJcblxyXG4gIHByaXZhdGUgX21vbnRoRGV0YWlscyE6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZzsgfVtdW107XHJcblxyXG4gIGdldCBtb250aERldGFpbHMoKTogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W11bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9udGhEZXRhaWxzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdlZWtEYXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhEZXRhaWxzWzBdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModGhpcy5sb2NhbGUpLCA0KTtcclxuICAgIHRoaXMuc2V0TW9udGhEZXRhaWxzKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRNb250aERldGFpbHMoZGF0ZTogRGF0ZSA9IHRoaXMuZGF0ZSkge1xyXG4gICAgdGhpcy5fbW9udGhEZXRhaWxzID0gZ2V0TW9udGhEZXRhaWxzKFxyXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgdGhpcy5maXJzdERheU9mV2Vla1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHllYXJOdW1iZXIoeWVhcjogYW55KSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgMCkudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcclxuICB9XHJcblxyXG4gIGlzRGF0ZURpc2FibGVkKGRhdGU6IERhdGUpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBpc0RhdGVEaXNhYmxlZChkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSB8fCAodGhpcy5kYXRlRmlsdGVyID8gIXRoaXMuZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNhbGVuZGFyQ2VsbFRpdGxlKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDZWxsTW91c2VFbnRlcihob3ZlckRhdGU6IERhdGUpIHtcclxuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgPyBudWxsIDogaG92ZXJEYXRlO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgaG92ZXJEYXRlOiBob3ZlclZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlWWVhckNlbGxDbGljayh5ZWFyOiBhbnkpIHtcclxuICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG5ldyBEYXRlKHllYXIsIHRoaXMuY2FsZW5kYXJEYXRlLmdldE1vbnRoKCksIDEpO1xyXG4gICAgdGhpcy52aWV3ID0gJ21vbnRocyc7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB0aGlzLnZpZXcsIGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlWWVhckNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHllYXI6IGFueSkge1xyXG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVZZWFyQ2VsbENsaWNrKHllYXIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGk6IG51bWJlciwgaWR4OiBudW1iZXIpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlTW9udGhDZWxsQ2xpY2soaSwgaWR4KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhDZWxsQ2xpY2soaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgMCwgaSAqIDMgKyBpZHggLSB0aGlzLmFkZE1vbnRocyk7XHJcbiAgICB0aGlzLnZpZXcgPSAnZGF5cyc7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB0aGlzLnZpZXcgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDYWxlbmRhclBhZ2UoeWVhcnM6IG51bWJlciwgbW9udGhzID0gMCwgc2V0TW9udGg/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlLmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGgpO1xyXG5cclxuICAgIHllYXJzICYmIGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xyXG4gICAgbW9udGhzICYmIGQuc2V0TW9udGgoZC5nZXRNb250aCgpICsgbW9udGhzKTtcclxuICAgIHR5cGVvZiBzZXRNb250aCA9PT0gJ251bWJlcicgJiYgZC5zZXRNb250aChzZXRNb250aCk7XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgY2FsZW5kYXJEYXRlOiBkIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IG51bGwgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmhhbmRsZURheUNlbGxDbGljayhkYXRlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdUYWInKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZGF0ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURheUNlbGxDbGljayhkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XHJcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy5zdGFydERhdGUgJiYgIXRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgZGF0ZSA8IHRoaXMuc3RhcnREYXRlKSB7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAoaXNEYXRlSW5SYW5nZURpc2FibGVkKHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUsIHRoaXMuZGlzYWJsZWREYXRlcykpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUpO1xyXG4gICAgICAvLyB3aGlsZSAoZGF0ZSA8IHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICAvLyAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICAvLyAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSB7XHJcbiAgICAgIC8vICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgIC8vICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhclN0YXRlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmIChzdWJzY3JpYmUpIHtcclxuICAgICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uID1cclxuICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5zdWJzY3JpYmUoc3RhdGUgPT4ge1xyXG4gICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHN0YXRlKTtcclxuICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgLy8gaWYgKGtleSBpbiB0aGlzKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdGhpc1trZXldID0gc3RhdGVba2V5XTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmliZShmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiIsIjx0YWJsZT5cclxuICA8dGhlYWQgKm5nSWY9XCJ2aWV3ID09PSAnZGF5cydcIj5cclxuICA8dHI+XHJcbiAgICA8dGggKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGluZGV4IGFzIGk7IGNvdW50IGFzIGNudFwiIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICB7eyB3ZWVrRGF5LmRhdGUgfCBjYWxlbmRhcldlZWtkYXk6d2Vla2RheUZvcm1hdDpsb2NhbGUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RoPlxyXG4gIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHkgKG1vdXNlbGVhdmUpPVwiaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKVwiIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3llYXJzJ1wiPlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCB5ZWFyc1JvdyBvZiBsaXN0T2ZZZWFyczsgaW5kZXggYXMgcm93SWR4XCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXIpXCJcclxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlWWVhckNlbGxLZXlVcCgkZXZlbnQsIHllYXIpXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1JvdzsgaW5kZXggYXMgaWR4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ5ZWFyIHwgY2FsZW5kYXJDbGFzc1llYXJcIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyB5ZWFyTnVtYmVyKHllYXIpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aHMnXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IG1vbnRoc1JvdyBvZiBsaXN0T2ZNb250aHM7IGluZGV4IGFzIHJvd0lkeFwiPlxyXG4gICAgICA8dGRcclxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlTW9udGhDZWxsQ2xpY2socm93SWR4LCBpZHgpXCJcclxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlTW9udGhDZWxsS2V5VXAoJGV2ZW50LCByb3dJZHgsIGlkeClcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHNSb3c7IGluZGV4IGFzIGlkeFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiY2FsZW5kYXJEYXRlIHwgY2FsZW5kYXJDbGFzc01vbnRoOihyb3dJZHgqMytpZHgpXCJcclxuICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgICAge3sgbW9udGggfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIG1vbnRoRGV0YWlsczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICA8dGRcclxuICAgICAgICAoY2xpY2spPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZURheUNlbGxDbGljayhkYXRlT2JqLmRhdGUpXCJcclxuICAgICAgICAoa2V5dXApPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQsIGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cImRhdGVPYmoubW9udGggPT09ICdjdXJyZW50JyAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlT2JqLmRhdGUpXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0ZU9iaiBvZiB3ZWVrOyBpbmRleCBhcyBpZHhcIlxyXG4gICAgICAgIFtjQ2FsZW5kYXJEYXldPVwiZGF0ZU9ialwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZU9iaiB8IGNhbGVuZGFyQ2xhc3NEYXk6e21pbkRhdGUsIG1heERhdGUsIGRpc2FibGVkRGF0ZXMsIGRhdGVGaWx0ZXJ9XCJcclxuICAgICAgICBbdGFiaW5kZXhdPVwiaXNEYXRlRGlzYWJsZWQoZGF0ZU9iai5kYXRlKSB8fCBkYXRlT2JqLm1vbnRoICE9PSAnY3VycmVudCcgPyAtMSA6IDBcIlxyXG4gICAgICAgIFt0aXRsZV09XCJkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheVRpdGxlOmxvY2FsZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgICAge3sgZGF0ZU9iai5kYXRlIHwgY2FsZW5kYXJEYXk6ZGF5Rm9ybWF0OmxvY2FsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC90cj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8L3Rib2R5PlxyXG48L3RhYmxlPlxyXG5cclxuIl19
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsT0FBTyxFQUNSLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7O0FBVTNCLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFLakMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQWdCL0IsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFnQi9CLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBZXZCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQXFCekMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFnQjVCLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFjNUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVoQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBc0IsT0FBTyxDQUFDO1FBaUI1QyxVQUFLLEdBQWdDLE1BQU0sQ0FBQztRQWM1QyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQWM3Qixh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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBjcmVhdGVHcm91cHNJbkFycmF5LFxyXG4gIGdldE1vbnRoRGV0YWlscyxcclxuICBnZXRNb250aHNOYW1lcyxcclxuICBnZXRZZWFycyxcclxuICBpc0RhdGVEaXNhYmxlZCxcclxuICBpc0RhdGVJblJhbmdlRGlzYWJsZWQsXHJcbiAgdHJ5RGF0ZVxyXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgRGF0ZUZpbHRlclR5cGUsIERheUZvcm1hdFR5cGUsIFdlZWtkYXlGb3JtYXRUeXBlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2MtY2FsZW5kYXItbW9udGgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1tb250aC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50LnNjc3MnXSxcclxuICBleHBvcnRBczogJ2NDYWxlbmRhck1vbnRoJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJNb250aENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGFkZE1vbnRoczogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbCBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEB0eXBlICAoRGF0ZSB8IG51bGwpXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc3RhcnREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc3RhcnREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdzdGFydERhdGUnKSA6IG51bGw7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBzdGFydERhdGU6IHRoaXMuX3N0YXJ0RGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBzdGFydERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xyXG4gIH1cclxuXHJcbiAgX3N0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRvIGRhdGUgKHJhbmdlKS5cclxuICAgKiBAdHlwZSAgKERhdGUgfCBudWxsKVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGVuZERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9lbmREYXRlID0gISF2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdlbmREYXRlJykgOiBudWxsO1xyXG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgZW5kRGF0ZTogdGhpcy5fZW5kRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XHJcbiAgfVxyXG5cclxuICBfZW5kRGF0ZTogKERhdGUgfCBudWxsKSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXHJcbiAgICogQHR5cGUgIChEYXRlW10gfCBEYXRlW11bXSlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10gfCBEYXRlW11bXSkge1xyXG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkRGF0ZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlZERhdGVzOiAoRGF0ZVtdIHwgRGF0ZVtdW10pID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRheSBvZiBzdGFydCB3ZWVrLlxyXG4gICAqIC0gMCAtIFN1bmRheSxcclxuICAgKiAtIDEgLSBNb25kYXksXHJcbiAgICogLSAyIC0gVHVlc2RheSxcclxuICAgKiAtIDMgLSBXZWRuZXNkYXksXHJcbiAgICogLSA0IC0gVGh1cnNkYXksXHJcbiAgICogLSA1IC0gRnJpZGF5LFxyXG4gICAqIC0gNiAtIFNhdHVyZGF5LFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpcnN0RGF5T2ZXZWVrKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2ZpcnN0RGF5T2ZXZWVrID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlyc3REYXlPZldlZWs7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxyXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxvY2FsZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XHJcbiAgICB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModmFsdWUpLCA0KTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IHJhbmdlIHNlbGVjdGlvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCByYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXHJcbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXHJcbiAgICogQGRlZmF1bHQgJ3Nob3J0J1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXHJcbiAgICogQHR5cGUgJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnXHJcbiAgICogQGRlZmF1bHQgJ2RheXMnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlldyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xyXG4gICAgdGhpcy5saXN0T2ZZZWFycyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0WWVhcnModGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLCA0KTtcclxuICB9XHJcblxyXG4gIGdldCB2aWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF92aWV3OiAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycycgPSAnZGF5cyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBzZWxlY3RhYmxlIGRhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF4RGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogTWluIHNlbGVjdGFibGUgZGF0ZS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ21pbkRhdGUnKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXQgbWluRGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBsaXN0T2ZNb250aHMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldE1vbnRoc05hbWVzKHRoaXMubG9jYWxlKSwgNCk7XHJcbiAgbGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgcHJpdmF0ZSBjYWxlbmRhclN0YXRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGRhdGUgb2YgdGhlIGNvbXBvbmVudFxyXG4gICAqIEB0eXBlIERhdGVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjYWxlbmRhckRhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIGNvbnN0IF92YWx1ZSA9IG5ldyBEYXRlKHRyeURhdGUoKHZhbHVlID8/IHRoaXMuc3RhcnREYXRlKSwgJ2NhbGVuZGFyRGF0ZScpKTtcclxuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLl9jYWxlbmRhckRhdGUuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XHJcbiAgICAgIHRoaXMubGlzdE9mWWVhcnMgPSBjcmVhdGVHcm91cHNJbkFycmF5KGdldFllYXJzKF92YWx1ZS5nZXRGdWxsWWVhcigpKSwgNCk7XHJcbiAgICAgIGNvbnN0IF9jYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xyXG4gICAgICB0aGlzLl9jYWxlbmRhckRhdGUgPSBfY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLnNldE1vbnRoRGV0YWlscyh0aGlzLmRhdGUpO1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IF9jYWxlbmRhckRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyRGF0ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhbGVuZGFyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gIGRhdGVGaWx0ZXIhOiBEYXRlRmlsdGVyVHlwZTtcclxuXHJcbiAgZ2V0IGRhdGUoKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jYWxlbmRhckRhdGU/LmdldEZ1bGxZZWFyKCksIHRoaXMuY2FsZW5kYXJEYXRlPy5nZXRNb250aCgpICsgdGhpcy5hZGRNb250aHMpO1xyXG4gIH1cclxuXHJcbiAgZGF5Rm9ybWF0ITogRGF5Rm9ybWF0VHlwZTtcclxuXHJcbiAgcHJpdmF0ZSBfbW9udGhEZXRhaWxzITogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W11bXTtcclxuXHJcbiAgZ2V0IG1vbnRoRGV0YWlscygpOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmc7IH1bXVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla0RheXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aERldGFpbHNbMF07XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubGlzdE9mTW9udGhzID0gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLmxvY2FsZSksIDQpO1xyXG4gICAgdGhpcy5zZXRNb250aERldGFpbHModGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoRGV0YWlscyhkYXRlOiBEYXRlID0gdGhpcy5kYXRlKSB7XHJcbiAgICB0aGlzLl9tb250aERldGFpbHMgPSBnZXRNb250aERldGFpbHMoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgeWVhck51bWJlcih5ZWFyOiBhbnkpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwKS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNEYXRlRGlzYWJsZWQoZGF0ZTogRGF0ZSkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJDZWxsVGl0bGUoZGF0ZTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNlbGxNb3VzZUVudGVyKGhvdmVyRGF0ZTogRGF0ZSkge1xyXG4gICAgY29uc3QgaG92ZXJWYWx1ZSA9IHRoaXMuaXNEYXRlRGlzYWJsZWQoaG92ZXJEYXRlKSA/IG51bGwgOiBob3ZlckRhdGU7XHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBob3ZlckRhdGU6IGhvdmVyVmFsdWUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXI6IGFueSkge1xyXG4gICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoeWVhciwgdGhpcy5jYWxlbmRhckRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XHJcbiAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldywgY2FsZW5kYXJEYXRlOiBjYWxlbmRhckRhdGUgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgeWVhcjogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgaTogbnVtYmVyLCBpZHg6IG51bWJlcikge1xyXG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhpLCBpZHgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aENlbGxDbGljayhpOiBudW1iZXIsIGlkeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldENhbGVuZGFyUGFnZSgwLCAwLCBpICogMyArIGlkeCAtIHRoaXMuYWRkTW9udGhzKTtcclxuICAgIHRoaXMudmlldyA9ICdkYXlzJztcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IHZpZXc6IHRoaXMudmlldyB9KTtcclxuICB9XHJcblxyXG4gIHNldENhbGVuZGFyUGFnZSh5ZWFyczogbnVtYmVyLCBtb250aHMgPSAwLCBzZXRNb250aD86IG51bWJlcikge1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMCwgMCwgMCwgMCk7XHJcblxyXG4gICAgeWVhcnMgJiYgZC5zZXRGdWxsWWVhcihkLmdldEZ1bGxZZWFyKCkgKyB5ZWFycyk7XHJcbiAgICBtb250aHMgJiYgZC5zZXRNb250aChkLmdldE1vbnRoKCkgKyBtb250aHMpO1xyXG4gICAgdHlwZW9mIHNldE1vbnRoID09PSAnbnVtYmVyJyAmJiBkLnNldE1vbnRoKHNldE1vbnRoKTtcclxuXHJcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IGQgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDZWxsTW91c2VMZWF2ZSgpIHtcclxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpIHtcclxuICAgIGlmICgkZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGU6IERhdGUpIHtcclxuICAgIGlmICh0aGlzLmlzRGF0ZURpc2FibGVkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMucmFuZ2UpIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCk7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlO1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLnN0YXJ0RGF0ZSAmJiAhdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiBkYXRlIDwgdGhpcy5zdGFydERhdGUpIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSkge1xyXG4gICAgICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XHJcbiAgICAgIC8vIHdoaWxlIChkYXRlIDwgdGhpcy5lbmREYXRlKSB7XHJcbiAgICAgIC8vICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcclxuICAgICAgLy8gICAgIHRoaXMuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgLy8gICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoc3Vic2NyaWJlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHN1YnNjcmliZSkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyU3RhdGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyU3RhdGUkLnN1YnNjcmliZShzdGF0ZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICAvLyBpZiAoa2V5IGluIHRoaXMpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZVtrZXldO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2FsZW5kYXJTdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPHRhYmxlPlxyXG4gIDx0aGVhZCAqbmdJZj1cInZpZXcgPT09ICdkYXlzJ1wiPlxyXG4gIDx0cj5cclxuICAgIDx0aCAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5czsgaW5kZXggYXMgaTsgY291bnQgYXMgY250XCIgY2xhc3M9XCJjYWxlbmRhci1jZWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgIHt7IHdlZWtEYXkuZGF0ZSB8IGNhbGVuZGFyV2Vla2RheTp3ZWVrZGF5Rm9ybWF0OmxvY2FsZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGg+XHJcbiAgPC90cj5cclxuICA8L3RoZWFkPlxyXG4gIDx0Ym9keSAobW91c2VsZWF2ZSk9XCJoYW5kbGVDZWxsTW91c2VMZWF2ZSgpXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIneWVhcnMnXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHllYXJzUm93IG9mIGxpc3RPZlllYXJzOyBpbmRleCBhcyByb3dJZHhcIj5cclxuICAgICAgPHRkXHJcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudCwgeWVhcilcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzUm93OyBpbmRleCBhcyBpZHhcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXHJcbiAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICAgIHt7IHllYXJOdW1iZXIoeWVhcikgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cclxuICAgIDx0ciAqbmdGb3I9XCJsZXQgbW9udGhzUm93IG9mIGxpc3RPZk1vbnRoczsgaW5kZXggYXMgcm93SWR4XCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVNb250aENlbGxDbGljayhyb3dJZHgsIGlkeClcIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQsIHJvd0lkeCwgaWR4KVwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1JvdzsgaW5kZXggYXMgaWR4XCJcclxuICAgICAgICBbbmdDbGFzc109XCJjYWxlbmRhckRhdGUgfCBjYWxlbmRhckNsYXNzTW9udGg6KHJvd0lkeCozK2lkeClcIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCIwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyBtb250aCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC90cj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2YgbW9udGhEZXRhaWxzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgIDx0ZFxyXG4gICAgICAgIChjbGljayk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgIChrZXl1cCk9XCJkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGVPYmouZGF0ZSlcIlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRlT2JqIG9mIHdlZWs7IGluZGV4IGFzIGlkeFwiXHJcbiAgICAgICAgW2NDYWxlbmRhckRheV09XCJkYXRlT2JqXCJcclxuICAgICAgICBbbmdDbGFzc109XCJkYXRlT2JqIHwgY2FsZW5kYXJDbGFzc0RheTp7bWluRGF0ZSwgbWF4RGF0ZSwgZGlzYWJsZWREYXRlcywgZGF0ZUZpbHRlcn1cIlxyXG4gICAgICAgIFt0YWJpbmRleF09XCJpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpIHx8IGRhdGVPYmoubW9udGggIT09ICdjdXJyZW50JyA/IC0xIDogMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cImRhdGVPYmouZGF0ZSB8IGNhbGVuZGFyRGF5VGl0bGU6bG9jYWxlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICB7eyBkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheTpkYXlGb3JtYXQ6bG9jYWxlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDwvdGJvZHk+XHJcbjwvdGFibGU+XHJcblxyXG4iXX0=
|
|
@@ -272,4 +272,4 @@ export const isDateInRangeDisabled = (startDate, endDate, dates) => {
|
|
|
272
272
|
// // }
|
|
273
273
|
//
|
|
274
274
|
// // getDate('12/07/1997');
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbERhdGUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbFRpbWUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBwZXJHcm91cCA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gbnVtYmVyT2ZHcm91cHMpO1xyXG4gIHJldHVybiBuZXcgQXJyYXkobnVtYmVyT2ZHcm91cHMpXHJcbiAgICAuZmlsbCgnJylcclxuICAgIC5tYXAoKF8sIGkpID0+IGFyci5zbGljZShpICogcGVyR3JvdXAsIChpICsgMSkgKiBwZXJHcm91cCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMb2NhbERhdGVGcm9tU3RyaW5nID0gKHN0cmluZzogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZT86IGJvb2xlYW4pID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcclxuICBsZXQgcmVnZXggPSB0aW1lID8gZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUpIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcclxuICByZWdleCA9IHJlZ2V4XHJcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcclxuICAgIC5yZXBsYWNlKCcxMicsICcoPzxtb250aD5bMC05XXsxLDJ9KScpXHJcbiAgICAucmVwbGFjZSgnMzEnLCAnKD88ZGF5PlswLTldezEsMn0pJyk7XHJcblxyXG4gIGlmICh0aW1lKSB7XHJcbiAgICByZWdleCA9IHJlZ2V4XHJcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMTcnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXHJcbiAgICAgIC5yZXBsYWNlKCcxOScsICcoPzxtaW51dGU+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcclxuICAgICAgLnJlcGxhY2UoJ1BNJywgJyg/PGFtcG0+W0EtWl17Mn0pJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdCByZ3ggPSBSZWdFeHAoYCR7cmVnZXh9YCk7XHJcbiAgY29uc3QgcGFydGlhbHMgPSBzdHJpbmcubWF0Y2gocmd4KTtcclxuXHJcbiAgaWYgKHBhcnRpYWxzID09PSBudWxsKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xyXG5cclxuICByZXR1cm4gbmV3RGF0ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGg6IG51bWJlciwgbG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcbiAgZC5zZXRNb250aChtb250aCk7XHJcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBtb250aHMgPSBbXTtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgZC5zZXRNb250aChpKTtcclxuICAgIG1vbnRocy5wdXNoKGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbW9udGhzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFllYXJzID0gKHllYXI6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHllYXJzID0gW107XHJcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xyXG4gICAgeWVhcnMucHVzaChfeWVhcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geWVhcnM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRMZWFkaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpID0+IHtcclxuICAvLyAwOiBzdW5kYXlcclxuICAvLyAxOiBtb25kYXlcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICBjb25zdCBtID0gZC5nZXRNb250aCgpO1xyXG4gIGNvbnN0IGZpcnN0V2Vla2RheSA9IG5ldyBEYXRlKHksIG0sIDEpLmdldERheSgpO1xyXG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcclxuXHJcbiAgaWYgKGZpcnN0RGF5T2ZXZWVrKSB7XHJcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xyXG4gIH1cclxuXHJcbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5LCBtLCBpICsgMSksIG1vbnRoOiAncHJldmlvdXMnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSksIG1vbnRoOiAnY3VycmVudCdcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZGF0ZXM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFpbGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBsZWFkaW5nRGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH1bXSwgbW9udGhEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdKSA9PiB7XHJcbiAgY29uc3QgZGF0ZXMgPSBbXTtcclxuICBjb25zdCBkYXlzID0gNDIgLSAobGVhZGluZ0RheXMubGVuZ3RoICsgbW9udGhEYXlzLmxlbmd0aCk7XHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5czsgaSsrKSB7XHJcbiAgICBkYXRlcy5wdXNoKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBpKSwgbW9udGg6ICduZXh0J1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZGF5c1ByZXZNb250aCA9IGdldExlYWRpbmdEYXlzKHllYXIsIG1vbnRoLCBmaXJzdERheU9mV2Vlayk7XHJcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XHJcbiAgY29uc3QgZGF5cyA9IFsuLi5kYXlzUHJldk1vbnRoLCAuLi5kYXlzVGhpc01vbnRoLCAuLi5kYXlzTmV4dE1vbnRoXTtcclxuXHJcbiAgY29uc3Qgd2Vla3M6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11bXSA9IFtdO1xyXG5cclxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcclxuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdlZWtzLnB1c2goW10pO1xyXG4gICAgfVxyXG4gICAgd2Vla3Nbd2Vla3MubGVuZ3RoIC0gMV0ucHVzaChkYXkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gd2Vla3M7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xyXG4gIGlmICghZGF0ZSkgcmV0dXJuO1xyXG4gIGxldCBkaXNhYmxlZDtcclxuICBpZiAoZGF0ZXMpIHtcclxuICAgIGRhdGVzLmZvckVhY2goKF9kYXRlOiBEYXRlIHwgRGF0ZVtdKSA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xyXG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlKGRhdGUsIF9kYXRlWzBdLCBfZGF0ZVsxXSkpIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKF9kYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XHJcbiAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcclxuICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGRpc2FibGVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBzdGFydCA8PSBkYXRlICYmIGRhdGUgPD0gZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZVNlbGVjdGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcclxuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoZW5kLCBkYXRlKSAmJiBzdGFydCA8IGVuZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xhc3REYXlPZk1vbnRoID0gKGRhdGU6IERhdGUpID0+IHtcclxuICBjb25zdCB0ZXN0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xyXG5cclxuICB0ZXN0LnNldERhdGUodGVzdC5nZXREYXRlKCkgKyAxKTtcclxuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IGRhdGUyLmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gZGF0ZTIuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNTdGFydERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoc3RhcnQsIGRhdGUpICYmIHN0YXJ0IDwgZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVG9kYXkgPSAoZGF0ZTogRGF0ZSkgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IHRvZGF5LmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdG9kYXkuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gdG9kYXkuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNUaGlzTW9udGggPSAoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gIHJldHVybiAoeWVhciA9PSB0b2RheS5nZXRGdWxsWWVhcigpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZSA9IChkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gIC8vIGNvbnNvbGUubG9nKCdpc1ZhbGlkRGF0ZScsIGRhdGUsIGQuZ2V0VGltZSgpLCAhIWQuZ2V0VGltZSgpKVxyXG4gIHJldHVybiAhIWQuZ2V0VGltZSgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyeURhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHByb3BOYW1lOiBzdHJpbmcgPSAnZGF0ZScpID0+IHtcclxuICBsZXQgX3ZhbHVlO1xyXG4gIHRyeSB7XHJcbiAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgIHRocm93IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlID0gbmV3IERhdGUodmFsdWUpXHJcbiAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYEludmFsaWQgJHtwcm9wTmFtZX1gLCBlcnIpO1xyXG4gICAgX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuICAgIF92YWx1ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICB9XHJcbiAgcmV0dXJuIF92YWx1ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlRGlzYWJsZWQgPSAoc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIGVuZERhdGU/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xyXG4gIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICB3aGlsZSAoZGF0ZSA8IGVuZERhdGUpIHtcclxuICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIGlmIChpc0RhdGVEaXNhYmxlZChkYXRlLCBudWxsLCBudWxsLCBkYXRlcykpIHtcclxuICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkaXNhYmxlZDtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuLy8gZXhwb3J0IGNvbnN0IHN0cmluZ1RvRGF0ZUNvbnZlcnQgPSAoZGF0ZTogc3RyaW5nLCBsb2NhbGVzOiBzdHJpbmcpID0+IHtcclxuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZnItRlInKTtcclxuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCk7XHJcbi8vICAgY29uc29sZS5sb2coZGF0ZSwgcGFydHMsIGZvcm1hdHRlci5mb3JtYXQoKSwgZm9ybWF0dGVyLnJlc29sdmVkT3B0aW9ucygpLCBmb3JtYXR0ZXIuZm9ybWF0KCkpO1xyXG4vLyB9O1xyXG5cclxuLy8gZGVjbGFyZSBuYW1lc3BhY2UgSW50bCB7XHJcbi8vICAgdHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9IFwiZGF5XCIgfCBcImRheVBlcmlvZFwiIHwgXCJlcmFcIiB8IFwiZnJhY3Rpb25hbFNlY29uZFwiIHwgXCJob3VyXCIgfCBcImxpdGVyYWxcIiB8IFwibWludXRlXCIgfCBcIm1vbnRoXCIgfCBcInNlY29uZFwiIHwgXCJ0aW1lWm9uZU5hbWVcIiB8IFwid2Vla2RheVwiIHwgXCJ5ZWFyXCI7XHJcbi8vXHJcbi8vICAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0UGFydCB7XHJcbi8vICAgICB0eXBlOiBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcztcclxuLy8gICAgIHZhbHVlOiBzdHJpbmc7XHJcbi8vICAgfVxyXG4vL1xyXG4vLyAgIGludGVyZmFjZSBEYXRlVGltZUZvcm1hdCB7XHJcbi8vICAgICBmb3JtYXRUb1BhcnRzKGRhdGU/OiBEYXRlIHwgbnVtYmVyKTogRGF0ZVRpbWVGb3JtYXRQYXJ0W107XHJcbi8vICAgfVxyXG4vLyB9XHJcblxyXG50eXBlIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzID1cclxuICAnZGF5J1xyXG4gIHwgJ2RheVBlcmlvZCdcclxuICB8ICdlcmEnXHJcbiAgfCAnZnJhY3Rpb25hbFNlY29uZCdcclxuICB8ICdob3VyJ1xyXG4gIHwgJ2xpdGVyYWwnXHJcbiAgfCAnbWludXRlJ1xyXG4gIHwgJ21vbnRoJ1xyXG4gIHwgJ3NlY29uZCdcclxuICB8ICd0aW1lWm9uZU5hbWUnXHJcbiAgfCAnd2Vla2RheSdcclxuICB8ICd5ZWFyJztcclxudHlwZSBEYXRlRm9ybWF0UGFydFR5cGVzID0gJ2RheScgfCAnbW9udGgnIHwgJ3llYXInIHwgJ2xpdGVyYWwnO1xyXG5cclxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XHJcbi8vICAgW2tleSBpbiBEYXRlVGltZUZvcm1hdFBhcnRUeXBlc10/OiBzdHJpbmc7XHJcbi8vIH07XHJcblxyXG4vLyB0eXBlIERhdGVQYXJ0cyA9IHtcclxuLy8gICB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyLCBsaXRlcmFsOiBzdHJpbmdcclxuLy8gfTtcclxuLy9cclxuLy8gZXhwb3J0IGNvbnN0IGN2dERhdGUgPSAoZGF0ZUFzU3RyaW5nOiBzdHJpbmcsIGxvY2FsZSA9ICdwbC1QTCcpID0+IHtcclxuLy8gICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZUFzU3RyaW5nID8/IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSk7XHJcbi8vICAgY29uc3QgZGF0ZVNwbGl0ID0gZGF0ZVN0cmluZy5zcGxpdCgvWy5cXC1cXC9cXHNcXERdL2dpKS5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0ubGVuZ3RoKTtcclxuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUpO1xyXG4vLyAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoKS5maWx0ZXIocGFydCA9PiBbJ3llYXInLCAnbW9udGgnLCAnZGF5J10uaW5jbHVkZXMocGFydC50eXBlKSk7XHJcbi8vICAgY29uc3QgZGF0ZVNoaW0gPSB7XHJcbi8vICAgICBkYXk6IHVuZGVmaW5lZCwgbW9udGg6IHVuZGVmaW5lZCwgeWVhcjogdW5kZWZpbmVkXHJcbi8vICAgfTtcclxuLy8gICBwYXJ0cy5mb3JFYWNoKChwYXJ0LCBpbmRleCkgPT4ge1xyXG4vLyAgICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0geyAuLi5wYXJ0IH07XHJcbi8vICAgICAvLyBAdHMtaWdub3JlXHJcbi8vICAgICBkYXRlU2hpbVt0eXBlXSA9IGRhdGVTcGxpdFtpbmRleF07XHJcbi8vICAgfSk7XHJcbi8vXHJcbi8vICAgcmV0dXJuIGRhdGVTaGltO1xyXG4vL1xyXG4vLyAgIC8vIGNvbnN0IGRhdGVQYXJ0czogRGF0ZVBhcnRzID0ge1xyXG4vLyAgIC8vICAgeWVhcjogMCxcclxuLy8gICAvLyAgIG1vbnRoOiAwLFxyXG4vLyAgIC8vICAgZGF5OiAwLFxyXG4vLyAgIC8vICAgbGl0ZXJhbDogJy8nXHJcbi8vICAgLy8gfTtcclxuLy8gICAvL1xyXG4vLyAgIC8vIGNvbnN0IGxpdGVyYWwgPSBwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnbGl0ZXJhbCcpPy52YWx1ZSA/PyAnLyc7XHJcbi8vICAgLy8gLy8gY29uc3QgeWVhciA9IHBhcnNlSW50KHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICd5ZWFyJyk/LnZhbHVlID8/ICcwJyk7XHJcbi8vICAgLy8gLy8gY29uc3QgbW9udGggPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vIC8vIGNvbnN0IGRheSA9IHBhcnNlSW50KHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICd5ZWFyJyk/LnZhbHVlID8/ICcwJyk7XHJcbi8vICAgLy9cclxuLy8gICAvLyBjb25zdCBkYXRlQXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KGxpdGVyYWwpO1xyXG4vLyAgIC8vXHJcbi8vICAgLy8gcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcclxuLy8gICAvLyAgIGNvbnN0IHt0eXBlLCB2YWx1ZX0gPSB7Li4ucGFydH07XHJcbi8vICAgLy8gICBpZiAodHlwZSA9PT0gJ2RheScpIHtcclxuLy8gICAvL1xyXG4vLyAgIC8vICAgfVxyXG4vLyAgIC8vIH0pXHJcbi8vICAgLy9cclxuLy8gICAvLyBwYXJ0cy5maWx0ZXIocGFydCA9PiBwYXJ0LnR5cGUgaW4gZGF0ZVBhcnRzKS5tYXAocGFydCA9PiB7XHJcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xyXG4vLyAgIC8vICAgLy8gQHRzLWlnbm9yZVxyXG4vLyAgIC8vICAgZGF0ZVBhcnRzW3R5cGVdID0gcGFyc2VJbnQocGFydC52YWx1ZSk7XHJcbi8vICAgLy8gICAvL1xyXG4vLyAgIC8vICAgLy8gc3dpdGNoICh0eXBlKSB7XHJcbi8vICAgLy8gICAvLyAgIGNhc2UgJ2RheSc6XHJcbi8vICAgLy8gICAvLyAgICAgZGF5ID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICdtb250aCc6XHJcbi8vICAgLy8gICAvLyAgICAgbW9udGggPSBwYXJzZUludCh2YWx1ZSk7XHJcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XHJcbi8vICAgLy8gICAvLyAgIGNhc2UgJ3llYXInOlxyXG4vLyAgIC8vICAgLy8gICAgIHllYXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XHJcbi8vICAgLy8gICAvLyB9XHJcbi8vICAgLy8gfSlcclxuLy8gICAvLyAvLyBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IHsuLi5kYXRlUGFydHN9XHJcbi8vICAgLy8gcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcclxuLy8gfTtcclxuLy9cclxuLy8gLy8gZnVuY3Rpb24gZ2V0RGF0ZVgoZGF0ZUFzU3RyaW5nKSB7XHJcbi8vIC8vICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZUFzU3RyaW5nLnNwbGl0KCcvJyk7XHJcbi8vIC8vICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcclxuLy8gLy8gfVxyXG4vL1xyXG4vLyAvLyBnZXREYXRlKCcxMi8wNy8xOTk3Jyk7XHJcbiJdfQ==
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbERhdGUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbFRpbWUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBwZXJHcm91cCA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gbnVtYmVyT2ZHcm91cHMpO1xyXG4gIHJldHVybiBuZXcgQXJyYXkobnVtYmVyT2ZHcm91cHMpXHJcbiAgICAuZmlsbCgnJylcclxuICAgIC5tYXAoKF8sIGkpID0+IGFyci5zbGljZShpICogcGVyR3JvdXAsIChpICsgMSkgKiBwZXJHcm91cCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMb2NhbERhdGVGcm9tU3RyaW5nID0gKHN0cmluZzogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZT86IGJvb2xlYW4pID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcclxuICBsZXQgcmVnZXggPSB0aW1lID8gZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUpIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcclxuICByZWdleCA9IHJlZ2V4XHJcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcclxuICAgIC5yZXBsYWNlKCcxMicsICcoPzxtb250aD5bMC05XXsxLDJ9KScpXHJcbiAgICAucmVwbGFjZSgnMzEnLCAnKD88ZGF5PlswLTldezEsMn0pJyk7XHJcblxyXG4gIGlmICh0aW1lKSB7XHJcbiAgICByZWdleCA9IHJlZ2V4XHJcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMTcnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXHJcbiAgICAgIC5yZXBsYWNlKCcxOScsICcoPzxtaW51dGU+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcclxuICAgICAgLnJlcGxhY2UoJ1BNJywgJyg/PGFtcG0+W0EtWl17Mn0pJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdCByZ3ggPSBSZWdFeHAoYCR7cmVnZXh9YCk7XHJcbiAgY29uc3QgcGFydGlhbHMgPSBzdHJpbmcubWF0Y2gocmd4KTtcclxuXHJcbiAgaWYgKHBhcnRpYWxzID09PSBudWxsKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xyXG5cclxuICByZXR1cm4gbmV3RGF0ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGg6IG51bWJlciwgbG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcbiAgZC5zZXRNb250aChtb250aCk7XHJcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBtb250aHMgPSBbXTtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgZC5zZXRNb250aChpKTtcclxuICAgIG1vbnRocy5wdXNoKGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbW9udGhzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFllYXJzID0gKHllYXI6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHllYXJzID0gW107XHJcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xyXG4gICAgeWVhcnMucHVzaChfeWVhcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geWVhcnM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRMZWFkaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpID0+IHtcclxuICAvLyAwOiBzdW5kYXlcclxuICAvLyAxOiBtb25kYXlcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICBjb25zdCBtID0gZC5nZXRNb250aCgpO1xyXG4gIGNvbnN0IGZpcnN0V2Vla2RheSA9IG5ldyBEYXRlKHksIG0sIDEpLmdldERheSgpO1xyXG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcclxuXHJcbiAgaWYgKGZpcnN0RGF5T2ZXZWVrKSB7XHJcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xyXG4gIH1cclxuXHJcbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5LCBtLCBpICsgMSksIG1vbnRoOiAncHJldmlvdXMnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSksIG1vbnRoOiAnY3VycmVudCdcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZGF0ZXM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFpbGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBsZWFkaW5nRGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH1bXSwgbW9udGhEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdKSA9PiB7XHJcbiAgY29uc3QgZGF0ZXMgPSBbXTtcclxuICBjb25zdCBkYXlzID0gNDIgLSAobGVhZGluZ0RheXMubGVuZ3RoICsgbW9udGhEYXlzLmxlbmd0aCk7XHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5czsgaSsrKSB7XHJcbiAgICBkYXRlcy5wdXNoKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBpKSwgbW9udGg6ICduZXh0J1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZGF5c1ByZXZNb250aCA9IGdldExlYWRpbmdEYXlzKHllYXIsIG1vbnRoLCBmaXJzdERheU9mV2Vlayk7XHJcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XHJcbiAgY29uc3QgZGF5cyA9IFsuLi5kYXlzUHJldk1vbnRoLCAuLi5kYXlzVGhpc01vbnRoLCAuLi5kYXlzTmV4dE1vbnRoXTtcclxuXHJcbiAgY29uc3Qgd2Vla3M6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11bXSA9IFtdO1xyXG5cclxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcclxuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdlZWtzLnB1c2goW10pO1xyXG4gICAgfVxyXG4gICAgd2Vla3Nbd2Vla3MubGVuZ3RoIC0gMV0ucHVzaChkYXkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gd2Vla3M7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xyXG4gIGlmICghZGF0ZSkgcmV0dXJuO1xyXG4gIGxldCBkaXNhYmxlZDtcclxuICBpZiAoZGF0ZXMpIHtcclxuICAgIGRhdGVzLmZvckVhY2goKF9kYXRlOiBEYXRlIHwgRGF0ZVtdKSA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xyXG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlKGRhdGUsIF9kYXRlWzBdLCBfZGF0ZVsxXSkpIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKF9kYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XHJcbiAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcclxuICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGRpc2FibGVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBzdGFydCA8PSBkYXRlICYmIGRhdGUgPD0gZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZVNlbGVjdGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcclxuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoZW5kLCBkYXRlKSAmJiBzdGFydCA8IGVuZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xhc3REYXlPZk1vbnRoID0gKGRhdGU6IERhdGUpID0+IHtcclxuICBjb25zdCB0ZXN0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xyXG5cclxuICB0ZXN0LnNldERhdGUodGVzdC5nZXREYXRlKCkgKyAxKTtcclxuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IGRhdGUyLmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gZGF0ZTIuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNTdGFydERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoc3RhcnQsIGRhdGUpICYmIHN0YXJ0IDwgZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVG9kYXkgPSAoZGF0ZTogRGF0ZSkgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IHRvZGF5LmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdG9kYXkuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gdG9kYXkuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNUaGlzTW9udGggPSAoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gIHJldHVybiAoeWVhciA9PSB0b2RheS5nZXRGdWxsWWVhcigpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZSA9IChkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gIC8vIGNvbnNvbGUubG9nKCdpc1ZhbGlkRGF0ZScsIGRhdGUsIGQuZ2V0VGltZSgpLCAhIWQuZ2V0VGltZSgpKVxyXG4gIHJldHVybiAhIWQuZ2V0VGltZSgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyeURhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHByb3BOYW1lOiBzdHJpbmcgPSAnZGF0ZScpID0+IHtcclxuICBsZXQgX3ZhbHVlO1xyXG4gIHRyeSB7XHJcbiAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgIHRocm93IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS53YXJuKGBJbnZhbGlkICR7cHJvcE5hbWV9YCwgZXJyKTtcclxuICAgIF92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgfVxyXG4gIHJldHVybiBfdmFsdWU7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlSW5SYW5nZURpc2FibGVkID0gKHN0YXJ0RGF0ZT86IERhdGUgfCBudWxsLCBlbmREYXRlPzogRGF0ZSB8IG51bGwsIGRhdGVzPzogRGF0ZVtdIHwgRGF0ZVtdW10pID0+IHtcclxuICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgd2hpbGUgKGRhdGUgPCBlbmREYXRlKSB7XHJcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICBpZiAoaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbnVsbCwgbnVsbCwgZGF0ZXMpKSB7XHJcbiAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzYWJsZWQ7XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbi8vIGV4cG9ydCBjb25zdCBzdHJpbmdUb0RhdGVDb252ZXJ0ID0gKGRhdGU6IHN0cmluZywgbG9jYWxlczogc3RyaW5nKSA9PiB7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2ZyLUZSJyk7XHJcbi8vICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cygpO1xyXG4vLyAgIGNvbnNvbGUubG9nKGRhdGUsIHBhcnRzLCBmb3JtYXR0ZXIuZm9ybWF0KCksIGZvcm1hdHRlci5yZXNvbHZlZE9wdGlvbnMoKSwgZm9ybWF0dGVyLmZvcm1hdCgpKTtcclxuLy8gfTtcclxuXHJcbi8vIGRlY2xhcmUgbmFtZXNwYWNlIEludGwge1xyXG4vLyAgIHR5cGUgRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMgPSBcImRheVwiIHwgXCJkYXlQZXJpb2RcIiB8IFwiZXJhXCIgfCBcImZyYWN0aW9uYWxTZWNvbmRcIiB8IFwiaG91clwiIHwgXCJsaXRlcmFsXCIgfCBcIm1pbnV0ZVwiIHwgXCJtb250aFwiIHwgXCJzZWNvbmRcIiB8IFwidGltZVpvbmVOYW1lXCIgfCBcIndlZWtkYXlcIiB8IFwieWVhclwiO1xyXG4vL1xyXG4vLyAgIGludGVyZmFjZSBEYXRlVGltZUZvcm1hdFBhcnQge1xyXG4vLyAgICAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XHJcbi8vICAgICB2YWx1ZTogc3RyaW5nO1xyXG4vLyAgIH1cclxuLy9cclxuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXQge1xyXG4vLyAgICAgZm9ybWF0VG9QYXJ0cyhkYXRlPzogRGF0ZSB8IG51bWJlcik6IERhdGVUaW1lRm9ybWF0UGFydFtdO1xyXG4vLyAgIH1cclxuLy8gfVxyXG5cclxudHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9XHJcbiAgJ2RheSdcclxuICB8ICdkYXlQZXJpb2QnXHJcbiAgfCAnZXJhJ1xyXG4gIHwgJ2ZyYWN0aW9uYWxTZWNvbmQnXHJcbiAgfCAnaG91cidcclxuICB8ICdsaXRlcmFsJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdtb250aCdcclxuICB8ICdzZWNvbmQnXHJcbiAgfCAndGltZVpvbmVOYW1lJ1xyXG4gIHwgJ3dlZWtkYXknXHJcbiAgfCAneWVhcic7XHJcbnR5cGUgRGF0ZUZvcm1hdFBhcnRUeXBlcyA9ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdsaXRlcmFsJztcclxuXHJcbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xyXG4vLyAgIFtrZXkgaW4gRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXNdPzogc3RyaW5nO1xyXG4vLyB9O1xyXG5cclxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XHJcbi8vICAgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciwgbGl0ZXJhbDogc3RyaW5nXHJcbi8vIH07XHJcbi8vXHJcbi8vIGV4cG9ydCBjb25zdCBjdnREYXRlID0gKGRhdGVBc1N0cmluZzogc3RyaW5nLCBsb2NhbGUgPSAncGwtUEwnKSA9PiB7XHJcbi8vICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGVBc1N0cmluZyA/PyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xyXG4vLyAgIGNvbnN0IGRhdGVTcGxpdCA9IGRhdGVTdHJpbmcuc3BsaXQoL1suXFwtXFwvXFxzXFxEXS9naSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmxlbmd0aCk7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlKTtcclxuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCkuZmlsdGVyKHBhcnQgPT4gWyd5ZWFyJywgJ21vbnRoJywgJ2RheSddLmluY2x1ZGVzKHBhcnQudHlwZSkpO1xyXG4vLyAgIGNvbnN0IGRhdGVTaGltID0ge1xyXG4vLyAgICAgZGF5OiB1bmRlZmluZWQsIG1vbnRoOiB1bmRlZmluZWQsIHllYXI6IHVuZGVmaW5lZFxyXG4vLyAgIH07XHJcbi8vICAgcGFydHMuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcclxuLy8gICAgIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHsgLi4ucGFydCB9O1xyXG4vLyAgICAgLy8gQHRzLWlnbm9yZVxyXG4vLyAgICAgZGF0ZVNoaW1bdHlwZV0gPSBkYXRlU3BsaXRbaW5kZXhdO1xyXG4vLyAgIH0pO1xyXG4vL1xyXG4vLyAgIHJldHVybiBkYXRlU2hpbTtcclxuLy9cclxuLy8gICAvLyBjb25zdCBkYXRlUGFydHM6IERhdGVQYXJ0cyA9IHtcclxuLy8gICAvLyAgIHllYXI6IDAsXHJcbi8vICAgLy8gICBtb250aDogMCxcclxuLy8gICAvLyAgIGRheTogMCxcclxuLy8gICAvLyAgIGxpdGVyYWw6ICcvJ1xyXG4vLyAgIC8vIH07XHJcbi8vICAgLy9cclxuLy8gICAvLyBjb25zdCBsaXRlcmFsID0gcGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKT8udmFsdWUgPz8gJy8nO1xyXG4vLyAgIC8vIC8vIGNvbnN0IHllYXIgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vIC8vIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcclxuLy8gICAvLyAvLyBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vXHJcbi8vICAgLy8gY29uc3QgZGF0ZUFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChsaXRlcmFsKTtcclxuLy8gICAvL1xyXG4vLyAgIC8vIHBhcnRzLmZvckVhY2gocGFydCA9PiB7XHJcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xyXG4vLyAgIC8vICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XHJcbi8vICAgLy9cclxuLy8gICAvLyAgIH1cclxuLy8gICAvLyB9KVxyXG4vLyAgIC8vXHJcbi8vICAgLy8gcGFydHMuZmlsdGVyKHBhcnQgPT4gcGFydC50eXBlIGluIGRhdGVQYXJ0cykubWFwKHBhcnQgPT4ge1xyXG4vLyAgIC8vICAgY29uc3Qge3R5cGUsIHZhbHVlfSA9IHsuLi5wYXJ0fTtcclxuLy8gICAvLyAgIC8vIEB0cy1pZ25vcmVcclxuLy8gICAvLyAgIGRhdGVQYXJ0c1t0eXBlXSA9IHBhcnNlSW50KHBhcnQudmFsdWUpO1xyXG4vLyAgIC8vICAgLy9cclxuLy8gICAvLyAgIC8vIHN3aXRjaCAodHlwZSkge1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICdkYXknOlxyXG4vLyAgIC8vICAgLy8gICAgIGRheSA9IHBhcnNlSW50KHZhbHVlKTtcclxuLy8gICAvLyAgIC8vICAgICBicmVhaztcclxuLy8gICAvLyAgIC8vICAgY2FzZSAnbW9udGgnOlxyXG4vLyAgIC8vICAgLy8gICAgIG1vbnRoID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICd5ZWFyJzpcclxuLy8gICAvLyAgIC8vICAgICB5ZWFyID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gfVxyXG4vLyAgIC8vIH0pXHJcbi8vICAgLy8gLy8gY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSB7Li4uZGF0ZVBhcnRzfVxyXG4vLyAgIC8vIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIH07XHJcbi8vXHJcbi8vIC8vIGZ1bmN0aW9uIGdldERhdGVYKGRhdGVBc1N0cmluZykge1xyXG4vLyAvLyAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVBc1N0cmluZy5zcGxpdCgnLycpO1xyXG4vLyAvLyAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIC8vIH1cclxuLy9cclxuLy8gLy8gZ2V0RGF0ZSgnMTIvMDcvMTk5NycpO1xyXG4iXX0=
|