@acorex/components 1.3.90 → 1.3.94
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/acorex-components.metadata.json +1 -1
- package/bundles/acorex-components.umd.js +43 -31
- package/bundles/acorex-components.umd.js.map +1 -1
- package/bundles/acorex-components.umd.min.js +1 -1
- package/bundles/acorex-components.umd.min.js.map +1 -1
- package/esm2015/lib/button/button.component.js +2 -2
- package/esm2015/lib/calendar/calendar-box/calendar-box.component.js +31 -30
- package/esm2015/lib/selectbox/selectbox.component.js +18 -11
- package/esm2015/lib/tree-view/tree-view.component.js +1 -2
- package/esm5/lib/button/button.component.js +2 -2
- package/esm5/lib/calendar/calendar-box/calendar-box.component.js +26 -21
- package/esm5/lib/selectbox/selectbox.component.js +19 -11
- package/esm5/lib/tree-view/tree-view.component.js +1 -2
- package/fesm2015/acorex-components.js +47 -40
- package/fesm2015/acorex-components.js.map +1 -1
- package/fesm5/acorex-components.js +43 -31
- package/fesm5/acorex-components.js.map +1 -1
- package/lib/calendar/calendar-box/calendar-box.component.d.ts +1 -1
- package/lib/selectbox/selectbox.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';
|
|
3
|
-
import { AXDateTime, AXDateTimeRange, AXTranslator
|
|
3
|
+
import { AXDateTime, AXDateTimeRange, AXTranslator } from '@acorex/core';
|
|
4
4
|
import { AXConfig } from '@acorex/core';
|
|
5
5
|
var AXCalendarBoxComponent = /** @class */ (function () {
|
|
6
6
|
function AXCalendarBoxComponent(cdr, ref) {
|
|
@@ -88,6 +88,7 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
88
88
|
if (v == undefined) {
|
|
89
89
|
this._value = null;
|
|
90
90
|
this.focusedValue = this.today;
|
|
91
|
+
this.viewRange = this.today.month.range;
|
|
91
92
|
this.navigate(0);
|
|
92
93
|
}
|
|
93
94
|
this.onClick.emit({
|
|
@@ -100,6 +101,13 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
100
101
|
enumerable: true,
|
|
101
102
|
configurable: true
|
|
102
103
|
});
|
|
104
|
+
Object.defineProperty(AXCalendarBoxComponent.prototype, "today", {
|
|
105
|
+
get: function () {
|
|
106
|
+
return new AXDateTime(new Date(), this.type);
|
|
107
|
+
},
|
|
108
|
+
enumerable: true,
|
|
109
|
+
configurable: true
|
|
110
|
+
});
|
|
103
111
|
AXCalendarBoxComponent.prototype.findDay = function (date) {
|
|
104
112
|
if (this.dayStyle.find(function (c) { return c.date == date.toISOString().split('T')[0]; })) {
|
|
105
113
|
return true;
|
|
@@ -125,12 +133,17 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
125
133
|
}
|
|
126
134
|
};
|
|
127
135
|
AXCalendarBoxComponent.prototype.ngOnInit = function () {
|
|
128
|
-
this.
|
|
136
|
+
this.focusedValue = new AXDateTime(new Date(), this.type);
|
|
129
137
|
//
|
|
130
138
|
this.initLayout();
|
|
131
139
|
//
|
|
132
140
|
this.viewRange = this.today.month.range;
|
|
133
|
-
|
|
141
|
+
if (this.value) {
|
|
142
|
+
this.setFocus(new AXDateTime(this.value, this.type));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.setFocus(this.today);
|
|
146
|
+
}
|
|
134
147
|
this.view = 'day';
|
|
135
148
|
};
|
|
136
149
|
AXCalendarBoxComponent.prototype.getViewCompaire = function (view) {
|
|
@@ -180,9 +193,7 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
180
193
|
};
|
|
181
194
|
AXCalendarBoxComponent.prototype.rotate = function (array, n) {
|
|
182
195
|
var len = array.length;
|
|
183
|
-
return !(n % len) ? array
|
|
184
|
-
: n > 0 ? array.map(function (e, i, a) { return a[(i + n) % len]; })
|
|
185
|
-
: array.map(function (e, i, a) { return a[(len - (len - i - n) % len) % len]; });
|
|
196
|
+
return !(n % len) ? array : n > 0 ? array.map(function (e, i, a) { return a[(i + n) % len]; }) : array.map(function (e, i, a) { return a[(len - ((len - i - n) % len)) % len]; });
|
|
186
197
|
};
|
|
187
198
|
AXCalendarBoxComponent.prototype.navigate = function (value) {
|
|
188
199
|
var start;
|
|
@@ -193,10 +204,7 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
193
204
|
fd = value.startOf('month');
|
|
194
205
|
}
|
|
195
206
|
else {
|
|
196
|
-
fd = this.viewRange.startTime
|
|
197
|
-
.add('day', 15)
|
|
198
|
-
.add('month', value)
|
|
199
|
-
.startOf('month');
|
|
207
|
+
fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');
|
|
200
208
|
}
|
|
201
209
|
start = fd.firstDayOfWeek;
|
|
202
210
|
end = fd.endOf('month').endDayOfWeek;
|
|
@@ -219,10 +227,7 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
219
227
|
fd = value.startOf('year');
|
|
220
228
|
}
|
|
221
229
|
else {
|
|
222
|
-
fd = this.viewRange.startTime
|
|
223
|
-
.add('day', 15)
|
|
224
|
-
.add('year', value)
|
|
225
|
-
.startOf('year');
|
|
230
|
+
fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');
|
|
226
231
|
}
|
|
227
232
|
start = fd;
|
|
228
233
|
end = fd.endOf('year');
|
|
@@ -243,10 +248,10 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
243
248
|
}
|
|
244
249
|
this.viewRange = new AXDateTimeRange(start, end);
|
|
245
250
|
//
|
|
246
|
-
if (this.getHoliday && typeof
|
|
251
|
+
if (this.getHoliday && typeof this.getHoliday === 'function') {
|
|
247
252
|
this.holidays = this.getHoliday(start.date, end.date, this.type);
|
|
248
253
|
}
|
|
249
|
-
if (this.getWeekend && typeof
|
|
254
|
+
if (this.getWeekend && typeof this.getWeekend === 'function') {
|
|
250
255
|
this.weekends = this.getWeekend(start.date, end.date, this.type);
|
|
251
256
|
}
|
|
252
257
|
//
|
|
@@ -337,8 +342,9 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
337
342
|
r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
|
|
338
343
|
}
|
|
339
344
|
if (this.min && this.max) {
|
|
340
|
-
r =
|
|
341
|
-
d.compaireNew(new AXDateTime(this.
|
|
345
|
+
r =
|
|
346
|
+
d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
|
|
347
|
+
d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
|
|
342
348
|
}
|
|
343
349
|
}
|
|
344
350
|
return r;
|
|
@@ -448,10 +454,9 @@ var AXCalendarBoxComponent = /** @class */ (function () {
|
|
|
448
454
|
encapsulation: ViewEncapsulation.None,
|
|
449
455
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
450
456
|
}),
|
|
451
|
-
__metadata("design:paramtypes", [ChangeDetectorRef,
|
|
452
|
-
ElementRef])
|
|
457
|
+
__metadata("design:paramtypes", [ChangeDetectorRef, ElementRef])
|
|
453
458
|
], AXCalendarBoxComponent);
|
|
454
459
|
return AXCalendarBoxComponent;
|
|
455
460
|
}());
|
|
456
461
|
export { AXCalendarBoxComponent };
|
|
457
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9jYWxlbmRhci1ib3gvY2FsZW5kYXItYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWtCLFlBQVksR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUcxRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBNkJ4QztJQWtJRSxnQ0FDVSxHQUFzQixFQUN0QixHQUFlO1FBRGYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQW5JekIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUVoQixNQUFDLEdBQUc7WUFDVixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxJQUFJO2dCQUN0RCxHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsQ0FBQzthQUNWO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSTtnQkFDekQsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtTQUNGLENBQUE7UUFLRCxTQUFJLEdBQWtCLElBQUksQ0FBQztRQWtCM0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBR2xDLGFBQVEsR0FBRyxFQUFFLENBQUE7UUFVTixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUV4QyxXQUFNLEdB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QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVcsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMENBQUUsTUFBTSxLQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMENBQUUsR0FBRyxLQUFJLEtBQUssQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFNLElBQUksR0FBRyx3QkFBd0IsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsWUFBWSxDQUFDLEdBQUcsQ0FBSSxJQUFJLFNBQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVDLFlBQVksQ0FBQyxHQUFHLENBQUksSUFBSSxTQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFJLElBQUksU0FBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBSSxJQUFJLFNBQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVDLFlBQVksQ0FBQyxHQUFHLENBQUksSUFBSSxTQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxZQUFZLENBQUMsR0FBRyxDQUFJLElBQUksU0FBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENB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QUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsRUFBRTtRQUNGLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRTtRQUVELEVBQUU7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBRXZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFyQixDQUFxQixDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUMzRixJQUFJ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LEVBQUUsQ0FBQztJQUNsQyxDQUFDOztnQkFuVGMsaUJBQWlCO2dCQUNqQixVQUFVOztJQWpIekI7UUFEQyxLQUFLLEVBQUU7O3dEQUNtQjtJQUczQjtRQURDLEtBQUssRUFBRTs7d0RBQ2E7SUFHckI7UUFEQyxLQUFLLEVBQUU7OzBEQUNPO0lBR2Y7UUFEQyxLQUFLLEVBQUU7O3VEQUNJO0lBR1o7UUFEQyxLQUFLLEVBQUU7a0NBQ0gsSUFBSTt1REFBQztJQUdWO1FBREMsS0FBSyxFQUFFO2tDQUNILElBQUk7dURBQUM7SUFHVjtRQURDLEtBQUssRUFBRTs7cUVBQzBCO0lBR2xDO1FBREMsS0FBSyxFQUFFOzs0REFDSztJQVViO1FBREMsS0FBSyxDQUFDLGlCQUFpQixDQUFDOzttRUFDZTtJQU14QztRQURDLEtBQUssRUFBRTs7O3NEQUdQO0lBU0Q7UUFEQyxLQUFLLEVBQUU7Ozt1REFHUDtJQVdEO1FBREMsTUFBTSxFQUFFO2tDQUNPLFlBQVk7a0VBQThEO0lBRzFGO1FBREMsTUFBTSxFQUFFO2tDQUNBLFlBQVk7MkRBQThEO0lBR25GO1FBREMsTUFBTSxFQUFFO2tDQUNJLFlBQVk7K0RBQWtDO0lBSTNEO1FBREMsS0FBSyxFQUFFO2tDQUlZLElBQUk7eUNBQUosSUFBSTt1REFEdkI7SUE1RlUsc0JBQXNCO1FBTmxDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxpQkFBaUI7WUFDM0IsczNHQUE0QztZQUM1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtTQUNoRCxDQUFDO3lDQW9JZSxpQkFBaUI7WUFDakIsVUFBVTtPQXBJZCxzQkFBc0IsQ0F1YmxDO0lBQUQsNkJBQUM7Q0FBQSxBQXZiRCxJQXViQztTQXZiWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWERhdGVUaW1lLCBBWERhdGVUaW1lUmFuZ2UsIEFYQ2FsZW5kYXJUeXBlLCBBWFRyYW5zbGF0b3IsIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCwgQVhFbGVtZW50U2l6ZSB9IGZyb20gJy4uLy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYVmFsdWVFdmVudCB9IGZyb20gJy4uLy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhclZpZXdUeXBlID0gJ3llYXInIHwgJ21vbnRoJyB8ICdkYXknO1xyXG5cclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhckhvbGlkYXlzID0gQVhDYWxlbmRhckhvbGlkYXlbXTtcclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhckhvbGlkYXlzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhckhvbGlkYXlbXTtcclxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFySG9saWRheSB7XHJcbiAgZGF0ZTogRGF0ZTtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzID0gQVhDYWxlbmRhcldlZWtlbmRbXTtcclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhcldlZWtlbmQge1xyXG4gIGluZGV4RGF5OiBudW1iZXI7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXItYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94Q29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgd2Vla2RheXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgZCA9IHtcclxuICAgIGphbGFsaToge1xyXG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuamFsYWxpLmxvY2FsZScpIHx8ICdmYScsXHJcbiAgICAgIGRpcjogJ3J0bCcsXHJcbiAgICAgIG51bWJlcjogMVxyXG4gICAgfSxcclxuICAgIGdyZWdvcmlhbjoge1xyXG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuZ3JlZ29yaWFuLmxvY2FsZScpIHx8ICdlbicsXHJcbiAgICAgIGRpcjogJ2x0cicsXHJcbiAgICAgIG51bWJlcjogMFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtUm90YXRlOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZTogQVhDYWxlbmRhclR5cGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlyOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWluOiBEYXRlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1heDogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3RhYmxlSG9saWRheTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF5U3R5bGUgPSBbXVxyXG5cclxuXHJcblxyXG5cclxuICBwcml2YXRlIGdldEhvbGlkYXk6IEFYQ2FsZW5kYXJIb2xpZGF5cyB8IEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmM7XHJcblxyXG4gIHByaXZhdGUgZ2V0V2Vla2VuZDogQVhDYWxlbmRhcldlZWtlbmRzIHwgQVhDYWxlbmRhcldlZWtlbmRzRnVuYztcclxuXHJcbiAgQElucHV0KCdzaG93VG9kYXlCdXR0b24nKVxyXG4gIHB1YmxpYyBzaG93VG9kYXlCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbWF0cml4OiBhbnlbXSA9IFtdO1xyXG4gIHJvdGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF92aWV3OiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdmlldygpOiBBWENhbGVuZGFyVmlld1R5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdmlldyh2OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcclxuICAgIHRoaXMuX3ZpZXcgPSB2O1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlcHRoOiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlcHRoKCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVwdGg7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGVwdGgodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XHJcbiAgICB0aGlzLl9kZXB0aCA9IHY7XHJcbiAgICB0aGlzLnZpZXcgPSB2O1xyXG4gIH1cclxuXHJcbiAgdmlld1JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XHJcbiAgcHJpdmF0ZSBob2xpZGF5czogQVhDYWxlbmRhckhvbGlkYXlbXSA9IFtdO1xyXG4gIHByaXZhdGUgd2Vla2VuZHM6IEFYQ2FsZW5kYXJXZWVrZW5kW10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBEYXRlIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcclxuICB9XHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBEYXRlKSB7XHJcbiAgICBsZXQgdnY6IEFYRGF0ZVRpbWU7XHJcbiAgICBpZiAodikge1xyXG4gICAgICB2diA9IEFYRGF0ZVRpbWUuY29udmVydCh2KTtcclxuICAgIH1cclxuICAgIGxldCB1blZhbGlkRGF0ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMubWF4IHx8IHRoaXMubWluKSB7XHJcbiAgICAgIHVuVmFsaWREYXRlID0gdGhpcy5pc0luTUluTWF4UmFuZ2UodnYpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF1blZhbGlkRGF0ZSkge1xyXG4gICAgICBpZiAodnYgJiYgIXZ2LmVxdWFsKHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdnY7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUudHlwZSA9IHRoaXMudHlwZTtcclxuICAgICAgICB0aGlzLnNldEZvY3VzKHRoaXMuX3ZhbHVlLmNsb25lKCkpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2di5kYXRlKVxyXG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXHJcbiAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHYgPT0gdW5kZWZpbmVkKXtcclxuXHJcbiAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcclxuICAgICAgICAgdGhpcy5mb2N1c2VkVmFsdWUgPSB0aGlzLnRvZGF5O1xyXG4gICAgICAgICB0aGlzLm5hdmlnYXRlKDApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25DbGljay5lbWl0KHtcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlPy5kYXRlLFxyXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNlZFZhbHVlOiBBWERhdGVUaW1lO1xyXG4gIHRvZGF5OiBBWERhdGVUaW1lO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcclxuXHJcbiAgICAvLyBzZXQgZGVmYXVsdHNcclxuICAgIHRoaXMuZ2V0SG9saWRheSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuaG9saWRheXMnKTtcclxuICAgIHRoaXMuZ2V0V2Vla2VuZCA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUud2Vla2VuZHMnKTtcclxuICB9XHJcbiAgZmluZERheShkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kYXlTdHlsZS5maW5kKGMgPT4gYy5kYXRlID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFN0eWxlKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIGlmICh0aGlzLmRheVN0eWxlLmZpbmQoYyA9PiBjLmRhdGUgPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRheVN0eWxlLmZpbmQoYyA9PiBjLmRhdGUgPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pLnN0eWxlXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZShkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kYXlTdHlsZS5maW5kKGMgPT4gYy5kYXRlID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKGMgPT4gYy5kYXRlID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKS50ZXh0XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy50b2RheSA9IHRoaXMuZm9jdXNlZFZhbHVlID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcclxuICAgIC8vXHJcbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcclxuICAgIC8vXHJcbiAgICB0aGlzLnZpZXdSYW5nZSA9IHRoaXMudG9kYXkubW9udGgucmFuZ2U7XHJcbiAgICB0aGlzLnNldEZvY3VzKHRoaXMudG9kYXkpO1xyXG4gICAgdGhpcy52aWV3ID0gJ2RheSc7XHJcbiAgfVxyXG5cclxuICBnZXRWaWV3Q29tcGFpcmUodmlldzogQVhDYWxlbmRhclZpZXdUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKHZpZXcpIHtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICByZXR1cm4gJ1lNRCc7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICByZXR1cm4gJ1lNJztcclxuICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgcmV0dXJuICdZJztcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdmlnYXRlKDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TGF5b3V0KCkge1xyXG5cclxuICAgIGlmICghdGhpcy50eXBlKSB7XHJcbiAgICAgIHRoaXMudHlwZSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpIHx8ICdncmVnb3JpYW4nO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmxvY2FsZSkge1xyXG4gICAgICB0aGlzLmxvY2FsZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5sb2NhbGUgfHwgdGhpcy5sb2NhbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGlyKSB7XHJcbiAgICAgIHRoaXMuZGlyID0gdGhpcy5kW3RoaXMudHlwZV0/LmRpciB8fCAnbHRyJztcclxuICAgIH1cclxuICAgIHRoaXMubnVtUm90YXRlID0gdGhpcy5kW3RoaXMudHlwZV0/Lm51bWJlciB8fCAwO1xyXG4gICAgY29uc3QgcGF0aCA9ICdkYXRlVGltZS53ZWVrZGF5c1Nob3J0JztcclxuICAgIHRoaXMud2Vla2RheXMgPSBbXHJcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0uc3VuYCwgdGhpcy5sb2NhbGUpLFxyXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9Lm1vbmAsIHRoaXMubG9jYWxlKSxcclxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50dWVgLCB0aGlzLmxvY2FsZSksXHJcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ud2VkYCwgdGhpcy5sb2NhbGUpLFxyXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnRodWAsIHRoaXMubG9jYWxlKSxcclxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5mcmlgLCB0aGlzLmxvY2FsZSksXHJcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0uc2F0YCwgdGhpcy5sb2NhbGUpXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBnZXRUb2RheU5hbWUoKSB7XHJcbiAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmdldCgnZGF0ZVRpbWUudG9kYXknLCB0aGlzLmxvY2FsZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2KCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSgtMSk7XHJcbiAgfVxyXG5cclxuICBuZXh0KCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSgxKTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZShhcnJheSwgbikge1xyXG4gICAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgcmV0dXJuICEobiAlIGxlbikgPyBhcnJheVxyXG4gICAgICA6IG4gPiAwID8gYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhpICsgbikgJSBsZW5dKVxyXG4gICAgICAgIDogYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhsZW4gLSAobGVuIC0gaSAtIG4pICUgbGVuKSAlIGxlbl0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGUodmFsdWU6IG51bWJlciB8IEFYRGF0ZVRpbWUpIHtcclxuXHJcbiAgICBsZXQgc3RhcnQ6IEFYRGF0ZVRpbWU7XHJcbiAgICBsZXQgZW5kOiBBWERhdGVUaW1lO1xyXG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcclxuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XHJcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCdtb250aCcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lXHJcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcclxuICAgICAgICAgIC5hZGQoJ21vbnRoJywgdmFsdWUpXHJcbiAgICAgICAgICAuc3RhcnRPZignbW9udGgnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RhcnQgPSBmZC5maXJzdERheU9mV2VlaztcclxuICAgICAgZW5kID0gZmQuZW5kT2YoJ21vbnRoJykuZW5kRGF5T2ZXZWVrO1xyXG5cclxuICAgICAgc3RhcnQgPSBzdGFydC5hZGQoJ2RheScsIC10aGlzLm51bVJvdGF0ZSk7XHJcbiAgICAgIGVuZCA9IGVuZC5hZGQoJ2RheScsIDcpLmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcclxuXHJcbiAgICAgIC8vIFRPRE86IGFwcGx5IHN0YXJ0IG9mIHdlZWtcclxuICAgICAgaWYgKCF0aGlzLnJvdGF0ZWQgJiYgdGhpcy53ZWVrZGF5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2phbGFsaScpIHtcclxuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCAtdGhpcy5udW1Sb3RhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLndlZWtkYXlzID0gdGhpcy5yb3RhdGUodGhpcy53ZWVrZGF5cywgdGhpcy5udW1Sb3RhdGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yb3RhdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcclxuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XHJcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCd5ZWFyJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcclxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxyXG4gICAgICAgICAgLmFkZCgneWVhcicsIHZhbHVlKVxyXG4gICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgfVxyXG4gICAgICBzdGFydCA9IGZkO1xyXG4gICAgICBlbmQgPSBmZC5lbmRPZigneWVhcicpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XHJcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcclxuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxyXG4gICAgICAgICAgLmFkZCgnZGF5JywgMTUpXHJcbiAgICAgICAgICAuYWRkKCd5ZWFyJywgdmFsdWUgKiAxMClcclxuICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3RhcnQgPSBmZC5hZGQoJ3llYXInLCAtNCk7XHJcbiAgICAgIGVuZCA9IHN0YXJ0LmFkZCgneWVhcicsIDgpLmVuZE9mKCd5ZWFyJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZpZXdSYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAvL1xyXG4gICAgaWYgKHRoaXMuZ2V0SG9saWRheSAmJiB0eXBlb2YgKHRoaXMuZ2V0SG9saWRheSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhpcy5ob2xpZGF5cyA9IHRoaXMuZ2V0SG9saWRheShzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5nZXRXZWVrZW5kICYmIHR5cGVvZiAodGhpcy5nZXRXZWVrZW5kKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aGlzLndlZWtlbmRzID0gdGhpcy5nZXRXZWVrZW5kKHN0YXJ0LmRhdGUsIGVuZC5kYXRlLCB0aGlzLnR5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vXHJcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xyXG5cclxuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSwgNyk7XHJcbiAgICAgIGlmICh0aGlzLm1hdHJpeC5sZW5ndGggPiAwICYmIHRoaXMubWF0cml4WzBdLmZpbmQoYyA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF0cml4W3RoaXMubWF0cml4Lmxlbmd0aCAtIDFdLmZpbmQoYyA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UodGhpcy5tYXRyaXgubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xyXG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ21vbnRoJywgdGhpcy50eXBlKSksIDMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ3llYXInLCB0aGlzLnR5cGUpKSwgMyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgZGF0ZXMuZm9yRWFjaCgoZCwgaSwgaikgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcclxuICAgICAgaXRlbS5kYXRlID0gZDtcclxuXHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XHJcbiAgICAgIGl0ZW0uZm9jdXNlZCA9IGQuY29tcGFpcmVOZXcodGhpcy5mb2N1c2VkVmFsdWUsIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XHJcbiAgICAgIGl0ZW0udG9kYXkgPSB0aGlzLnRvZGF5ICYmIGQuY29tcGFpcmVOZXcodGhpcy50b2RheSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMDtcclxuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcclxuICAgICAgICAvLyAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJykgIT09IDA7XHJcbiAgICAgICAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJywgdGhpcy50eXBlKSAhPT0gMDtcclxuXHJcbiAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKGQpO1xyXG4gICAgICAgIHRoaXMuaG9saWRheXMuZm9yRWFjaChoID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbXAgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKGguZGF0ZSwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSk7XHJcbiAgICAgICAgICBpZiAoY29tcCA9PT0gMCkge1xyXG4gICAgICAgICAgICBpdGVtLmhvbGlkYXkgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBpbmRleERheSA9IGkgLSBNYXRoLmZsb29yKGkgLyA3KSAqIDc7XHJcbiAgICAgICAgdGhpcy53ZWVrZW5kcy5mb3JFYWNoKGNjID0+IHtcclxuICAgICAgICAgIGlmIChOdW1iZXIoY2MpID09PSBpbmRleERheSkge1xyXG4gICAgICAgICAgICBpdGVtLmhvbGlkYXkgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpdGVtcztcclxuICB9XHJcblxyXG4gIGNoYW5nZVZpZXcoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xyXG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy52aWV3ID0gJ3llYXInO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWF0cml4aWZ5KGFycjogYW55W10sIGNvbHMpIHtcclxuXHJcbiAgICBjb25zdCByb3dzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBjb2xzKTtcclxuICAgIGNvbnN0IG1hdHJpeCA9IFtdO1xyXG4gICAgaWYgKHJvd3MgKiBjb2xzID09PSBhcnIubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XHJcbiAgICAgICAgbWF0cml4LnB1c2goYXJyLnNsaWNlKGksIGNvbHMgKyBpKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXRyaXg7XHJcbiAgfVxyXG5cclxuICBzZXREYXlDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0udW5zZWxlY3QgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcclxuICAgIGxldCByID0gZmFsc2U7XHJcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF4ICYmICF0aGlzLm1pbikge1xyXG4gICAgICAgIHIgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1heCkge1xyXG4gICAgICAgIHIgPSAoZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gLTEgfHxcclxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcjtcclxuICB9XHJcblxyXG4gIHNldE1vbnRoQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIGlmICh0aGlzLmRlcHRoID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlLmRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpZXcgPSAnZGF5JztcclxuICAgICAgdGhpcy5zZXRGb2N1cyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpLnNldCgneWVhcicsIGRhdGUueWVhcikuc2V0KCdtb250aCcsIGRhdGUubW9udGhPZlllYXIpKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2V0WWVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kZXB0aCA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlLmRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xyXG4gICAgICB0aGlzLnNldEZvY3VzKG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKSk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNldEZvY3VzKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gZGF0ZTtcclxuICAgIHRoaXMubmF2aWdhdGUodGhpcy5mb2N1c2VkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0VG9kYXkoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy50b2RheS5kYXRlO1xyXG4gICAgdGhpcy52aWV3ID0gJ2RheSdcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaXRlbS5kYXRlLmRhdGUuZ2V0VGltZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9jYWxlbmRhci1ib3gvY2FsZW5kYXItYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWtCLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBeUJ4QztJQWtJRSxnQ0FBb0IsR0FBc0IsRUFBVSxHQUFlO1FBQS9DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQWpJbkUsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUVoQixNQUFDLEdBQUc7WUFDVixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxJQUFJO2dCQUN0RCxHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsQ0FBQzthQUNWO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSTtnQkFDekQsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtTQUNGLENBQUM7UUFLRixTQUFJLEdBQWtCLElBQUksQ0FBQztRQWtCM0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBR2xDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFPUCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUV4QyxXQUFNLEdB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QUFpQixDQUFDLElBQUk7WUFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07U0FDaEQsQ0FBQzt5Q0FtSXlCLGlCQUFpQixFQUFlLFVBQVU7T0FsSXhELHNCQUFzQixDQXFhbEM7SUFBRCw2QkFBQztDQUFBLEFBcmFELElBcWFDO1NBcmFZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRGF0ZVRpbWUsIEFYRGF0ZVRpbWVSYW5nZSwgQVhDYWxlbmRhclR5cGUsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYRWxlbWVudFNpemUgfSBmcm9tICcuLi8uLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi8uLi9iYXNlL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuXHJcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5JztcclxuXHJcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5cyA9IEFYQ2FsZW5kYXJIb2xpZGF5W107XHJcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmMgPSAoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSwgdHlwZTogQVhDYWxlbmRhclR5cGUpID0+IEFYQ2FsZW5kYXJIb2xpZGF5W107XHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhckhvbGlkYXkge1xyXG4gIGRhdGU6IERhdGU7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzID0gQVhDYWxlbmRhcldlZWtlbmRbXTtcclxuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhDYWxlbmRhcldlZWtlbmQge1xyXG4gIGluZGV4RGF5OiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtY2FsZW5kYXItYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94Q29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XHJcbiAgd2Vla2RheXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHByaXZhdGUgZCA9IHtcclxuICAgIGphbGFsaToge1xyXG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuamFsYWxpLmxvY2FsZScpIHx8ICdmYScsXHJcbiAgICAgIGRpcjogJ3J0bCcsXHJcbiAgICAgIG51bWJlcjogMVxyXG4gICAgfSxcclxuICAgIGdyZWdvcmlhbjoge1xyXG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuZ3JlZ29yaWFuLmxvY2FsZScpIHx8ICdlbicsXHJcbiAgICAgIGRpcjogJ2x0cicsXHJcbiAgICAgIG51bWJlcjogMFxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIG51bVJvdGF0ZTogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6IEFYRWxlbWVudFNpemUgPSAnbWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHR5cGU6IEFYQ2FsZW5kYXJUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxvY2FsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1pbjogRGF0ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBtYXg6IERhdGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0YWJsZUhvbGlkYXk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRheVN0eWxlID0gW107XHJcblxyXG4gIHByaXZhdGUgZ2V0SG9saWRheTogQVhDYWxlbmRhckhvbGlkYXlzIHwgQVhDYWxlbmRhckhvbGlkYXlzRnVuYztcclxuXHJcbiAgcHJpdmF0ZSBnZXRXZWVrZW5kOiBBWENhbGVuZGFyV2Vla2VuZHMgfCBBWENhbGVuZGFyV2Vla2VuZHNGdW5jO1xyXG5cclxuICBASW5wdXQoJ3Nob3dUb2RheUJ1dHRvbicpXHJcbiAgcHVibGljIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtYXRyaXg6IGFueVtdID0gW107XHJcbiAgcm90YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3ZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICdkYXknO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2aWV3KCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlldztcclxuICB9XHJcbiAgcHVibGljIHNldCB2aWV3KHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xyXG4gICAgdGhpcy5fdmlldyA9IHY7XHJcbiAgICB0aGlzLm5hdmlnYXRlKDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGVwdGg6IEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICdkYXknO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVwdGgoKTogQVhDYWxlbmRhclZpZXdUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9kZXB0aDtcclxuICB9XHJcbiAgcHVibGljIHNldCBkZXB0aCh2OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcclxuICAgIHRoaXMuX2RlcHRoID0gdjtcclxuICAgIHRoaXMudmlldyA9IHY7XHJcbiAgfVxyXG5cclxuICB2aWV3UmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcclxuICBwcml2YXRlIGhvbGlkYXlzOiBBWENhbGVuZGFySG9saWRheVtdID0gW107XHJcbiAgcHJpdmF0ZSB3ZWVrZW5kczogQVhDYWxlbmRhcldlZWtlbmRbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25DbGljazogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IEFYRGF0ZVRpbWU7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlPy5kYXRlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IERhdGUpIHtcclxuICAgIGxldCB2djogQVhEYXRlVGltZTtcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIHZ2ID0gQVhEYXRlVGltZS5jb252ZXJ0KHYpO1xyXG4gICAgfVxyXG4gICAgbGV0IHVuVmFsaWREYXRlID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5tYXggfHwgdGhpcy5taW4pIHtcclxuICAgICAgdW5WYWxpZERhdGUgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZSh2dik7XHJcbiAgICB9XHJcbiAgICBpZiAoIXVuVmFsaWREYXRlKSB7XHJcbiAgICAgIGlmICh2diAmJiAhdnYuZXF1YWwodGhpcy5fdmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2djtcclxuICAgICAgICB0aGlzLl92YWx1ZS50eXBlID0gdGhpcy50eXBlO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy5fdmFsdWUuY2xvbmUoKSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZ2LmRhdGUpO1xyXG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXHJcbiAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHRoaXMudG9kYXk7XHJcbiAgICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUoMCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5fdmFsdWU/LmRhdGUsXHJcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c2VkVmFsdWU6IEFYRGF0ZVRpbWU7XHJcbiAgZ2V0IHRvZGF5KCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICAvLyBzZXQgZGVmYXVsdHNcclxuICAgIHRoaXMuZ2V0SG9saWRheSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuaG9saWRheXMnKTtcclxuICAgIHRoaXMuZ2V0V2Vla2VuZCA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUud2Vla2VuZHMnKTtcclxuICB9XHJcbiAgZmluZERheShkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUgPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTdHlsZShkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUgPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRheVN0eWxlLmZpbmQoKGMpID0+IGMuZGF0ZSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkuc3R5bGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZShkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICBpZiAodGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUgPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRheVN0eWxlLmZpbmQoKGMpID0+IGMuZGF0ZSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkudGV4dDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gICAgLy9cclxuICAgIHRoaXMuaW5pdExheW91dCgpO1xyXG4gICAgLy9cclxuICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcclxuICAgIGlmICh0aGlzLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKHRoaXMudG9kYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlldyA9ICdkYXknO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vmlld0NvbXBhaXJlKHZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xyXG4gICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgcmV0dXJuICdZTUQnO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgcmV0dXJuICdZTSc7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiAnWSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdmlnYXRlKDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TGF5b3V0KCkge1xyXG4gICAgaWYgKCF0aGlzLnR5cGUpIHtcclxuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbic7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMubG9jYWxlKSB7XHJcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5kW3RoaXMudHlwZV0/LmxvY2FsZSB8fCB0aGlzLmxvY2FsZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kaXIpIHtcclxuICAgICAgdGhpcy5kaXIgPSB0aGlzLmRbdGhpcy50eXBlXT8uZGlyIHx8ICdsdHInO1xyXG4gICAgfVxyXG4gICAgdGhpcy5udW1Sb3RhdGUgPSB0aGlzLmRbdGhpcy50eXBlXT8ubnVtYmVyIHx8IDA7XHJcbiAgICBjb25zdCBwYXRoID0gJ2RhdGVUaW1lLndlZWtkYXlzU2hvcnQnO1xyXG4gICAgdGhpcy53ZWVrZGF5cyA9IFtcclxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5zdW5gLCB0aGlzLmxvY2FsZSksXHJcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ubW9uYCwgdGhpcy5sb2NhbGUpLFxyXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnR1ZWAsIHRoaXMubG9jYWxlKSxcclxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS53ZWRgLCB0aGlzLmxvY2FsZSksXHJcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udGh1YCwgdGhpcy5sb2NhbGUpLFxyXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LmZyaWAsIHRoaXMubG9jYWxlKSxcclxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5zYXRgLCB0aGlzLmxvY2FsZSlcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBnZXRUb2RheU5hbWUoKSB7XHJcbiAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmdldCgnZGF0ZVRpbWUudG9kYXknLCB0aGlzLmxvY2FsZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2KCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSgtMSk7XHJcbiAgfVxyXG5cclxuICBuZXh0KCkge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSgxKTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZShhcnJheSwgbikge1xyXG4gICAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgcmV0dXJuICEobiAlIGxlbikgPyBhcnJheSA6IG4gPiAwID8gYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhpICsgbikgJSBsZW5dKSA6IGFycmF5Lm1hcCgoZSwgaSwgYSkgPT4gYVsobGVuIC0gKChsZW4gLSBpIC0gbikgJSBsZW4pKSAlIGxlbl0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGUodmFsdWU6IG51bWJlciB8IEFYRGF0ZVRpbWUpIHtcclxuICAgIGxldCBzdGFydDogQVhEYXRlVGltZTtcclxuICAgIGxldCBlbmQ6IEFYRGF0ZVRpbWU7XHJcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xyXG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XHJcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcclxuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ21vbnRoJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxNSkuYWRkKCdtb250aCcsIHZhbHVlKS5zdGFydE9mKCdtb250aCcpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdGFydCA9IGZkLmZpcnN0RGF5T2ZXZWVrO1xyXG4gICAgICBlbmQgPSBmZC5lbmRPZignbW9udGgnKS5lbmREYXlPZldlZWs7XHJcblxyXG4gICAgICBzdGFydCA9IHN0YXJ0LmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcclxuICAgICAgZW5kID0gZW5kLmFkZCgnZGF5JywgNykuYWRkKCdkYXknLCAtdGhpcy5udW1Sb3RhdGUpO1xyXG5cclxuICAgICAgLy8gVE9ETzogYXBwbHkgc3RhcnQgb2Ygd2Vla1xyXG4gICAgICBpZiAoIXRoaXMucm90YXRlZCAmJiB0aGlzLndlZWtkYXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnamFsYWxpJykge1xyXG4gICAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMucm90YXRlKHRoaXMud2Vla2RheXMsIC10aGlzLm51bVJvdGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCB0aGlzLm51bVJvdGF0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJvdGF0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xyXG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XHJcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcclxuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDE1KS5hZGQoJ3llYXInLCB2YWx1ZSkuc3RhcnRPZigneWVhcicpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YXJ0ID0gZmQ7XHJcbiAgICAgIGVuZCA9IGZkLmVuZE9mKCd5ZWFyJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ3llYXInKSB7XHJcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xyXG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lXHJcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcclxuICAgICAgICAgIC5hZGQoJ3llYXInLCB2YWx1ZSAqIDEwKVxyXG4gICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgfVxyXG4gICAgICBzdGFydCA9IGZkLmFkZCgneWVhcicsIC00KTtcclxuICAgICAgZW5kID0gc3RhcnQuYWRkKCd5ZWFyJywgOCkuZW5kT2YoJ3llYXInKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld1JhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShzdGFydCwgZW5kKTtcclxuICAgIC8vXHJcbiAgICBpZiAodGhpcy5nZXRIb2xpZGF5ICYmIHR5cGVvZiB0aGlzLmdldEhvbGlkYXkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhpcy5ob2xpZGF5cyA9IHRoaXMuZ2V0SG9saWRheShzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5nZXRXZWVrZW5kICYmIHR5cGVvZiB0aGlzLmdldFdlZWtlbmQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhpcy53ZWVrZW5kcyA9IHRoaXMuZ2V0V2Vla2VuZChzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICAvL1xyXG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcclxuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSwgNyk7XHJcbiAgICAgIGlmICh0aGlzLm1hdHJpeC5sZW5ndGggPiAwICYmIHRoaXMubWF0cml4WzBdLmZpbmQoKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZSkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubWF0cml4LnNwbGljZSgwLCAxKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tYXRyaXhbdGhpcy5tYXRyaXgubGVuZ3RoIC0gMV0uZmluZCgoYykgPT4gYy5uZXh0TW9udGggPT09IGZhbHNlKSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5tYXRyaXguc3BsaWNlKHRoaXMubWF0cml4Lmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xyXG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ21vbnRoJywgdGhpcy50eXBlKSksIDMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xyXG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ3llYXInLCB0aGlzLnR5cGUpKSwgMyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gICAgZGF0ZXMuZm9yRWFjaCgoZCwgaSwgaikgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcclxuICAgICAgaXRlbS5kYXRlID0gZDtcclxuXHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XHJcbiAgICAgIGl0ZW0uZm9jdXNlZCA9IGQuY29tcGFpcmVOZXcodGhpcy5mb2N1c2VkVmFsdWUsIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XHJcbiAgICAgIGl0ZW0udG9kYXkgPSB0aGlzLnRvZGF5ICYmIGQuY29tcGFpcmVOZXcodGhpcy50b2RheSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMDtcclxuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcclxuICAgICAgICAvLyAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJykgIT09IDA7XHJcbiAgICAgICAgaXRlbS5uZXh0TW9udGggPSBkLmNvbXBhaXJlTmV3KHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSwgJ1lNJywgdGhpcy50eXBlKSAhPT0gMDtcclxuXHJcbiAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRoaXMuaXNJbk1Jbk1heFJhbmdlKGQpO1xyXG4gICAgICAgIHRoaXMuaG9saWRheXMuZm9yRWFjaCgoaCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29tcCA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUoaC5kYXRlLCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKTtcclxuICAgICAgICAgIGlmIChjb21wID09PSAwKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgIGl0ZW0udW5zZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGluZGV4RGF5ID0gaSAtIE1hdGguZmxvb3IoaSAvIDcpICogNztcclxuICAgICAgICB0aGlzLndlZWtlbmRzLmZvckVhY2goKGNjKSA9PiB7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGNjKSA9PT0gaW5kZXhEYXkpIHtcclxuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZUhvbGlkYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VWaWV3KCkge1xyXG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcclxuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XHJcbiAgICAgIHRoaXMudmlldyA9ICd5ZWFyJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hdHJpeGlmeShhcnI6IGFueVtdLCBjb2xzKSB7XHJcbiAgICBjb25zdCByb3dzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBjb2xzKTtcclxuICAgIGNvbnN0IG1hdHJpeCA9IFtdO1xyXG4gICAgaWYgKHJvd3MgKiBjb2xzID09PSBhcnIubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XHJcbiAgICAgICAgbWF0cml4LnB1c2goYXJyLnNsaWNlKGksIGNvbHMgKyBpKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtYXRyaXg7XHJcbiAgfVxyXG5cclxuICBzZXREYXlDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0udW5zZWxlY3QgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcclxuICAgIGxldCByID0gZmFsc2U7XHJcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcclxuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWF4ICYmICF0aGlzLm1pbikge1xyXG4gICAgICAgIHIgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1heCkge1xyXG4gICAgICAgIHIgPVxyXG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gLTEgfHxcclxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xyXG4gICAgaWYgKHRoaXMuZGVwdGggPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlldyA9ICdkYXknO1xyXG4gICAgICB0aGlzLnNldEZvY3VzKG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSkuc2V0KCd5ZWFyJywgZGF0ZS55ZWFyKS5zZXQoJ21vbnRoJywgZGF0ZS5tb250aE9mWWVhcikpO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRZZWFyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIGlmICh0aGlzLmRlcHRoID09PSAneWVhcicpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlldyA9ICdtb250aCc7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKS5zZXQoJ3llYXInLCBkYXRlLnllYXIpKTtcclxuICAgIH1cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2V0Rm9jdXMoZGF0ZTogQVhEYXRlVGltZSkge1xyXG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBkYXRlO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLmZvY3VzZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRUb2RheSgpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRvZGF5LmRhdGU7XHJcbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaXRlbS5kYXRlLmRhdGUuZ2V0VGltZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|