ids-enterprise-ng 13.5.2 → 13.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/button/soho-button.component.mjs +22 -4
- package/esm2020/lib/datepicker/soho-datepicker.component.mjs +2 -2
- package/esm2020/lib/listbuilder/soho-listbuilder.component.mjs +1 -1
- package/esm2020/lib/stepprocess/soho-stepprocess.component.mjs +1 -1
- package/esm2020/lib/swaplist/soho-swaplist.component.mjs +1 -1
- package/esm2020/lib/wizard/soho-wizard-buttonbar.component.mjs +1 -1
- package/esm2020/version.json +1 -1
- package/fesm2015/ids-enterprise-ng.mjs +29 -9
- package/fesm2015/ids-enterprise-ng.mjs.map +1 -1
- package/fesm2020/ids-enterprise-ng.mjs +27 -9
- package/fesm2020/ids-enterprise-ng.mjs.map +1 -1
- package/lib/button/soho-button.component.d.ts +9 -2
- package/package.json +3 -3
|
@@ -15,6 +15,7 @@ export class SohoButtonComponent {
|
|
|
15
15
|
this._buttonOptions = {};
|
|
16
16
|
this._isToggle = false;
|
|
17
17
|
this._isTogglePressed = false;
|
|
18
|
+
this._iconAlign = 'start';
|
|
18
19
|
this._isPressed = false;
|
|
19
20
|
/** Sets the button type to 'submit' when true. */
|
|
20
21
|
this.isSubmit = false;
|
|
@@ -131,6 +132,15 @@ export class SohoButtonComponent {
|
|
|
131
132
|
get isTogglePressed() {
|
|
132
133
|
return this._isTogglePressed;
|
|
133
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* The icon placement
|
|
137
|
+
*/
|
|
138
|
+
set iconAlign(iconAlign) {
|
|
139
|
+
this._iconAlign = iconAlign;
|
|
140
|
+
}
|
|
141
|
+
get iconAlign() {
|
|
142
|
+
return this._iconAlign;
|
|
143
|
+
}
|
|
134
144
|
get btn() {
|
|
135
145
|
return this.buttonType === SohoButtonComponent.BTN;
|
|
136
146
|
}
|
|
@@ -196,6 +206,9 @@ export class SohoButtonComponent {
|
|
|
196
206
|
this.icon = 'star-filled';
|
|
197
207
|
}
|
|
198
208
|
}
|
|
209
|
+
if (this.notificationBadge && this.notificationBadgeOptions?.position === 'upper-right') {
|
|
210
|
+
this.iconAlign = 'end';
|
|
211
|
+
}
|
|
199
212
|
}
|
|
200
213
|
ngAfterViewInit() {
|
|
201
214
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -313,7 +326,10 @@ export class SohoButtonComponent {
|
|
|
313
326
|
});
|
|
314
327
|
}
|
|
315
328
|
get hasIcon() {
|
|
316
|
-
return (this.icon || (this.buttonOptions.toggleOnIcon && this.buttonOptions.toggleOffIcon));
|
|
329
|
+
return (this.icon || (this.buttonOptions.toggleOnIcon && this.buttonOptions.toggleOffIcon)) && (this.iconAlign !== 'end');
|
|
330
|
+
}
|
|
331
|
+
get hasIconEnd() {
|
|
332
|
+
return (this.icon || (this.buttonOptions.toggleOnIcon && this.buttonOptions.toggleOffIcon)) && (this.iconAlign === 'end');
|
|
317
333
|
}
|
|
318
334
|
get currentIcon() {
|
|
319
335
|
if (this.isToggle && this.buttonOptions.toggleOnIcon && this.buttonOptions.toggleOffIcon) {
|
|
@@ -357,10 +373,10 @@ SohoButtonComponent.FAVORITE = 'favorite';
|
|
|
357
373
|
SohoButtonComponent.MODAL = 'modal';
|
|
358
374
|
SohoButtonComponent.MODAL_PRIMARY = 'modal-primary';
|
|
359
375
|
SohoButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
360
|
-
SohoButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoButtonComponent, selector: "button[soho-button]", inputs: { sohoButton: ["soho-button", "sohoButton"], buttonOptions: "buttonOptions", toggleOnIcon: "toggleOnIcon", toggleOffIcon: "toggleOffIcon", replaceText: "replaceText", hideMenuArrow: "hideMenuArrow", hitbox: "hitbox", notificationBadge: "notificationBadge", notificationBadgeOptions: "notificationBadgeOptions", extraIconClass: "extraIconClass", isToggle: "isToggle", isTogglePressed: "isTogglePressed", icon: "icon", isSubmit: "isSubmit", ripple: "ripple", state: "state", toggle: "toggle", expandableExpander: "expandableExpander", moveToLeft: "moveToLeft", moveToRight: "moveToRight", moveToSelected: "moveToSelected" }, host: { listeners: { "click": "toggleState()" }, properties: { "class.btn": "this.btn", "class.btn-primary": "this.btnPrimary", "class.btn-secondary": "this.btnSecondary", "class.btn-tertiary": "this.btnTertiary", "class.btn-icon": "this.btnIcon", "class.btn-toggle": "this.btnToggle", "class.btn-modal": "this.btnModal", "class.btn-modal-primary": "this.btnModalPrimary", "class.is-pressed": "this.btnTogglePressed", "class.icon-favorite": "this.iconFavorite", "class.btn-moveto-left": "this.moveToLeft", "class.btn-moveto-right": "this.moveToRight", "class.btn-moveto-selected": "this.moveToSelected", "class.no-ripple": "this.noRipple", "attr.type": "this.type", "class.expandable-expander": "this.isExpandableExpander", "attr.aria-pressed": "this.ariaPressed" } }, ngImport: i0, template: "<
|
|
376
|
+
SohoButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoButtonComponent, selector: "button[soho-button]", inputs: { sohoButton: ["soho-button", "sohoButton"], buttonOptions: "buttonOptions", toggleOnIcon: "toggleOnIcon", toggleOffIcon: "toggleOffIcon", replaceText: "replaceText", hideMenuArrow: "hideMenuArrow", hitbox: "hitbox", notificationBadge: "notificationBadge", notificationBadgeOptions: "notificationBadgeOptions", extraIconClass: "extraIconClass", isToggle: "isToggle", isTogglePressed: "isTogglePressed", icon: "icon", iconAlign: "iconAlign", isSubmit: "isSubmit", ripple: "ripple", state: "state", toggle: "toggle", expandableExpander: "expandableExpander", moveToLeft: "moveToLeft", moveToRight: "moveToRight", moveToSelected: "moveToSelected" }, host: { listeners: { "click": "toggleState()" }, properties: { "class.btn": "this.btn", "class.btn-primary": "this.btnPrimary", "class.btn-secondary": "this.btnSecondary", "class.btn-tertiary": "this.btnTertiary", "class.btn-icon": "this.btnIcon", "class.btn-toggle": "this.btnToggle", "class.btn-modal": "this.btnModal", "class.btn-modal-primary": "this.btnModalPrimary", "class.is-pressed": "this.btnTogglePressed", "class.icon-favorite": "this.iconFavorite", "class.btn-moveto-left": "this.moveToLeft", "class.btn-moveto-right": "this.moveToRight", "class.btn-moveto-selected": "this.moveToSelected", "class.no-ripple": "this.noRipple", "attr.type": "this.type", "class.expandable-expander": "this.isExpandableExpander", "attr.aria-pressed": "this.ariaPressed" } }, ngImport: i0, template: "<svg soho-icon *ngIf=\"hasIcon\" [icon]=\"currentIcon\" [extraIconClass]=\"extraIconClass\"></svg>\n<span><ng-content></ng-content></span>\n<svg soho-icon *ngIf=\"hasIconEnd\" [icon]=\"currentIcon\" [extraIconClass]=\"extraIconClass\"></svg>\n<ng-content select=\"div.disabled-tooltip\"></ng-content>\n", components: [{ type: i1.SohoIconComponent, selector: "svg[soho-icon]", inputs: ["isEmptyState", "extraIconClass", "alert", "icon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
361
377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoButtonComponent, decorators: [{
|
|
362
378
|
type: Component,
|
|
363
|
-
args: [{ selector: 'button[soho-button]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
379
|
+
args: [{ selector: 'button[soho-button]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg soho-icon *ngIf=\"hasIcon\" [icon]=\"currentIcon\" [extraIconClass]=\"extraIconClass\"></svg>\n<span><ng-content></ng-content></span>\n<svg soho-icon *ngIf=\"hasIconEnd\" [icon]=\"currentIcon\" [extraIconClass]=\"extraIconClass\"></svg>\n<ng-content select=\"div.disabled-tooltip\"></ng-content>\n" }]
|
|
364
380
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { sohoButton: [{
|
|
365
381
|
type: Input,
|
|
366
382
|
args: ['soho-button']
|
|
@@ -388,6 +404,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImpor
|
|
|
388
404
|
type: Input
|
|
389
405
|
}], icon: [{
|
|
390
406
|
type: Input
|
|
407
|
+
}], iconAlign: [{
|
|
408
|
+
type: Input
|
|
391
409
|
}], isSubmit: [{
|
|
392
410
|
type: Input
|
|
393
411
|
}], ripple: [{
|
|
@@ -459,4 +477,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImpor
|
|
|
459
477
|
type: HostBinding,
|
|
460
478
|
args: ['attr.aria-pressed']
|
|
461
479
|
}] } });
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29oby1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWRzLWVudGVycHJpc2Utbmcvc3JjL2xpYi9idXR0b24vc29oby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWRzLWVudGVycHJpc2Utbmcvc3JjL2xpYi9idXR0b24vc29oby1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBWTFELE1BQU0sT0FBTyxtQkFBbUI7SUErUTlCOzs7O09BSUc7SUFDSCxZQUFvQixPQUFtQixFQUFVLE1BQWM7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUF4UHZELG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBd0kzQixrREFBa0Q7UUFDekMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUUxQixvRUFBb0U7UUFDM0QsV0FBTSxHQUFHLElBQUksQ0FBQztRQWtCdkI7Ozs7V0FJRztRQUNNLHVCQUFrQixHQUFHLEtBQUssQ0FBQztJQW1GcEMsQ0FBQztJQXBQRDs7OztPQUlHO0lBQ0gsMkRBQTJEO0lBQzNELElBQTBCLFVBQVUsQ0FBQyxJQUFvQjtRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxhQUFhLENBQUMsYUFBZ0M7UUFDekQsY0FBYyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2Ysc0RBQXNEO1NBQ3ZEO0lBQ0gsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxZQUFZLENBQUMsWUFBb0I7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0Qiw0REFBNEQ7U0FDN0Q7SUFDSCxDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsYUFBcUI7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0Qiw2REFBNkQ7U0FDOUQ7SUFDSCxDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBb0I7UUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBYyxDQUFDLFFBQWdCLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztTQUNsRTtJQUNILENBQUM7SUFFRCxJQUFhLGFBQWEsQ0FBQyxLQUEwQjtRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWEsTUFBTSxDQUFDLEtBQTBCO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxpQkFBaUIsQ0FBQyxLQUEwQjtRQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWEsd0JBQXdCLENBQUMsS0FBK0M7UUFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQztJQUN0RCxDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFBYSxRQUFRLENBQUMsUUFBaUI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFhLGVBQWUsQ0FBQyxlQUF3QjtRQUNuRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQXFDRCxJQUNJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsR0FBRyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsU0FBUyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFxQyxTQUFTO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBb0MsUUFBUTtRQUMxQyxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUE0QyxlQUFlO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQXFDLGdCQUFnQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQXdDLFlBQVk7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztJQUMxRCxDQUFDO0lBTUQsSUFDSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQThCLElBQUk7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBOEMsb0JBQW9CO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNvQixXQUFXO1FBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFHLHNCQUFzQjtZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLHNCQUFzQjtTQUNqRDtJQUNILENBQUM7SUFFRCxJQUFzQyxXQUFXO1FBQy9DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBVUQsNkNBQTZDO0lBQzdDLG1CQUFtQjtJQUNuQiw2Q0FBNkM7SUFFN0MsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDLHNCQUFzQjtnQkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlO1FBRWIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELCtCQUErQjtZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFL0MsK0NBQStDO1lBQy9DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM5QjtZQUVELHVEQUF1RDtZQUN2RCx5REFBeUQ7WUFDekQsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFaEQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxFQUFFLHNCQUFzQjtnQkFDcEQsK0RBQStEO2dCQUMvRCxnRUFBZ0U7Z0JBQ2hFLGdFQUFnRTtnQkFDaEUsWUFBWTtnQkFDWixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsUUFBUSxFQUFFO29CQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUMxQzthQUNGO1lBRUQsd0RBQXdEO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNsQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQy9DO2FBQ0Y7WUFFRCxrREFBa0Q7WUFFbEQsMENBQTBDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBVSxTQUFTO2dCQUN2RCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3RFLE1BQU0sWUFBWSxHQUFHO3dCQUNuQixLQUFLO3dCQUNMLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixTQUFTO3FCQUNWLENBQUM7b0JBQ0YsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7d0JBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTs0QkFDdEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQ0FDM0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQ0FDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7aUNBQ3ZDOzRCQUNILENBQUMsQ0FBQyxDQUFBO3lCQUNIO29CQUNILENBQUMsQ0FBQTtvQkFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDcEQsTUFBTSxhQUFhLEdBQXNCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUU5RyxRQUFRLElBQUksRUFBRTt3QkFDWixLQUFLLEtBQUs7NEJBQ1IsaUJBQWlCLEVBQUUsQ0FBQzs0QkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7NEJBQzFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzRCQUM1QixNQUFNO3dCQUNSLEtBQUssU0FBUzs0QkFDWixpQkFBaUIsRUFBRSxDQUFDOzRCQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzs0QkFDOUMsYUFBYSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7NEJBQ3BDLE1BQU07d0JBQ1IsS0FBSyxXQUFXOzRCQUNkLGlCQUFpQixFQUFFLENBQUM7NEJBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDOzRCQUNoRCxhQUFhLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQzs0QkFDdEMsTUFBTTt3QkFDUixLQUFLLFVBQVU7NEJBQ2IsaUJBQWlCLEVBQUUsQ0FBQzs0QkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7NEJBQy9DLGFBQWEsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDOzRCQUNyQyxNQUFNO3dCQUNSLEtBQUssTUFBTTs0QkFDVCxpQkFBaUIsRUFBRSxDQUFDOzRCQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQzs0QkFDM0MsYUFBYSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7NEJBQ2hDLE1BQU07d0JBQ1IsS0FBSyxVQUFVOzRCQUNiLGlCQUFpQixFQUFFLENBQUM7NEJBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDOzRCQUMvQyxhQUFhLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQzs0QkFDckMsTUFBTTt3QkFDUixLQUFLLFNBQVM7NEJBQ1osaUJBQWlCLEVBQUUsQ0FBQzs0QkFDcEIsYUFBYSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7NEJBQ2hDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDOzRCQUMvQixNQUFNO3FCQUNUO29CQUNELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUMzQyxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsZUFBZSxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ2pDLENBQ0EsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7YUFDaEM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFO1lBQ3hGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1NBQ2xHO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsc0JBQXNCO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHNCQUFzQjtTQUNwRTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBNEI7UUFDbEMsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6RztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBemNELDhDQUE4QztBQUM5QywwQkFBMEI7QUFDMUIsOENBQThDO0FBRXZDLHVCQUFHLEdBQW1CLEtBQU0sQ0FBQTtBQUM1QiwyQkFBTyxHQUFtQixTQUFVLENBQUE7QUFDcEMsNkJBQVMsR0FBbUIsV0FBWSxDQUFBO0FBQ3hDLDRCQUFRLEdBQW1CLFVBQVcsQ0FBQTtBQUN0Qyx3QkFBSSxHQUFtQixNQUFPLENBQUE7QUFDOUIsNEJBQVEsR0FBbUIsVUFBVyxDQUFBO0FBQ3RDLHlCQUFLLEdBQW1CLE9BQVEsQ0FBQTtBQUNoQyxpQ0FBYSxHQUFtQixlQUFnQixDQUFBO2dIQWI1QyxtQkFBbUI7b0dBQW5CLG1CQUFtQixtN0NDekJoQywrTUFLQTsyRkRvQmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNO3NIQXlDckIsVUFBVTtzQkFBbkMsS0FBSzt1QkFBQyxhQUFhO2dCQU9QLGFBQWE7c0JBQXpCLEtBQUs7Z0JBWU8sWUFBWTtzQkFBeEIsS0FBSztnQkFPTyxhQUFhO3NCQUF6QixLQUFLO2dCQU9PLFdBQVc7c0JBQXZCLEtBQUs7Z0JBT08sYUFBYTtzQkFBekIsS0FBSztnQkFjTyxNQUFNO3NCQUFsQixLQUFLO2dCQWNPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFjTyx3QkFBd0I7c0JBQXBDLEtBQUs7Z0JBZUcsY0FBYztzQkFBdEIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQVdPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBWUcsSUFBSTtzQkFBWixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQVNHLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdGLEdBQUc7c0JBRE4sV0FBVzt1QkFBQyxXQUFXO2dCQU1wQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixZQUFZO3NCQURmLFdBQVc7dUJBQUMscUJBQXFCO2dCQU05QixXQUFXO3NCQURkLFdBQVc7dUJBQUMsb0JBQW9CO2dCQU03QixPQUFPO3NCQURWLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUtRLFNBQVM7c0JBQTdDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUlLLFFBQVE7c0JBQTNDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUljLGVBQWU7c0JBQTFELFdBQVc7dUJBQUMseUJBQXlCO2dCQUlELGdCQUFnQjtzQkFBcEQsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBSVMsWUFBWTtzQkFBbkQsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBSWEsVUFBVTtzQkFBeEQsV0FBVzt1QkFBQyx1QkFBdUI7O3NCQUFHLEtBQUs7Z0JBQ0ksV0FBVztzQkFBMUQsV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUFHLEtBQUs7Z0JBQ00sY0FBYztzQkFBaEUsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUFHLEtBQUs7Z0JBRzVDLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBS0EsSUFBSTtzQkFBakMsV0FBVzt1QkFBQyxXQUFXO2dCQUlzQixvQkFBb0I7c0JBQWpFLFdBQVc7dUJBQUMsMkJBQTJCO2dCQU9qQixXQUFXO3NCQUFqQyxZQUFZO3VCQUFDLE9BQU87Z0JBTWlCLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcmd1bWVudEhlbHBlciB9IGZyb20gJy4uL3V0aWxzL2FyZ3VtZW50LmhlbHBlcic7XG5cbi8qKlxuICogU3VwcG9ydGVkIGJ1dHRvbiB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU29ob0J1dHRvblR5cGUgPSAnYnRuJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ3RlcnRpYXJ5JyB8ICdpY29uJyB8ICdmYXZvcml0ZScgfCAnbW9kYWwnIHwgJ21vZGFsLXByaW1hcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdidXR0b25bc29oby1idXR0b25dJywgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB0ZW1wbGF0ZVVybDogJ3NvaG8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU29ob0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFN1cHBvcnRlZCBidXR0b24gdHlwZXMuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBzdGF0aWMgQlROOiBTb2hvQnV0dG9uVHlwZSA9ICdidG4nO1xuICBzdGF0aWMgUFJJTUFSWTogU29ob0J1dHRvblR5cGUgPSAncHJpbWFyeSc7XG4gIHN0YXRpYyBTRUNPTkRBUlk6IFNvaG9CdXR0b25UeXBlID0gJ3NlY29uZGFyeSc7XG4gIHN0YXRpYyBURVJUSUFSWTogU29ob0J1dHRvblR5cGUgPSAndGVydGlhcnknO1xuICBzdGF0aWMgSUNPTjogU29ob0J1dHRvblR5cGUgPSAnaWNvbic7XG4gIHN0YXRpYyBGQVZPUklURTogU29ob0J1dHRvblR5cGUgPSAnZmF2b3JpdGUnO1xuICBzdGF0aWMgTU9EQUw6IFNvaG9CdXR0b25UeXBlID0gJ21vZGFsJztcbiAgc3RhdGljIE1PREFMX1BSSU1BUlk6IFNvaG9CdXR0b25UeXBlID0gJ21vZGFsLXByaW1hcnknO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUHJpdmF0ZSBNZW1iZXIgRGF0YVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgalF1ZXJ5IGNvbnRyb2wuICovXG4gIHByaXZhdGUgalF1ZXJ5RWxlbWVudD86IEpRdWVyeTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBTb2hvIGNvbnRyb2wgYXBpLiAqL1xuICBwcml2YXRlIGJ1dHRvbj86IFNvaG9CdXR0b25TdGF0aWMgfCBudWxsO1xuXG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgYnV0dG9uLiAqL1xuICBwcml2YXRlIGJ1dHRvblR5cGU/OiBTb2hvQnV0dG9uVHlwZTtcblxuICBwcml2YXRlIF9idXR0b25PcHRpb25zOiBTb2hvQnV0dG9uT3B0aW9ucyA9IHt9O1xuICBwcml2YXRlIF9pc1RvZ2dsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9pc1RvZ2dsZVByZXNzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQcmVzc2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBidXR0b24sIGRlZmF1bHRpbmcgdG8gJ3NlY29uZGFyeScuXG4gICAqXG4gICAqIEFsbG93IG92ZXJyaWRlIG9mIGlucHV0LCB0byBtYXRjaCBjb21wb25lbnQgc2VsZWN0b3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3NvaG8tYnV0dG9uJykgc2V0IHNvaG9CdXR0b24odHlwZTogU29ob0J1dHRvblR5cGUpIHtcbiAgICB0aGlzLmJ1dHRvblR5cGUgPSB0eXBlID8gdHlwZSA6IFNvaG9CdXR0b25Db21wb25lbnQuU0VDT05EQVJZO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGJ1dHRvbiBvcHRpb25zXG4gICAqL1xuICBASW5wdXQoKSBzZXQgYnV0dG9uT3B0aW9ucyhidXR0b25PcHRpb25zOiBTb2hvQnV0dG9uT3B0aW9ucykge1xuICAgIEFyZ3VtZW50SGVscGVyLmNoZWNrTm90TnVsbCgnYnV0dG9uT3B0aW9ucycsIGJ1dHRvbk9wdGlvbnMpO1xuXG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucyA9IGJ1dHRvbk9wdGlvbnM7XG4gICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICAvLyB0b2RvOiBob3cgdG8gdXBkYXRlIHRoZSBidXR0b24gd2hlbiBvcHRpb25zIGNoYW5nZT9cbiAgICB9XG4gIH1cbiAgZ2V0IGJ1dHRvbk9wdGlvbnMoKTogU29ob0J1dHRvbk9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25PcHRpb25zO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZ2dsZU9uSWNvbih0b2dnbGVPbkljb246IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMudG9nZ2xlT25JY29uID0gdG9nZ2xlT25JY29uO1xuICAgIGlmICh0aGlzLmpRdWVyeUVsZW1lbnQpIHtcbiAgICAgIC8vIHRvZG86IGhvdyB0byB1cGRhdGUgdGhlIGJ1dHRvbiB3aGVuIHRvZ2dsZU9uSWNvbiBjaGFuZ2VzP1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB0b2dnbGVPZmZJY29uKHRvZ2dsZU9mZkljb246IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMudG9nZ2xlT2ZmSWNvbiA9IHRvZ2dsZU9mZkljb247XG4gICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudCkge1xuICAgICAgLy8gdG9kbzogaG93IHRvIHVwZGF0ZSB0aGUgYnV0dG9uIHdoZW4gdG9nZ2xlT2ZmSWNvbiBjaGFuZ2VzP1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByZXBsYWNlVGV4dChyZXBsYWNlVGV4dDogYm9vbGVhbikge1xuICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMucmVwbGFjZVRleHQgPSByZXBsYWNlVGV4dDtcbiAgICBpZiAodGhpcy5qUXVlcnlFbGVtZW50KSB7XG4gICAgICAoKHRoaXMuYnV0dG9uIGFzIGFueSkuc2V0dGluZ3MgYXMgYW55KS5yZXBsYWNlVGV4dCA9IHJlcGxhY2VUZXh0O1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBoaWRlTWVudUFycm93KHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5oaWRlTWVudUFycm93ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICB0aGlzLmJ1dHRvbi5zZXR0aW5ncy5oaWRlTWVudUFycm93ID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhpZGVNZW51QXJyb3coKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvbk9wdGlvbnMuaGlkZU1lbnVBcnJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGFkZCBhIGJpZ2dlciBoaXQgYXJlYSAoZm9yIG1vYmlsZSlcbiAgICovXG4gIEBJbnB1dCgpIHNldCBoaXRib3godmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9idXR0b25PcHRpb25zLmhpdGJveCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgdGhpcy5idXR0b24uc2V0dGluZ3MuaGl0Ym94ID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhpdGJveCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uT3B0aW9ucy5oaXRib3g7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgYSBub3RpZmljYXRpb24gYmFkZ2Ugb24gdGhlIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgc2V0IG5vdGlmaWNhdGlvbkJhZGdlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5ub3RpZmljYXRpb25CYWRnZSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgdGhpcy5idXR0b24uc2V0dGluZ3Mubm90aWZpY2F0aW9uQmFkZ2UgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgbm90aWZpY2F0aW9uQmFkZ2UoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvbk9wdGlvbnMubm90aWZpY2F0aW9uQmFkZ2U7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwb3NpdGlvbiBhbmQgY29sb3Igb2YgdGhlIG5vdGlmaWNhdGlvbiBiYWRnZSBvbiB0aGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zKHZhbHVlOiBTb2hvTm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5ub3RpZmljYXRpb25CYWRnZU9wdGlvbnMgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgIHRoaXMuYnV0dG9uLnNldHRpbmdzLm5vdGlmaWNhdGlvbkJhZGdlT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBub3RpZmljYXRpb25CYWRnZU9wdGlvbnMoKTogU29ob05vdGlmaWNhdGlvbkJhZGdlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvbk9wdGlvbnMubm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IGFuIGV4dHJhIGNsYXNzIG9uIHRoZSBzb2hvLWljb24gYmVpbmcgdXNlZCBieSBzb2hvLWJ1dHRvbi5cbiAgICogVXNlZnVsIHRvIHNldCBlbWVyYWxkMDYtY29sb3IgYXp1cmUxMC1jb2xvciB0byBjaGFuZ2UgdGhlIGljb24gY29sb3IuXG4gICAqL1xuICBASW5wdXQoKSBleHRyYUljb25DbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGJ1dHRvbiBzaG91bGQgYmUgYSB0b2dnbGUgYnV0dG9uIG9yIG5vdC4gQWx0ZXJuYXRlIHRvZ2dsZSBvbi9vZmYgaWNvbnNcbiAgICogY2FuIGJlIHVzZWQgdGhyb3VnaCB0b2dnbGVPbkljb24vdG9nZ2xlT2ZmSWNvbiBpbnB1dHMuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXNUb2dnbGUoaXNUb2dnbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1RvZ2dsZSA9IGlzVG9nZ2xlO1xuICB9XG5cbiAgZ2V0IGlzVG9nZ2xlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1RvZ2dsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgYnV0dG9uIHNob3VsZCBiZSBpbiBhIHByZXNzZWQgc3RhdGUgb3Igbm90LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGlzVG9nZ2xlUHJlc3NlZChpc1RvZ2dsZVByZXNzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1RvZ2dsZVByZXNzZWQgPSBpc1RvZ2dsZVByZXNzZWQ7XG4gIH1cblxuICBnZXQgaXNUb2dnbGVQcmVzc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1RvZ2dsZVByZXNzZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGljb24gdG8gYmUgdXNlZFxuICAgKiAgLSBzaG93cyB3aGVuIHRoZSBzdGF0ZSBpcyB0cnVlIGlmIHRvZ2dsZSBoYXMgYSB2YWx1ZVxuICAgKi9cbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcblxuICAvKiogU2V0cyB0aGUgYnV0dG9uIHR5cGUgdG8gJ3N1Ym1pdCcgd2hlbiB0cnVlLiAqL1xuICBASW5wdXQoKSBpc1N1Ym1pdCA9IGZhbHNlO1xuXG4gIC8qKiBTZXRzIHdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBhIHJpcHBsZSBlZmZlY3Qgb24gY2xpY2suICovXG4gIEBJbnB1dCgpIHJpcHBsZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEJpbmFyeSBzdGF0ZSAodG9nZ2xlKTpcbiAgICogIDAgLSBzaG93cyB0b2dnbGVcbiAgICogIDEgLSBzaG93cyBpY29uIChkZWZhdWx0KVxuICAgKlxuICAgKiAgQGRlcHJlY2F0ZWQgdXNlIGlzVG9nZ2xlPXRydWUgaW5wdXQgaW5zdGVhZCBhbG9uZyB3aXRoIHRvZ2dsZU9uSWNvbi90b2dnbGVPZmZJY29uIG9wdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIHN0YXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gYmUgdXNlZCB3aGVuIHRoZSBzdGF0ZSBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGlzVG9nZ2xlPXRydWUgaW5wdXQgaW5zdGVhZCBhbG9uZyB3aXRoIHRvZ2dsZU9uSWNvbi90b2dnbGVPZmZJY29uIG9wdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIHRvZ2dsZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhwYW5kYWJsZS1leHBhbmRlciBjbGFzcyB0byBiZSBwbGFjZWQgb24gdGhlIGJ1dHRvbiBmb3IgdGhlXG4gICAqIHNvaG8tZXhwYW5kYWJsZWFyZWEgdG8gdXNlIGFzIGl0J3MgZXhwYW5kL2NvbGxhcHNlIHRyaWdnZXJcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpIGV4cGFuZGFibGVFeHBhbmRlciA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuJylcbiAgZ2V0IGJ0bigpIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LkJUTjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLXByaW1hcnknKVxuICBnZXQgYnRuUHJpbWFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LlBSSU1BUlk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi1zZWNvbmRhcnknKVxuICBnZXQgYnRuU2Vjb25kYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuU0VDT05EQVJZO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tdGVydGlhcnknKVxuICBnZXQgYnRuVGVydGlhcnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5URVJUSUFSWTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLWljb24nKVxuICBnZXQgYnRuSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LklDT04gfHwgdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LkZBVk9SSVRFO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tdG9nZ2xlJykgZ2V0IGJ0blRvZ2dsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLW1vZGFsJykgZ2V0IGJ0bk1vZGFsKCkge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuTU9EQUw7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi1tb2RhbC1wcmltYXJ5JykgZ2V0IGJ0bk1vZGFsUHJpbWFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50Lk1PREFMX1BSSU1BUlk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXByZXNzZWQnKSBnZXQgYnRuVG9nZ2xlUHJlc3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZVByZXNzZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmljb24tZmF2b3JpdGUnKSBnZXQgaWNvbkZhdm9yaXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuRkFWT1JJVEU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi1tb3ZldG8tbGVmdCcpIEBJbnB1dCgpIG1vdmVUb0xlZnQ6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tbW92ZXRvLXJpZ2h0JykgQElucHV0KCkgbW92ZVRvUmlnaHQ6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tbW92ZXRvLXNlbGVjdGVkJykgQElucHV0KCkgbW92ZVRvU2VsZWN0ZWQ6IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vLXJpcHBsZScpXG4gIGdldCBub1JpcHBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucmlwcGxlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKSBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1N1Ym1pdCA/ICdzdWJtaXQnIDogJ2J1dHRvbic7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGFibGUtZXhwYW5kZXInKSBnZXQgaXNFeHBhbmRhYmxlRXhwYW5kZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kYWJsZUV4cGFuZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIG5vIGxvbmdlciBuZWVkZWQgb25jZSB0aGlzLnRvZ2dsZSBpcyByZW1vdmVkLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSB0b2dnbGVTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy50b2dnbGUpIHsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHRoaXMuc3RhdGUgPSAhdGhpcy5zdGF0ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXByZXNzZWQnKSBnZXQgYXJpYVByZXNzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNUb2dnbGVQcmVzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiAtIHRoZSBlbGVtZW50IG1hdGNoaW5nIHRoZSBjb21wb25lbnQncyBzZWxlY3Rvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZSBFdmVudHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5GQVZPUklURSkge1xuICAgICAgaWYgKHRoaXMuaXNUb2dnbGUpIHtcbiAgICAgICAgdGhpcy50b2dnbGVPZmZJY29uID0gJ3N0YXItb3V0bGluZWQnO1xuICAgICAgICB0aGlzLnRvZ2dsZU9uSWNvbiA9ICdzdGFyLWZpbGxlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkZXByZWNhdGVkIGluIDQuMy4wIHNvaG94aVxuICAgICAgICB0aGlzLnRvZ2dsZSA9ICdzdGFyLW91dGxpbmVkJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICB0aGlzLmljb24gPSAnc3Rhci1maWxsZWQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgLy8gV3JhcCB0aGUgZWxlbWVudCBpbiBhIGpRdWVyeSBzZWxlY3Rvci5cbiAgICAgIHRoaXMualF1ZXJ5RWxlbWVudCA9IGpRdWVyeSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAvLyBJbml0aWFsaXNlIHRoZSBTb2hvIGNvbnRyb2wuXG4gICAgICB0aGlzLmpRdWVyeUVsZW1lbnQuYnV0dG9uKHRoaXMuX2J1dHRvbk9wdGlvbnMpO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHRpdGxlIGF0dHJpYnV0ZSBhcyBhIHNvaG8gdG9vbHRpcFxuICAgICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudC5oYXMoJ1t0aXRsZV0nKSAmJiAhdGhpcy5qUXVlcnlFbGVtZW50LmhhcygnW3BvcG92ZXJdJykpIHtcbiAgICAgICAgdGhpcy5qUXVlcnlFbGVtZW50LnRvb2x0aXAoKTtcbiAgICAgIH1cblxuICAgICAgLy8gT25jZSB0aGUgY29udHJvbCBpcyBpbml0aWFsaXNlZCwgZXh0cmFjdCB0aGUgY29udHJvbFxuICAgICAgLy8gcGx1Zy1pbiBmcm9tIHRoZSBlbGVtZW50LiAgVGhlIGVsZW1lbnQgbmFtZSBpcyBkZWZpbmVkXG4gICAgICAvLyBieSB0aGUgcGx1Zy1pbiwgYnV0IGluIHRoaXMgY2FzZSBpcyAnYnV0dG9uJy5cbiAgICAgIHRoaXMuYnV0dG9uID0gdGhpcy5qUXVlcnlFbGVtZW50LmRhdGEoJ2J1dHRvbicpO1xuXG4gICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gdW5kZWZpbmVkKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgLy8gdHVybiBvZmYgdGhlIGRlZmF1bHQgaGFuZGxpbmcgb2YgdGhlIGZhdm9yaXRlIGljb24gc3dpdGNoaW5nXG4gICAgICAgIC8vIGluIHRoZSBzb2hveGkgY29udHJvbHMgKGJ1dHRvbi5qcykuIFRoaXMgaXMgc28gdGhhdCBvbmx5IHRoaXNcbiAgICAgICAgLy8gYnV0dG9uLWNvbXBvbmVudCBoYW5kbGVzIHRoZSBzd2l0Y2hpbmcgb2YgdGhlIHRvZ2dsZSBpY29uIGZvclxuICAgICAgICAvLyBmYXZvcml0ZS5cbiAgICAgICAgaWYgKHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5GQVZPUklURSkge1xuICAgICAgICAgIHRoaXMualF1ZXJ5RWxlbWVudC5vZmYoJ2NsaWNrLmZhdm9yaXRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgaWYgYnV0dG9uIGlzIG5vdCB0b2dnbGVcbiAgICAgIGlmICghdGhpcy5pc1RvZ2dsZSkge1xuICAgICAgICBpZiAodGhpcy5qUXVlcnlFbGVtZW50LmF0dHIoJ2FyaWEtcHJlc3NlZCcpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQucmVtb3ZlQXR0cignYXJpYS1wcmVzc2VkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlcmUgYXJlIG5vICdleHRyYScgZXZlbnQgaGFuZGxlcnMgZm9yIGJ1dHRvbi5cblxuICAgICAgLy8gQWRkIG9ic2VydmVyIGZvciBidXR0b24gY2hhbmdlcyBpbiBodG1sXG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lID09PSAnc29oby1idXR0b24nICYmIHNlbGYualF1ZXJ5RWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGJ1dHRvblN0eWxlcyA9IFtcbiAgICAgICAgICAgICdidG4nLFxuICAgICAgICAgICAgJ2J0bi1wcmltYXJ5JyxcbiAgICAgICAgICAgICdidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICdidG4tdGVydGlhcnknLFxuICAgICAgICAgICAgJ2J0bi1pY29uJyxcbiAgICAgICAgICAgICdpY29uLWZhdm9yaXRlJyxcbiAgICAgICAgICAgICdkZWZhdWx0J1xuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcmVtb3ZlQ2xhc3NTdHlsZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VsZi5qUXVlcnlFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGJ1dHRvblN0eWxlcy5mb3JFYWNoKHN0eWxlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5qUXVlcnlFbGVtZW50Py5oYXNDbGFzcyhzdHlsZSkpIHtcbiAgICAgICAgICAgICAgICAgIHNlbGYualF1ZXJ5RWxlbWVudC5yZW1vdmVDbGFzcyhzdHlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0eXBlID0gc2VsZi5qUXVlcnlFbGVtZW50LmF0dHIoJ3NvaG8tYnV0dG9uJyk7XG4gICAgICAgICAgY29uc3QgYnV0dG9uT3B0aW9uczogU29ob0J1dHRvbk9wdGlvbnMgPSB7IHN0eWxlOiBzZWxmLl9idXR0b25PcHRpb25zLnN0eWxlLCB0eXBlOiBzZWxmLl9idXR0b25PcHRpb25zLnR5cGUgfTtcblxuICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYnRuJzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgc2VsZi5idXR0b25UeXBlID0gU29ob0J1dHRvbkNvbXBvbmVudC5CVE47XG4gICAgICAgICAgICAgIGJ1dHRvbk9wdGlvbnMuc3R5bGUgPSAnYnRuJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwcmltYXJ5JzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgc2VsZi5idXR0b25UeXBlID0gU29ob0J1dHRvbkNvbXBvbmVudC5QUklNQVJZO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnN0eWxlID0gJ2J0bi1wcmltYXJ5JztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZWNvbmRhcnknOlxuICAgICAgICAgICAgICByZW1vdmVDbGFzc1N0eWxlcygpO1xuICAgICAgICAgICAgICBzZWxmLmJ1dHRvblR5cGUgPSBTb2hvQnV0dG9uQ29tcG9uZW50LlNFQ09OREFSWTtcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy5zdHlsZSA9ICdidG4tc2Vjb25kYXJ5JztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXJ0aWFyeSc6XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzU3R5bGVzKCk7XG4gICAgICAgICAgICAgIHNlbGYuYnV0dG9uVHlwZSA9IFNvaG9CdXR0b25Db21wb25lbnQuVEVSVElBUlk7XG4gICAgICAgICAgICAgIGJ1dHRvbk9wdGlvbnMuc3R5bGUgPSAnYnRuLXRlcnRpYXJ5JztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgc2VsZi5idXR0b25UeXBlID0gU29ob0J1dHRvbkNvbXBvbmVudC5JQ09OO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnR5cGUgPSAnYnRuLWljb24nO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Zhdm9yaXRlJzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgc2VsZi5idXR0b25UeXBlID0gU29ob0J1dHRvbkNvbXBvbmVudC5GQVZPUklURTtcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy50eXBlID0gJ2ljb24tZmF2b3JpdGUnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHQnOlxuICAgICAgICAgICAgICByZW1vdmVDbGFzc1N0eWxlcygpO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnN0eWxlID0gJ2RlZmF1bHQnO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnR5cGUgPSAnZGVmYXVsdCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxmLnVwZGF0ZWQoYnV0dG9uT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc29oby1idXR0b24nXVxuICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cnVjdG9yLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudCkge1xuICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQub2ZmKCk7XG4gICAgICAgIHRoaXMualF1ZXJ5RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbi5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYnV0dG9uID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNJY29uKCkge1xuICAgIHJldHVybiAodGhpcy5pY29uIHx8ICh0aGlzLmJ1dHRvbk9wdGlvbnMudG9nZ2xlT25JY29uICYmIHRoaXMuYnV0dG9uT3B0aW9ucy50b2dnbGVPZmZJY29uKSk7XG4gIH1cblxuICBnZXQgY3VycmVudEljb24oKSB7XG4gICAgaWYgKHRoaXMuaXNUb2dnbGUgJiYgdGhpcy5idXR0b25PcHRpb25zLnRvZ2dsZU9uSWNvbiAmJiB0aGlzLmJ1dHRvbk9wdGlvbnMudG9nZ2xlT2ZmSWNvbikge1xuICAgICAgcmV0dXJuIHRoaXMuaXNUb2dnbGVQcmVzc2VkID8gdGhpcy5idXR0b25PcHRpb25zLnRvZ2dsZU9uSWNvbiA6IHRoaXMuYnV0dG9uT3B0aW9ucy50b2dnbGVPZmZJY29uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRvZ2dsZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZSA/IHRoaXMuaWNvbiA6IHRoaXMudG9nZ2xlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaWNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNUb2dnbGUgYW5kIGlzVG9nZ2xlUHJlc3NlZCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGlzUHJlc3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgcHJlc3NlZCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJyk7XG4gICAgICB0aGlzLl9pc1ByZXNzZWQgPSAocHJlc3NlZCA9PT0gdHJ1ZSB8fCBwcmVzc2VkID09PSAndHJ1ZScpO1xuICAgICAgcmV0dXJuIHRoaXMuX2lzUHJlc3NlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZWQoc2V0dGluZ3M/OiBTb2hvQnV0dG9uT3B0aW9ucykge1xuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgdGhpcy5fYnV0dG9uT3B0aW9ucyA9IFNvaG8udXRpbHMubWVyZ2VTZXR0aW5ncygodGhpcy5lbGVtZW50IGFzIGFueSlbMF0sIHNldHRpbmdzLCB0aGlzLl9idXR0b25PcHRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgICAgdGhpcy5idXR0b24udXBkYXRlZCh0aGlzLl9idXR0b25PcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPHNwYW4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbjxzdmcgc29oby1pY29uICpuZ0lmPVwiaGFzSWNvblwiIFtpY29uXT1cImN1cnJlbnRJY29uXCIgW2V4dHJhSWNvbkNsYXNzXT1cImV4dHJhSWNvbkNsYXNzXCI+PC9zdmc+XG48bmctY29udGVudCBzZWxlY3Q9XCJkaXYuZGlzYWJsZWQtdG9vbHRpcFwiPjwvbmctY29udGVudD5cbiJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29oby1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWRzLWVudGVycHJpc2Utbmcvc3JjL2xpYi9idXR0b24vc29oby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWRzLWVudGVycHJpc2Utbmcvc3JjL2xpYi9idXR0b24vc29oby1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBWTFELE1BQU0sT0FBTyxtQkFBbUI7SUEyUjlCOzs7O09BSUc7SUFDSCxZQUFvQixPQUFtQixFQUFVLE1BQWM7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFwUXZELG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixlQUFVLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFtSjNCLGtEQUFrRDtRQUN6QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCLG9FQUFvRTtRQUMzRCxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBa0J2Qjs7OztXQUlHO1FBQ00sdUJBQWtCLEdBQUcsS0FBSyxDQUFDO0lBbUZwQyxDQUFDO0lBL1BEOzs7O09BSUc7SUFDSCwyREFBMkQ7SUFDM0QsSUFBMEIsVUFBVSxDQUFDLElBQW9CO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFD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dGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFyZ3VtZW50SGVscGVyIH0gZnJvbSAnLi4vdXRpbHMvYXJndW1lbnQuaGVscGVyJztcblxuLyoqXG4gKiBTdXBwb3J0ZWQgYnV0dG9uIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBTb2hvQnV0dG9uVHlwZSA9ICdidG4nIHwgJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAndGVydGlhcnknIHwgJ2ljb24nIHwgJ2Zhdm9yaXRlJyB8ICdtb2RhbCcgfCAnbW9kYWwtcHJpbWFyeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2J1dHRvbltzb2hvLWJ1dHRvbl0nLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIHRlbXBsYXRlVXJsOiAnc29oby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTb2hvQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3VwcG9ydGVkIGJ1dHRvbiB0eXBlcy5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHN0YXRpYyBCVE46IFNvaG9CdXR0b25UeXBlID0gJ2J0bic7XG4gIHN0YXRpYyBQUklNQVJZOiBTb2hvQnV0dG9uVHlwZSA9ICdwcmltYXJ5JztcbiAgc3RhdGljIFNFQ09OREFSWTogU29ob0J1dHRvblR5cGUgPSAnc2Vjb25kYXJ5JztcbiAgc3RhdGljIFRFUlRJQVJZOiBTb2hvQnV0dG9uVHlwZSA9ICd0ZXJ0aWFyeSc7XG4gIHN0YXRpYyBJQ09OOiBTb2hvQnV0dG9uVHlwZSA9ICdpY29uJztcbiAgc3RhdGljIEZBVk9SSVRFOiBTb2hvQnV0dG9uVHlwZSA9ICdmYXZvcml0ZSc7XG4gIHN0YXRpYyBNT0RBTDogU29ob0J1dHRvblR5cGUgPSAnbW9kYWwnO1xuICBzdGF0aWMgTU9EQUxfUFJJTUFSWTogU29ob0J1dHRvblR5cGUgPSAnbW9kYWwtcHJpbWFyeSc7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQcml2YXRlIE1lbWJlciBEYXRhXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBqUXVlcnkgY29udHJvbC4gKi9cbiAgcHJpdmF0ZSBqUXVlcnlFbGVtZW50PzogSlF1ZXJ5O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIFNvaG8gY29udHJvbCBhcGkuICovXG4gIHByaXZhdGUgYnV0dG9uPzogU29ob0J1dHRvblN0YXRpYyB8IG51bGw7XG5cbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBidXR0b24uICovXG4gIHByaXZhdGUgYnV0dG9uVHlwZT86IFNvaG9CdXR0b25UeXBlO1xuXG4gIHByaXZhdGUgX2J1dHRvbk9wdGlvbnM6IFNvaG9CdXR0b25PcHRpb25zID0ge307XG4gIHByaXZhdGUgX2lzVG9nZ2xlID0gZmFsc2U7XG4gIHByaXZhdGUgX2lzVG9nZ2xlUHJlc3NlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pY29uQWxpZ24gPSAnc3RhcnQnO1xuICBwcml2YXRlIF9pc1ByZXNzZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGJ1dHRvbiwgZGVmYXVsdGluZyB0byAnc2Vjb25kYXJ5Jy5cbiAgICpcbiAgICogQWxsb3cgb3ZlcnJpZGUgb2YgaW5wdXQsIHRvIG1hdGNoIGNvbXBvbmVudCBzZWxlY3Rvci5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnc29oby1idXR0b24nKSBzZXQgc29ob0J1dHRvbih0eXBlOiBTb2hvQnV0dG9uVHlwZSkge1xuICAgIHRoaXMuYnV0dG9uVHlwZSA9IHR5cGUgPyB0eXBlIDogU29ob0J1dHRvbkNvbXBvbmVudC5TRUNPTkRBUlk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYnV0dG9uIG9wdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIHNldCBidXR0b25PcHRpb25zKGJ1dHRvbk9wdGlvbnM6IFNvaG9CdXR0b25PcHRpb25zKSB7XG4gICAgQXJndW1lbnRIZWxwZXIuY2hlY2tOb3ROdWxsKCdidXR0b25PcHRpb25zJywgYnV0dG9uT3B0aW9ucyk7XG5cbiAgICB0aGlzLl9idXR0b25PcHRpb25zID0gYnV0dG9uT3B0aW9ucztcbiAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgIC8vIHRvZG86IGhvdyB0byB1cGRhdGUgdGhlIGJ1dHRvbiB3aGVuIG9wdGlvbnMgY2hhbmdlP1xuICAgIH1cbiAgfVxuICBnZXQgYnV0dG9uT3B0aW9ucygpOiBTb2hvQnV0dG9uT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvbk9wdGlvbnM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgdG9nZ2xlT25JY29uKHRvZ2dsZU9uSWNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy50b2dnbGVPbkljb24gPSB0b2dnbGVPbkljb247XG4gICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudCkge1xuICAgICAgLy8gdG9kbzogaG93IHRvIHVwZGF0ZSB0aGUgYnV0dG9uIHdoZW4gdG9nZ2xlT25JY29uIGNoYW5nZXM/XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZ2dsZU9mZkljb24odG9nZ2xlT2ZmSWNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy50b2dnbGVPZmZJY29uID0gdG9nZ2xlT2ZmSWNvbjtcbiAgICBpZiAodGhpcy5qUXVlcnlFbGVtZW50KSB7XG4gICAgICAvLyB0b2RvOiBob3cgdG8gdXBkYXRlIHRoZSBidXR0b24gd2hlbiB0b2dnbGVPZmZJY29uIGNoYW5nZXM/XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlcGxhY2VUZXh0KHJlcGxhY2VUZXh0OiBib29sZWFuKSB7XG4gICAgdGhpcy5fYnV0dG9uT3B0aW9ucy5yZXBsYWNlVGV4dCA9IHJlcGxhY2VUZXh0O1xuICAgIGlmICh0aGlzLmpRdWVyeUVsZW1lbnQpIHtcbiAgICAgICgodGhpcy5idXR0b24gYXMgYW55KS5zZXR0aW5ncyBhcyBhbnkpLnJlcGxhY2VUZXh0ID0gcmVwbGFjZVRleHQ7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IGhpZGVNZW51QXJyb3codmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9idXR0b25PcHRpb25zLmhpZGVNZW51QXJyb3cgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgIHRoaXMuYnV0dG9uLnNldHRpbmdzLmhpZGVNZW51QXJyb3cgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGlkZU1lbnVBcnJvdygpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uT3B0aW9ucy5oaWRlTWVudUFycm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gYWRkIGEgYmlnZ2VyIGhpdCBhcmVhIChmb3IgbW9iaWxlKVxuICAgKi9cbiAgQElucHV0KCkgc2V0IGhpdGJveCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2J1dHRvbk9wdGlvbnMuaGl0Ym94ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICB0aGlzLmJ1dHRvbi5zZXR0aW5ncy5oaXRib3ggPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaGl0Ym94KCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9idXR0b25PcHRpb25zLmhpdGJveDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCBhIG5vdGlmaWNhdGlvbiBiYWRnZSBvbiB0aGUgYnV0dG9uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbm90aWZpY2F0aW9uQmFkZ2UodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9idXR0b25PcHRpb25zLm5vdGlmaWNhdGlvbkJhZGdlID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICB0aGlzLmJ1dHRvbi5zZXR0aW5ncy5ub3RpZmljYXRpb25CYWRnZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBub3RpZmljYXRpb25CYWRnZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uT3B0aW9ucy5ub3RpZmljYXRpb25CYWRnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBvc2l0aW9uIGFuZCBjb2xvciBvZiB0aGUgbm90aWZpY2F0aW9uIGJhZGdlIG9uIHRoZSBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHNldCBub3RpZmljYXRpb25CYWRnZU9wdGlvbnModmFsdWU6IFNvaG9Ob3RpZmljYXRpb25CYWRnZU9wdGlvbnMgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9idXR0b25PcHRpb25zLm5vdGlmaWNhdGlvbkJhZGdlT3B0aW9ucyA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgdGhpcy5idXR0b24uc2V0dGluZ3Mubm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG5vdGlmaWNhdGlvbkJhZGdlT3B0aW9ucygpOiBTb2hvTm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uT3B0aW9ucy5ub3RpZmljYXRpb25CYWRnZU9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgYW4gZXh0cmEgY2xhc3Mgb24gdGhlIHNvaG8taWNvbiBiZWluZyB1c2VkIGJ5IHNvaG8tYnV0dG9uLlxuICAgKiBVc2VmdWwgdG8gc2V0IGVtZXJhbGQwNi1jb2xvciBhenVyZTEwLWNvbG9yIHRvIGNoYW5nZSB0aGUgaWNvbiBjb2xvci5cbiAgICovXG4gIEBJbnB1dCgpIGV4dHJhSWNvbkNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgYnV0dG9uIHNob3VsZCBiZSBhIHRvZ2dsZSBidXR0b24gb3Igbm90LiBBbHRlcm5hdGUgdG9nZ2xlIG9uL29mZiBpY29uc1xuICAgKiBjYW4gYmUgdXNlZCB0aHJvdWdoIHRvZ2dsZU9uSWNvbi90b2dnbGVPZmZJY29uIGlucHV0cy5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBpc1RvZ2dsZShpc1RvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzVG9nZ2xlID0gaXNUb2dnbGU7XG4gIH1cblxuICBnZXQgaXNUb2dnbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRvZ2dsZSBidXR0b24gc2hvdWxkIGJlIGluIGEgcHJlc3NlZCBzdGF0ZSBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaXNUb2dnbGVQcmVzc2VkKGlzVG9nZ2xlUHJlc3NlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzVG9nZ2xlUHJlc3NlZCA9IGlzVG9nZ2xlUHJlc3NlZDtcbiAgfVxuXG4gIGdldCBpc1RvZ2dsZVByZXNzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlUHJlc3NlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBiZSB1c2VkXG4gICAqICAtIHNob3dzIHdoZW4gdGhlIHN0YXRlIGlzIHRydWUgaWYgdG9nZ2xlIGhhcyBhIHZhbHVlXG4gICAqL1xuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBwbGFjZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBpY29uQWxpZ24oaWNvbkFsaWduOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pY29uQWxpZ24gPSBpY29uQWxpZ247XG4gIH1cblxuICBnZXQgaWNvbkFsaWduKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb25BbGlnbjtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBidXR0b24gdHlwZSB0byAnc3VibWl0JyB3aGVuIHRydWUuICovXG4gIEBJbnB1dCgpIGlzU3VibWl0ID0gZmFsc2U7XG5cbiAgLyoqIFNldHMgd2hldGhlciB0aGUgYnV0dG9uIHNob3VsZCBoYXZlIGEgcmlwcGxlIGVmZmVjdCBvbiBjbGljay4gKi9cbiAgQElucHV0KCkgcmlwcGxlID0gdHJ1ZTtcblxuICAvKipcbiAgICogQmluYXJ5IHN0YXRlICh0b2dnbGUpOlxuICAgKiAgMCAtIHNob3dzIHRvZ2dsZVxuICAgKiAgMSAtIHNob3dzIGljb24gKGRlZmF1bHQpXG4gICAqXG4gICAqICBAZGVwcmVjYXRlZCB1c2UgaXNUb2dnbGU9dHJ1ZSBpbnB1dCBpbnN0ZWFkIGFsb25nIHdpdGggdG9nZ2xlT25JY29uL3RvZ2dsZU9mZkljb24gb3B0aW9uc1xuICAgKi9cbiAgQElucHV0KCkgc3RhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBiZSB1c2VkIHdoZW4gdGhlIHN0YXRlIGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaXNUb2dnbGU9dHJ1ZSBpbnB1dCBpbnN0ZWFkIGFsb25nIHdpdGggdG9nZ2xlT25JY29uL3RvZ2dsZU9mZkljb24gb3B0aW9uc1xuICAgKi9cbiAgQElucHV0KCkgdG9nZ2xlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBleHBhbmRhYmxlLWV4cGFuZGVyIGNsYXNzIHRvIGJlIHBsYWNlZCBvbiB0aGUgYnV0dG9uIGZvciB0aGVcbiAgICogc29oby1leHBhbmRhYmxlYXJlYSB0byB1c2UgYXMgaXQncyBleHBhbmQvY29sbGFwc2UgdHJpZ2dlclxuICAgKlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kYWJsZUV4cGFuZGVyID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4nKVxuICBnZXQgYnRuKCkge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuQlROO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tcHJpbWFyeScpXG4gIGdldCBidG5QcmltYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuUFJJTUFSWTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLXNlY29uZGFyeScpXG4gIGdldCBidG5TZWNvbmRhcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5TRUNPTkRBUlk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi10ZXJ0aWFyeScpXG4gIGdldCBidG5UZXJ0aWFyeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LlRFUlRJQVJZO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4taWNvbicpXG4gIGdldCBidG5JY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuSUNPTiB8fCB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuRkFWT1JJVEU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi10b2dnbGUnKSBnZXQgYnRuVG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tbW9kYWwnKSBnZXQgYnRuTW9kYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5NT0RBTDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLW1vZGFsLXByaW1hcnknKSBnZXQgYnRuTW9kYWxQcmltYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuTU9EQUxfUFJJTUFSWTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcHJlc3NlZCcpIGdldCBidG5Ub2dnbGVQcmVzc2VkKCkge1xuICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlUHJlc3NlZDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaWNvbi1mYXZvcml0ZScpIGdldCBpY29uRmF2b3JpdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uVHlwZSA9PT0gU29ob0J1dHRvbkNvbXBvbmVudC5GQVZPUklURTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLW1vdmV0by1sZWZ0JykgQElucHV0KCkgbW92ZVRvTGVmdDogYW55O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi1tb3ZldG8tcmlnaHQnKSBASW5wdXQoKSBtb3ZlVG9SaWdodDogYW55O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi1tb3ZldG8tc2VsZWN0ZWQnKSBASW5wdXQoKSBtb3ZlVG9TZWxlY3RlZDogYW55O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubm8tcmlwcGxlJylcbiAgZ2V0IG5vUmlwcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yaXBwbGU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmlzU3VibWl0ID8gJ3N1Ym1pdCcgOiAnYnV0dG9uJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXhwYW5kYWJsZS1leHBhbmRlcicpIGdldCBpc0V4cGFuZGFibGVFeHBhbmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRhYmxlRXhwYW5kZXI7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgbm8gbG9uZ2VyIG5lZWRlZCBvbmNlIHRoaXMudG9nZ2xlIGlzIHJlbW92ZWQuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpIHRvZ2dsZVN0YXRlKCkge1xuICAgIGlmICh0aGlzLnRvZ2dsZSkgeyAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgdGhpcy5zdGF0ZSA9ICF0aGlzLnN0YXRlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcHJlc3NlZCcpIGdldCBhcmlhUHJlc3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZVByZXNzZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIC0gdGhlIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIGNvbXBvbmVudCdzIHNlbGVjdG9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlIEV2ZW50c1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5idXR0b25UeXBlID09PSBTb2hvQnV0dG9uQ29tcG9uZW50LkZBVk9SSVRFKSB7XG4gICAgICBpZiAodGhpcy5pc1RvZ2dsZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU9mZkljb24gPSAnc3Rhci1vdXRsaW5lZCc7XG4gICAgICAgIHRoaXMudG9nZ2xlT25JY29uID0gJ3N0YXItZmlsbGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlcHJlY2F0ZWQgaW4gNC4zLjAgc29ob3hpXG4gICAgICAgIHRoaXMudG9nZ2xlID0gJ3N0YXItb3V0bGluZWQnOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIHRoaXMuaWNvbiA9ICdzdGFyLWZpbGxlZCc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvbkJhZGdlICYmIHRoaXMubm90aWZpY2F0aW9uQmFkZ2VPcHRpb25zPy5wb3NpdGlvbiA9PT0gJ3VwcGVyLXJpZ2h0Jykge1xuICAgICAgdGhpcy5pY29uQWxpZ24gPSAnZW5kJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIC8vIFdyYXAgdGhlIGVsZW1lbnQgaW4gYSBqUXVlcnkgc2VsZWN0b3IuXG4gICAgICB0aGlzLmpRdWVyeUVsZW1lbnQgPSBqUXVlcnkodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgLy8gSW5pdGlhbGlzZSB0aGUgU29obyBjb250cm9sLlxuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50LmJ1dHRvbih0aGlzLl9idXR0b25PcHRpb25zKTtcblxuICAgICAgLy8gSW5pdGlhbGl6ZSB0aXRsZSBhdHRyaWJ1dGUgYXMgYSBzb2hvIHRvb2x0aXBcbiAgICAgIGlmICh0aGlzLmpRdWVyeUVsZW1lbnQuaGFzKCdbdGl0bGVdJykgJiYgIXRoaXMualF1ZXJ5RWxlbWVudC5oYXMoJ1twb3BvdmVyXScpKSB7XG4gICAgICAgIHRoaXMualF1ZXJ5RWxlbWVudC50b29sdGlwKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIE9uY2UgdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGlzZWQsIGV4dHJhY3QgdGhlIGNvbnRyb2xcbiAgICAgIC8vIHBsdWctaW4gZnJvbSB0aGUgZWxlbWVudC4gIFRoZSBlbGVtZW50IG5hbWUgaXMgZGVmaW5lZFxuICAgICAgLy8gYnkgdGhlIHBsdWctaW4sIGJ1dCBpbiB0aGlzIGNhc2UgaXMgJ2J1dHRvbicuXG4gICAgICB0aGlzLmJ1dHRvbiA9IHRoaXMualF1ZXJ5RWxlbWVudC5kYXRhKCdidXR0b24nKTtcblxuICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IHVuZGVmaW5lZCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIC8vIHR1cm4gb2ZmIHRoZSBkZWZhdWx0IGhhbmRsaW5nIG9mIHRoZSBmYXZvcml0ZSBpY29uIHN3aXRjaGluZ1xuICAgICAgICAvLyBpbiB0aGUgc29ob3hpIGNvbnRyb2xzIChidXR0b24uanMpLiBUaGlzIGlzIHNvIHRoYXQgb25seSB0aGlzXG4gICAgICAgIC8vIGJ1dHRvbi1jb21wb25lbnQgaGFuZGxlcyB0aGUgc3dpdGNoaW5nIG9mIHRoZSB0b2dnbGUgaWNvbiBmb3JcbiAgICAgICAgLy8gZmF2b3JpdGUuXG4gICAgICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09IFNvaG9CdXR0b25Db21wb25lbnQuRkFWT1JJVEUpIHtcbiAgICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQub2ZmKCdjbGljay5mYXZvcml0ZScpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBhcmlhLXByZXNzZWQgYXR0cmlidXRlIGlmIGJ1dHRvbiBpcyBub3QgdG9nZ2xlXG4gICAgICBpZiAoIXRoaXMuaXNUb2dnbGUpIHtcbiAgICAgICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudC5hdHRyKCdhcmlhLXByZXNzZWQnKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5qUXVlcnlFbGVtZW50LnJlbW92ZUF0dHIoJ2FyaWEtcHJlc3NlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBubyAnZXh0cmEnIGV2ZW50IGhhbmRsZXJzIGZvciBidXR0b24uXG5cbiAgICAgIC8vIEFkZCBvYnNlcnZlciBmb3IgYnV0dG9uIGNoYW5nZXMgaW4gaHRtbFxuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgICAgIGlmIChtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSA9PT0gJ3NvaG8tYnV0dG9uJyAmJiBzZWxmLmpRdWVyeUVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBidXR0b25TdHlsZXMgPSBbXG4gICAgICAgICAgICAnYnRuJyxcbiAgICAgICAgICAgICdidG4tcHJpbWFyeScsXG4gICAgICAgICAgICAnYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAnYnRuLXRlcnRpYXJ5JyxcbiAgICAgICAgICAgICdidG4taWNvbicsXG4gICAgICAgICAgICAnaWNvbi1mYXZvcml0ZScsXG4gICAgICAgICAgICAnZGVmYXVsdCdcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHJlbW92ZUNsYXNzU3R5bGVzID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGYualF1ZXJ5RWxlbWVudCkge1xuICAgICAgICAgICAgICBidXR0b25TdHlsZXMuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYualF1ZXJ5RWxlbWVudD8uaGFzQ2xhc3Moc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICBzZWxmLmpRdWVyeUVsZW1lbnQucmVtb3ZlQ2xhc3Moc3R5bGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHlwZSA9IHNlbGYualF1ZXJ5RWxlbWVudC5hdHRyKCdzb2hvLWJ1dHRvbicpO1xuICAgICAgICAgIGNvbnN0IGJ1dHRvbk9wdGlvbnM6IFNvaG9CdXR0b25PcHRpb25zID0geyBzdHlsZTogc2VsZi5fYnV0dG9uT3B0aW9ucy5zdHlsZSwgdHlwZTogc2VsZi5fYnV0dG9uT3B0aW9ucy50eXBlIH07XG5cbiAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2J0bic6XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzU3R5bGVzKCk7XG4gICAgICAgICAgICAgIHNlbGYuYnV0dG9uVHlwZSA9IFNvaG9CdXR0b25Db21wb25lbnQuQlROO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnN0eWxlID0gJ2J0bic7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJpbWFyeSc6XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzU3R5bGVzKCk7XG4gICAgICAgICAgICAgIHNlbGYuYnV0dG9uVHlwZSA9IFNvaG9CdXR0b25Db21wb25lbnQuUFJJTUFSWTtcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy5zdHlsZSA9ICdidG4tcHJpbWFyeSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5JzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgc2VsZi5idXR0b25UeXBlID0gU29ob0J1dHRvbkNvbXBvbmVudC5TRUNPTkRBUlk7XG4gICAgICAgICAgICAgIGJ1dHRvbk9wdGlvbnMuc3R5bGUgPSAnYnRuLXNlY29uZGFyeSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGVydGlhcnknOlxuICAgICAgICAgICAgICByZW1vdmVDbGFzc1N0eWxlcygpO1xuICAgICAgICAgICAgICBzZWxmLmJ1dHRvblR5cGUgPSBTb2hvQnV0dG9uQ29tcG9uZW50LlRFUlRJQVJZO1xuICAgICAgICAgICAgICBidXR0b25PcHRpb25zLnN0eWxlID0gJ2J0bi10ZXJ0aWFyeSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaWNvbic6XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzU3R5bGVzKCk7XG4gICAgICAgICAgICAgIHNlbGYuYnV0dG9uVHlwZSA9IFNvaG9CdXR0b25Db21wb25lbnQuSUNPTjtcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy50eXBlID0gJ2J0bi1pY29uJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmYXZvcml0ZSc6XG4gICAgICAgICAgICAgIHJlbW92ZUNsYXNzU3R5bGVzKCk7XG4gICAgICAgICAgICAgIHNlbGYuYnV0dG9uVHlwZSA9IFNvaG9CdXR0b25Db21wb25lbnQuRkFWT1JJVEU7XG4gICAgICAgICAgICAgIGJ1dHRvbk9wdGlvbnMudHlwZSA9ICdpY29uLWZhdm9yaXRlJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3NTdHlsZXMoKTtcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy5zdHlsZSA9ICdkZWZhdWx0JztcbiAgICAgICAgICAgICAgYnV0dG9uT3B0aW9ucy50eXBlID0gJ2RlZmF1bHQnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VsZi51cGRhdGVkKGJ1dHRvbk9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NvaG8tYnV0dG9uJ11cbiAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJ1Y3Rvci5cbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmpRdWVyeUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5qUXVlcnlFbGVtZW50Lm9mZigpO1xuICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgICAgdGhpcy5idXR0b24uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmJ1dHRvbiA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGFzSWNvbigpIHtcbiAgICByZXR1cm4gKHRoaXMuaWNvbiB8fCAodGhpcy5idXR0b25PcHRpb25zLnRvZ2dsZU9uSWNvbiAmJiB0aGlzLmJ1dHRvbk9wdGlvbnMudG9nZ2xlT2ZmSWNvbikpICYmICh0aGlzLmljb25BbGlnbiAhPT0gJ2VuZCcpO1xuICB9XG5cbiAgZ2V0IGhhc0ljb25FbmQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmljb24gfHwgKHRoaXMuYnV0dG9uT3B0aW9ucy50b2dnbGVPbkljb24gJiYgdGhpcy5idXR0b25PcHRpb25zLnRvZ2dsZU9mZkljb24pKSAmJiAodGhpcy5pY29uQWxpZ24gPT09ICdlbmQnKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50SWNvbigpIHtcbiAgICBpZiAodGhpcy5pc1RvZ2dsZSAmJiB0aGlzLmJ1dHRvbk9wdGlvbnMudG9nZ2xlT25JY29uICYmIHRoaXMuYnV0dG9uT3B0aW9ucy50b2dnbGVPZmZJY29uKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZVByZXNzZWQgPyB0aGlzLmJ1dHRvbk9wdGlvbnMudG9nZ2xlT25JY29uIDogdGhpcy5idXR0b25PcHRpb25zLnRvZ2dsZU9mZkljb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9nZ2xlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlID8gdGhpcy5pY29uIDogdGhpcy50b2dnbGU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBpc1RvZ2dsZSBhbmQgaXNUb2dnbGVQcmVzc2VkIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgaXNQcmVzc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBwcmVzc2VkID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnKTtcbiAgICAgIHRoaXMuX2lzUHJlc3NlZCA9IChwcmVzc2VkID09PSB0cnVlIHx8IHByZXNzZWQgPT09ICd0cnVlJyk7XG4gICAgICByZXR1cm4gdGhpcy5faXNQcmVzc2VkO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlZChzZXR0aW5ncz86IFNvaG9CdXR0b25PcHRpb25zKSB7XG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICB0aGlzLl9idXR0b25PcHRpb25zID0gU29oby51dGlscy5tZXJnZVNldHRpbmdzKCh0aGlzLmVsZW1lbnQgYXMgYW55KVswXSwgc2V0dGluZ3MsIHRoaXMuX2J1dHRvbk9wdGlvbnMpO1xuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbi51cGRhdGVkKHRoaXMuX2J1dHRvbk9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8c3ZnIHNvaG8taWNvbiAqbmdJZj1cImhhc0ljb25cIiBbaWNvbl09XCJjdXJyZW50SWNvblwiIFtleHRyYUljb25DbGFzc109XCJleHRyYUljb25DbGFzc1wiPjwvc3ZnPlxuPHNwYW4+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjxzdmcgc29oby1pY29uICpuZ0lmPVwiaGFzSWNvbkVuZFwiIFtpY29uXT1cImN1cnJlbnRJY29uXCIgW2V4dHJhSWNvbkNsYXNzXT1cImV4dHJhSWNvbkNsYXNzXCI+PC9zdmc+XG48bmctY29udGVudCBzZWxlY3Q9XCJkaXYuZGlzYWJsZWQtdG9vbHRpcFwiPjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -412,7 +412,7 @@ export class SohoDatePickerComponent extends BaseControlValueAccessor {
|
|
|
412
412
|
});
|
|
413
413
|
}
|
|
414
414
|
ngAfterViewChecked() {
|
|
415
|
-
if (this.updateLegend && this.datepicker) {
|
|
415
|
+
if (this.updateLegend && this.datepicker?.isOpen()) {
|
|
416
416
|
this.datepicker.loadLegend(this._options.legend);
|
|
417
417
|
this.updateLegend = false;
|
|
418
418
|
}
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImpor
|
|
|
608
608
|
type: HostBinding,
|
|
609
609
|
args: ['class.timepicker']
|
|
610
610
|
}] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29oby1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lkcy1lbnRlcnByaXNlLW5nL3NyYy9saWIvZGF0ZXBpY2tlci9zb2hvLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUM1QixNQUFNLHNDQUFzQyxDQUFDOztBQVE5QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsd0JBQXVFO0lBb2JsSDs7Ozs7O09BTUc7SUFDSCxZQUFvQixPQUFtQixFQUM3QixNQUFjLEVBQ2YsR0FBc0I7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQS9hdkIsZUFBVSxHQUFhLFNBQVMsQ0FBQztRQUVqQyxlQUFVLEdBQWEsU0FBUyxDQUFDO1FBRWpDLGFBQVEsR0FBMEIsRUFBRSxDQUFDO1FBRXJDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBd1Z0Qzs7OztXQUlHO1FBQ0gsOEZBQThGO1FBQ3BGLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUzRDs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDTyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5EOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztJ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Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFZTyxNQUFNO3NCQUFsQixLQUFLO2dCQVVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBY08sUUFBUTtzQkFBcEIsS0FBSztnQkFnQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFpQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTTtnQkF1QzhCLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUdNLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBOZ1pvbmUsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIHByb3ZpZGVDb250cm9sVmFsdWVBY2Nlc3NvclxufSBmcm9tICcuLi91dGlscy9iYXNlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtzb2hvLWRhdGVwaWNrZXJdJywgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUNvbnRyb2xWYWx1ZUFjY2Vzc29yKFNvaG9EYXRlUGlja2VyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgU29ob0RhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3I8c3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBEYXRlIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBjb250cm9sIGFmdGVyIHRoZSB2aWV3IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHJ1blVwZGF0ZWRPbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTG9jYWwgdmFyaWFibGVzXG4gICAqL1xuICBwcml2YXRlIGpRdWVyeUVsZW1lbnQ/OiBKUXVlcnk7XG5cbiAgcHJpdmF0ZSBkYXRlcGlja2VyPzogU29ob0RhdGVQaWNrZXJTdGF0aWMgfCBudWxsO1xuXG4gIHByaXZhdGUgaXNEaXNhYmxlZD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpc1JlYWRPbmx5PzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9vcHRpb25zOiBTb2hvRGF0ZVBpY2tlck9wdGlvbnMgPSB7fTtcblxuICBwcml2YXRlIHVwZGF0ZUxlZ2VuZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdG8gZGlzcGxheSB0aGUgdGltZXBpY2tlcjsgZGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd1RpbWUoc2hvd1RpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnNob3dUaW1lID0gc2hvd1RpbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0cnVlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQgZm9yIHRoZSB0aW1lIHBvcnRpb24gb3RoZXJ3aXNlIDEyOjAwIG1pZG5pZ2h0IGlzIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdXNlQ3VycmVudFRpbWUodXNlQ3VycmVudFRpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnVzZUN1cnJlbnRUaW1lID0gdXNlQ3VycmVudFRpbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBhdHRlcm4gZm9yIHRoZSB0aW1lIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIHNldCB0aW1lRm9ybWF0KHRpbWVGb3JtYXQ6IHN0cmluZykge1xuICAgIHRoaXMuX29wdGlvbnMudGltZUZvcm1hdCA9IHRpbWVGb3JtYXQ7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbnRlZ2VyIGZyb20gMSB0byA2MDsgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUgYXJlIGRpc3BsYXllZCBhcyBvcHRpb25zIGluIHRoZSBtaW51dGVzIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1pbnV0ZUludGVydmFsKG1pbnV0ZUludGVydmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcHRpb25zLm1pbnV0ZUludGVydmFsID0gbWludXRlSW50ZXJ2YWw7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbnRlZ2VyIGZyb20gMSB0byA2MDsgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUgYXJlIGRpc3BsYXllZCBhcyBvcHRpb25zIGluIHRoZSBzZWNvbmRzIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHNlY29uZEludGVydmFsKHNlY29uZEludGVydmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcHRpb25zLnNlY29uZEludGVydmFsID0gc2Vjb25kSW50ZXJ2YWw7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGRhdGVwaWNrZXJzIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICogQW4gaW50ZWdlciBmcm9tIDAgLSA2IHdoZXJlIDAgPSBTdW5kYXksIDEgPSBNb25kYXksIGV0Yy4uLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGZpcnN0RGF5T2ZXZWVrKGZpcnN0RGF5T2ZXZWVrOiBTb2hvRGF0ZVBpY2tlckRheU9mV2Vlaykge1xuICAgIHRoaXMuX29wdGlvbnMuZmlyc3REYXlPZldlZWsgPSBmaXJzdERheU9mV2VlaztcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlIGZpZWxkIHdpbGwgYmUgc2l6ZWQgdG8gdGhlIHdpZHRoIG9mIHRoZSBkYXRlLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGF1dG9TaXplKGF1dG9TaXplOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5hdXRvU2l6ZSA9IGF1dG9TaXplO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB0aGUgdG9kYXkgYnV0dG9uIG9uIHRoZSBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd1RvZGF5KHNob3dUb2RheTogYm9vbGVhbikge1xuICAgIHRoaXMuX29wdGlvbnMuc2hvd1RvZGF5ID0gc2hvd1RvZGF5O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKiogQWRkIGV4dHJhIGF0dHJpYnV0ZXMgbGlrZSBpZCdzIHRvIHRoZSBjb21wb25lbnQgKiovXG4gIEBJbnB1dCgpIHNldCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEFycmF5PE9iamVjdD4gfCBPYmplY3QpIHtcbiAgICB0aGlzLl9vcHRpb25zLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIG1vZGUsIGVpdGhlciAnc3RhbmRhcmQnIG9yICdyYW5nZScuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbW9kZShtb2RlOiBTb2hvRGF0ZVBpY2tlck1vZGUpIHtcbiAgICB0aGlzLl9vcHRpb25zLm1vZGUgPSBtb2RlO1xuXG4gICAgaWYgKG1vZGUgPT09ICdyYW5nZScpIHtcbiAgICAgIGlmICh0aGlzLl9vcHRpb25zLnJhbmdlKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMucmFuZ2UudXNlUmFuZ2UgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5yYW5nZSA9IHt9O1xuICAgICAgICB0aGlzLl9vcHRpb25zLnJhbmdlLnVzZVJhbmdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuX29wdGlvbnMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5yYW5nZS51c2VSYW5nZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSByYW5nZSBvZiB0d28gZGF0ZXMgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIHNldCByYW5nZShyYW5nZTogU29ob0RhdGVQaWNrZXJSYW5nZSkge1xuICAgIHRoaXMuX29wdGlvbnMucmFuZ2UgPSByYW5nZTtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgYSBub24tbWF0Y2hpbmcgbWludXRlcyB2YWx1ZSBpcyBlbnRlcmVkLCB3aWxsIHJvdW5kIHRoZSBtaW51dGVzIHZhbHVlIHRvIHRoZSBuZWFyZXN0IGludGVydmFsIG9uIHRoZSBibHVyIGV2ZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHJvdW5kVG9JbnRlcnZhbChyb3VuZFRvSW50ZXJ2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnJvdW5kVG9JbnRlcnZhbCA9IHJvdW5kVG9JbnRlcnZhbDtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwYXR0ZXJuIGZvciB0aGUgZGF0ZSBmb3JtYXQgb3IgdGhlIHZhbHVlIG9mICdsb2NhbGUnLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRhdGVGb3JtYXQoZGF0ZUZvcm1hdDogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5kYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBhIHBsYWNlaG9sZGVyIGZvciBhbiBlbXB0eSB2YWx1ZTsgZGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuX29wdGlvbnMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBhbiBvYmplY3QgY29udGFpbmluZyBhIGRhdGUgb3IgcmFuZ2Ugb2YgZGF0ZXMgdGhhdCBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlKGRpc2FibGU6IGFueSkge1xuICAgIHRoaXMuX29wdGlvbnMuZGlzYWJsZSA9IGRpc2FibGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgYSBsZWdlbmQgaXMgc2hvd24gdG8gYXNzb2NpYXRlIGRhdGVzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd0xlZ2VuZChzaG93TGVnZW5kOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5zaG93TGVnZW5kID0gc2hvd0xlZ2VuZDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbW9udGggYW5kIHllYXIgd2lsbCByZW5kZXIgYXMgZHJvcGRvd25zLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHNob3dNb250aFllYXJQaWNrZXIoc2hvd01vbnRoWWVhclBpY2tlcjogYm9vbGVhbikge1xuICAgIHRoaXMuX29wdGlvbnMuc2hvd01vbnRoWWVhclBpY2tlciA9IHNob3dNb250aFllYXJQaWNrZXI7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGRheXMgcG9ydGlvbiBvZiB0aGUgY2FsZW5kYXIgd2lsbCBiZSBoaWRkZW4uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaGlkZURheXMoaGlkZURheXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLmhpZGVEYXlzID0gaGlkZURheXM7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHllYXJzIGFoZWFkIHRvIHNob3cgaW4gdGhlIG1vbnRoL3llYXIgcGlja2VyIHNob3VsZCB0b3RhbCA5IHdpdGggeWVhcnNCYWNrLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHllYXJzQWhlYWQoeWVhcnNBaGVhZDogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3B0aW9ucy55ZWFyc0FoZWFkID0geWVhcnNBaGVhZDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgeWVhcnMgYmFjayB0byBzaG93IGluIHRoZSBtb250aC95ZWFyIHBpY2tlciBzaG91bGQgdG90YWwgOSB3aXRoIHllYXJzQWhlYWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgeWVhcnNCYWNrKHllYXJzQmFjazogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3B0aW9ucy55ZWFyc0JhY2sgPSB5ZWFyc0JhY2s7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBob3cgdGhlIGxlZ2VuZCBkaXNwbGF5c1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGxlZ2VuZChsZWdlbmQ6IEFycmF5PFNvaG9EYXRlUGlja2VyTGVnZW5kPikge1xuICAgIHRoaXMuX29wdGlvbnMubGVnZW5kID0gbGVnZW5kO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgICh0aGlzLmRhdGVwaWNrZXIgYXMgYW55KS5zZXR0aW5ncy5sZWdlbmQgPSBsZWdlbmQ7XG4gICAgICB0aGlzLnVwZGF0ZUxlZ2VuZCA9IHRydWU7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsZSB0byB1c2UgZm9yIHRoaXMgaW5zdGFuY2UuIElmIG5vdCBzZXQsIHRoZSBjdXJyZW50IGxvY2FsZSB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxlbmRhcidzIG5hbWUuIEN1cnJlbnRseSBqdXN0ICdncmVnb3JpYW4nIG9yICdpc2xhbWljLXVtYWxxdXJhJ1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGNhbGVuZGFyTmFtZShjYWxlbmRhck5hbWU6IFNvaG9EYXRlUGlja2VyQ2FsZW5kYXJOYW1lKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5jYWxlbmRhck5hbWUgPSBjYWxlbmRhck5hbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGRhdGVzIHdpbGwgdXNlIFVUQyBmb3JtYXRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB1c2VVVEModXNlVVRDOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy51c2VVVEMgPSB1c2VVVEM7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGlucHV0IHRvIHRhYmJhYmxlXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdGFiYmFibGUodGFiYmFibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnRhYmJhYmxlID0gdGFiYmFibGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcHRpb25zIGZvciB0aGUgZGF0ZSBwaWNrZXJcbiAgICovXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IFNvaG9EYXRlUGlja2VyT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBTb2hvRGF0ZVBpY2tlck9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGNvbnRyb2xcbiAgICovXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIHZhbHVlIGlmIG5vdCByZXF1aXJlZCxcbiAgICAvLyB0aGlzIGNhdXNlcyBpc3N1ZSBvbiBjb21wb25lbnQgaW5pdGlhbGlzYXRpb25cbiAgICAvLyBhcyBlbmFibGUoKSBpcyBjYWxsZWQgYnkgYm90aCBkaXNhYmxlZCgpXG4gICAgLy8gYW5kIHJlYWRvbmx5KCkuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlciA9PSBudWxsKSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHN0YXR1cyBsb2NhbGx5IChmb3IgcmVmcmVzaGluZylcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXI/LmRpc2FibGUoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNSZWFkT25seSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJvbCB0byByZWFkb25seVxuICAgKi9cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgdmFsdWUgaWYgbm90IHJlcXVpcmVkLFxuICAgIC8vIHRoaXMgY2F1c2VzIGlzc3VlIG9uIGNvbXBvbmVudCBpbml0aWFsaXNhdGlvblxuICAgIC8vIGFzIGVuYWJsZSgpIGlzIGNhbGxlZCBieSBib3RoIGRpc2FibGVkKClcbiAgICAvLyBhbmQgcmVhZG9ubHkoKS5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyID09IG51bGwpIHtcbiAgICAgIHRoaXMuaXNSZWFkT25seSA9IHZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgc3RhdHVzIGxvY2FsbHkgKGZvciByZWZyZXNoaW5nKVxuICAgIHRoaXMuaXNSZWFkT25seSA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmRhdGVwaWNrZXI/LnJlYWRvbmx5KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzUmVhZE9ubHk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRhdGVwaWNrZXIgdmFsdWUgY2hhbmdlc1xuICAgKlxuICAgKiBAdG9kbyByZXBsYWNlIG92ZXJyaWRlIG9mIG5hdGl2ZSBhdHRyaWJ1dGVcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZSwgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ob0RhdGVQaWNrZXJFdmVudD4oKTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGxpc3RjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBkYXRlcGlja2VyIGlzIG9wZW5lZC5cbiAgICovXG4gIEBPdXRwdXQoKSBsaXN0b3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGEgbW9udGggd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgZGF0ZXBpY2tlclxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZW1vbnRocmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBhIG1vbnRoIGhhcyBiZWVuIHJlbmRlcmVkIGluIHRoZSBkYXRlcGlja2VyXG4gICAqL1xuICBAT3V0cHV0KCkgbW9udGhyZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ob0RhdGVQaWNrZXJNb250aFJlbmRlcmVkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBBUElcbiAgICovXG5cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nW10sIHRyaWdnZXI6IGJvb2xlYW4sIGlzVGltZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2V0VmFsdWUodmFsdWUsIHRyaWdnZXIsIGlzVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUoYXNEYXRlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nW10ge1xuICAgIGlmIChhc0RhdGUgJiYgKHR5cGVvZiB0aGlzLmludGVybmFsVmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgY29uc3QgY2FsZW5kYXIgPSBTb2hvLkxvY2FsZS5jYWxlbmRhcigpO1xuICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRoaXMuX29wdGlvbnMuZGF0ZUZvcm1hdCB8fCBjYWxlbmRhci5kYXRlRm9ybWF0LnNob3J0O1xuICAgICAgY29uc3QgdGltZUZvcm1hdCA9IHRoaXMuX29wdGlvbnMudGltZUZvcm1hdCB8fCBjYWxlbmRhci50aW1lRm9ybWF0O1xuICAgICAgbGV0IGZvcm1hdCA9IGRhdGVGb3JtYXQ7XG4gICAgICBpZiAodGhpcy5fb3B0aW9ucy5zaG93VGltZSkge1xuICAgICAgICBmb3JtYXQgKz0gJ1QnICsgdGltZUZvcm1hdDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFNvaG8uTG9jYWxlLnBhcnNlRGF0ZSh0aGlzLmludGVybmFsVmFsdWUgfHwgJycsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxWYWx1ZSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZWxlbWVudC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyPy5vcGVuQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGF0dHJpYnV0ZXMgdG8gdGhlIGhvc3QgaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRlcGlja2VyJykgZ2V0IGlzRGF0ZXBpY2tlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRpbWVwaWNrZXInKSBnZXQgaXNUaW1lcGlja2VyKCkge1xuICAgIHJldHVybiAhIXRoaXMuX29wdGlvbnMuc2hvd1RpbWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBTb2hvRGF0ZVBpY2tlckNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdGhpcyBjb21wb25lbnQgZW5jYXBzdWxhdGVzLlxuICAgKiBAcGFyYW0gbmdab25lIHRoZSBhbmd1bGFyIHpvbmUgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcmVmIHJlZmVyZW5jZSB0byB0aGUgY2hhbmdlIGRldGVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgICAvLyBjYWxsIG91dHNpZGUgdGhlIGFuZ3VsYXIgem9uZSBzbyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgLy8gaXNuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBzb2hvIGNvbXBvbmVudC5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBhc3NpZ24gZWxlbWVudCB0byBsb2NhbCB2YXJpYWJsZVxuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50ID0galF1ZXJ5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSB0aGUgY29sb3JwaWNrZXIgY29udHJvbFxuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50LmRhdGVwaWNrZXIodGhpcy5fb3B0aW9ucyk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGFwaVxuICAgICAgdGhpcy5kYXRlcGlja2VyID0gdGhpcy5qUXVlcnlFbGVtZW50LmRhdGEoJ2RhdGVwaWNrZXInKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBCaW5kIHRvIGpRdWVyeUVsZW1lbnQncyBldmVudHNcbiAgICAgICAqL1xuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50XG4gICAgICAgIC5vbignY2hhbmdlJywgKGFyZ3M6IGFueSkgPT4gdGhpcy5vbkNoYW5nZShhcmdzKSlcbiAgICAgICAgLm9uKCdsaXN0Y2xvc2VkJywgKCkgPT4gdGhpcy5vbkxpc3RDbG9zZWQoKSlcbiAgICAgICAgLm9uKCdsaXN0b3BlbmVkJywgKCkgPT4gdGhpcy5vbkxpc3RPcGVuZWQoKSlcbiAgICAgICAgLm9uKCdiZWZvcmVtb250aHJlbmRlcmVkJywgKCkgPT4gdGhpcy5vbkJlZm9yZU1vbnRoUmVuZGVyZWQoKSlcbiAgICAgICAgLm9uKCdtb250aHJlbmRlcmVkJywgKGUsIGFyZ3MpID0+IHRoaXMub25Nb250aFJlbmRlcmVkKGFyZ3MpKVxuXG4gICAgICBpZiAodGhpcy5pbnRlcm5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2V0VmFsdWUodGhpcy5pbnRlcm5hbFZhbHVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJ1blVwZGF0ZWRPbkNoZWNrID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcblxuICAgIGlmICh0aGlzLnVwZGF0ZUxlZ2VuZCAmJiB0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5sb2FkTGVnZW5kKHRoaXMuX29wdGlvbnMubGVnZW5kKTtcbiAgICAgIHRoaXMudXBkYXRlTGVnZW5kID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucnVuVXBkYXRlZE9uQ2hlY2spIHtcbiAgICAgIC8vIEVuc3VyZSB0aGUgZW5hYmxlZC9kaXNhYmxlZCBmbGFncyBhcmUgc2V0LlxuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZCAhPT0gbnVsbCAmJiB0aGlzLmlzRGlzYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5pc0Rpc2FibGVkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNSZWFkT25seSAhPT0gbnVsbCAmJiB0aGlzLmlzUmVhZE9ubHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5pc1JlYWRPbmx5O1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBjb250cm9sIEFGVEVSIHRoZSBtb2RlbFxuICAgICAgICAvLyBoYXMgYmVlbiB1cGRhdGVkIChhc3N1bWluZyB0aGVyZSBpcyBvbmUpLCBzb1xuICAgICAgICAvLyBleGVjdXRlIHVwZGF0ZWQgYWZ0ZXIgYW5ndWxhciBoYXMgZ2VuZXJhdGVkXG4gICAgICAgIC8vIHRoZSBtb2RlbCBhbmQgdGhlIHZpZXcgbWFya3VwLlxuICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyLnVwZGF0ZWQodGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5VcGRhdGVkT25DaGVjayA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgY29udHJvbCBiZWluZyBjaGFuZ2VkLlxuICAgKi9cbiAgb25DaGFuZ2UoZXZlbnQ6IFNvaG9EYXRlUGlja2VyRXZlbnQpIHtcbiAgICB0aGlzLmludGVybmFsVmFsdWUgPSB0aGlzLmRhdGVwaWNrZXI/LmVsZW1lbnQudmFsKCk7XG5cbiAgICAvLyBTZXQgdGhlIGRhdGUgb24gdGhlIGV2ZW50LlxuICAgIGV2ZW50LmRhdGEgPSB0aGlzLmludGVybmFsVmFsdWU7XG5cbiAgICAvLyBXaGVuIHRoZSByZXF1ZXN0IGZvciBkYXRhIGhhcyBjb21wbGV0ZWQsIG1ha2Ugc3VyZSB3ZVxuICAgIC8vIHVwZGF0ZSB0aGUgJ2Ryb3Bkb3duJyBjb250cm9sLlxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAvLyBGaXJlIHRoZSBldmVudFxuICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgd3JpdGVWYWx1ZSB0byBhbGxvdyB0aGUgZGF0ZSBwaWNrZXJcbiAgICogZWxlbWVudCB0byBiZSB1cGRhdGVkIGNvcnJlY3RseS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gdGhlIG5ldyB2YWx1ZVxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdKSB7XG4gICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgLy8gVGhlIHByb2Nlc3NpbmcgaXMgcmVxdWlyZWQgdG8gZW5zdXJlIHdlIHVzZSB0aGUgY29ycmVjdCBmb3JtYXRcbiAgICAgIC8vIGluIHRoZSBjb250cm9sLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5fb3B0aW9ucy5yYW5nZT8udXNlUmFuZ2UpIHtcbiAgICAgICAgY29uc3QgZGF0ZXMgPSB2YWx1ZS5zcGxpdCgnLScpO1xuICAgICAgICBjb25zdCBzdGFydFZhbHVlID0gU29oby5Mb2NhbGUucGFyc2VEYXRlKGRhdGVzWzBdLnRyaW0oKSkgfHwgU29oby5Mb2NhbGUucGFyc2VEYXRlKGRhdGVzWzBdLnRyaW0oKSwgeyBwYXR0ZXJuOiB0aGlzLl9vcHRpb25zPy5kYXRlRm9ybWF0IH0pO1xuICAgICAgICBjb25zdCBlbmRWYWx1ZSA9IFNvaG8uTG9jYWxlLnBhcnNlRGF0ZShkYXRlc1sxXS50cmltKCkpIHx8IFNvaG8uTG9jYWxlLnBhcnNlRGF0ZShkYXRlc1sxXS50cmltKCksIHsgcGF0dGVybjogdGhpcy5fb3B0aW9ucz8uZGF0ZUZvcm1hdCB9KTtcblxuICAgICAgICAodGhpcy5kYXRlcGlja2VyIGFzIGFueSkuc2V0dGluZ3MucmFuZ2Uuc3RhcnQgPSBzdGFydFZhbHVlO1xuICAgICAgICAodGhpcy5kYXRlcGlja2VyIGFzIGFueSkuc2V0dGluZ3MucmFuZ2UuZW5kID0gZW5kVmFsdWU7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRWYWx1ZShzdGFydFZhbHVlLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuc2V0VmFsdWUodmFsdWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCBzdGF0dXMgY2hhbmdlcyB0byBvciBmcm9tIFwiRElTQUJMRURcIi5cbiAgICogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSwgaXQgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYXBwcm9wcmlhdGUgRE9NIGVsZW1lbnQuXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblxuICAgICAgaWYgKHRoaXMualF1ZXJ5RWxlbWVudCkge1xuICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQub2ZmKCk7XG4gICAgICAgIHRoaXMualF1ZXJ5RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtzIHRoZSBjb21wb25lbnRzIGFzIHJlcXVpcmluZyBhIHJlYnVpbGQgYWZ0ZXIgdGhlIG5leHQgdXBkYXRlLlxuICAgKi9cbiAgbWFya0ZvclJlZnJlc2goKSB7XG4gICAgLy8gUnVuIHVwZGF0ZWQgb24gdGhlIG5leHQgdXBkYXRlZCBjaGVjay5cbiAgICB0aGlzLnJ1blVwZGF0ZWRPbkNoZWNrID0gdHJ1ZTtcblxuICAgIC8vIC4uLiBtYWtlIHN1cmUgdGhlIGNoYW5nZSBkZXRlY3RvciBraWNrcyBpbiwgb3RoZXJ3aXNlIGlmIHRoZSBpbnB1dHNcbiAgICAvLyB3ZXJlIGNoYW5nZSBwcm9ncmFtbWF0aWFsbHkgdGhlIGNvbXBvbmVudCBtYXkgbm90IGJlIGVsaWdpYmxlIGZvclxuICAgIC8vIHVwZGF0aW5nLlxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxpc3RDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMubGlzdGNsb3NlZC5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTGlzdE9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5saXN0b3BlbmVkLmVtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25CZWZvcmVNb250aFJlbmRlcmVkKCk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJlZm9yZW1vbnRocmVuZGVyZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vbnRoUmVuZGVyZWQoYXJnczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMubW9udGhyZW5kZXJlZC5lbWl0KGFyZ3MpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29oby1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lkcy1lbnRlcnByaXNlLW5nL3NyYy9saWIvZGF0ZXBpY2tlci9zb2hvLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUM1QixNQUFNLHNDQUFzQyxDQUFDOztBQVE5QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsd0JBQXVFO0lBb2JsSDs7Ozs7O09BTUc7SUFDSCxZQUFvQixPQUFtQixFQUM3QixNQUFjLEVBQ2YsR0FBc0I7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQS9hdkIsZUFBVSxHQUFhLFNBQVMsQ0FBQztRQUVqQyxlQUFVLEdBQWEsU0FBUyxDQUFDO1FBRWpDLGFBQVEsR0FBMEIsRUFBRSxDQUFDO1FBRXJDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBd1Z0Qzs7OztXQUlHO1FBQ0gsOEZBQThGO1FBQ3BGLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUUzRDs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDOztXQUVHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDTyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5EOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztJ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QVM7c0JBQXJCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFZTyxNQUFNO3NCQUFsQixLQUFLO2dCQVVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBVU8sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBY08sUUFBUTtzQkFBcEIsS0FBSztnQkFnQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFpQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFLRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTTtnQkF1QzhCLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUdNLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBOZ1pvbmUsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIHByb3ZpZGVDb250cm9sVmFsdWVBY2Nlc3NvclxufSBmcm9tICcuLi91dGlscy9iYXNlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtzb2hvLWRhdGVwaWNrZXJdJywgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUNvbnRyb2xWYWx1ZUFjY2Vzc29yKFNvaG9EYXRlUGlja2VyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgU29ob0RhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3I8c3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBEYXRlIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gZm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBjb250cm9sIGFmdGVyIHRoZSB2aWV3IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBwcml2YXRlIHJ1blVwZGF0ZWRPbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTG9jYWwgdmFyaWFibGVzXG4gICAqL1xuICBwcml2YXRlIGpRdWVyeUVsZW1lbnQ/OiBKUXVlcnk7XG5cbiAgcHJpdmF0ZSBkYXRlcGlja2VyPzogU29ob0RhdGVQaWNrZXJTdGF0aWMgfCBudWxsO1xuXG4gIHByaXZhdGUgaXNEaXNhYmxlZD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpc1JlYWRPbmx5PzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9vcHRpb25zOiBTb2hvRGF0ZVBpY2tlck9wdGlvbnMgPSB7fTtcblxuICBwcml2YXRlIHVwZGF0ZUxlZ2VuZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdG8gZGlzcGxheSB0aGUgdGltZXBpY2tlcjsgZGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd1RpbWUoc2hvd1RpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnNob3dUaW1lID0gc2hvd1RpbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0cnVlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQgZm9yIHRoZSB0aW1lIHBvcnRpb24gb3RoZXJ3aXNlIDEyOjAwIG1pZG5pZ2h0IGlzIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdXNlQ3VycmVudFRpbWUodXNlQ3VycmVudFRpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnVzZUN1cnJlbnRUaW1lID0gdXNlQ3VycmVudFRpbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBhdHRlcm4gZm9yIHRoZSB0aW1lIGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIHNldCB0aW1lRm9ybWF0KHRpbWVGb3JtYXQ6IHN0cmluZykge1xuICAgIHRoaXMuX29wdGlvbnMudGltZUZvcm1hdCA9IHRpbWVGb3JtYXQ7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbnRlZ2VyIGZyb20gMSB0byA2MDsgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUgYXJlIGRpc3BsYXllZCBhcyBvcHRpb25zIGluIHRoZSBtaW51dGVzIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1pbnV0ZUludGVydmFsKG1pbnV0ZUludGVydmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcHRpb25zLm1pbnV0ZUludGVydmFsID0gbWludXRlSW50ZXJ2YWw7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbnRlZ2VyIGZyb20gMSB0byA2MDsgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUgYXJlIGRpc3BsYXllZCBhcyBvcHRpb25zIGluIHRoZSBzZWNvbmRzIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHNlY29uZEludGVydmFsKHNlY29uZEludGVydmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcHRpb25zLnNlY29uZEludGVydmFsID0gc2Vjb25kSW50ZXJ2YWw7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGRhdGVwaWNrZXJzIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICogQW4gaW50ZWdlciBmcm9tIDAgLSA2IHdoZXJlIDAgPSBTdW5kYXksIDEgPSBNb25kYXksIGV0Yy4uLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGZpcnN0RGF5T2ZXZWVrKGZpcnN0RGF5T2ZXZWVrOiBTb2hvRGF0ZVBpY2tlckRheU9mV2Vlaykge1xuICAgIHRoaXMuX29wdGlvbnMuZmlyc3REYXlPZldlZWsgPSBmaXJzdERheU9mV2VlaztcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlIGZpZWxkIHdpbGwgYmUgc2l6ZWQgdG8gdGhlIHdpZHRoIG9mIHRoZSBkYXRlLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGF1dG9TaXplKGF1dG9TaXplOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5hdXRvU2l6ZSA9IGF1dG9TaXplO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB0aGUgdG9kYXkgYnV0dG9uIG9uIHRoZSBoZWFkZXIuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd1RvZGF5KHNob3dUb2RheTogYm9vbGVhbikge1xuICAgIHRoaXMuX29wdGlvbnMuc2hvd1RvZGF5ID0gc2hvd1RvZGF5O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKiogQWRkIGV4dHJhIGF0dHJpYnV0ZXMgbGlrZSBpZCdzIHRvIHRoZSBjb21wb25lbnQgKiovXG4gIEBJbnB1dCgpIHNldCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEFycmF5PE9iamVjdD4gfCBPYmplY3QpIHtcbiAgICB0aGlzLl9vcHRpb25zLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIG1vZGUsIGVpdGhlciAnc3RhbmRhcmQnIG9yICdyYW5nZScuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbW9kZShtb2RlOiBTb2hvRGF0ZVBpY2tlck1vZGUpIHtcbiAgICB0aGlzLl9vcHRpb25zLm1vZGUgPSBtb2RlO1xuXG4gICAgaWYgKG1vZGUgPT09ICdyYW5nZScpIHtcbiAgICAgIGlmICh0aGlzLl9vcHRpb25zLnJhbmdlKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMucmFuZ2UudXNlUmFuZ2UgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5yYW5nZSA9IHt9O1xuICAgICAgICB0aGlzLl9vcHRpb25zLnJhbmdlLnVzZVJhbmdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuX29wdGlvbnMucmFuZ2UpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5yYW5nZS51c2VSYW5nZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSByYW5nZSBvZiB0d28gZGF0ZXMgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIHNldCByYW5nZShyYW5nZTogU29ob0RhdGVQaWNrZXJSYW5nZSkge1xuICAgIHRoaXMuX29wdGlvbnMucmFuZ2UgPSByYW5nZTtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgYSBub24tbWF0Y2hpbmcgbWludXRlcyB2YWx1ZSBpcyBlbnRlcmVkLCB3aWxsIHJvdW5kIHRoZSBtaW51dGVzIHZhbHVlIHRvIHRoZSBuZWFyZXN0IGludGVydmFsIG9uIHRoZSBibHVyIGV2ZW50LlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHJvdW5kVG9JbnRlcnZhbChyb3VuZFRvSW50ZXJ2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnJvdW5kVG9JbnRlcnZhbCA9IHJvdW5kVG9JbnRlcnZhbDtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwYXR0ZXJuIGZvciB0aGUgZGF0ZSBmb3JtYXQgb3IgdGhlIHZhbHVlIG9mICdsb2NhbGUnLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGRhdGVGb3JtYXQoZGF0ZUZvcm1hdDogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5kYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBhIHBsYWNlaG9sZGVyIGZvciBhbiBlbXB0eSB2YWx1ZTsgZGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZykge1xuICAgIHRoaXMuX29wdGlvbnMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBhbiBvYmplY3QgY29udGFpbmluZyBhIGRhdGUgb3IgcmFuZ2Ugb2YgZGF0ZXMgdGhhdCBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlKGRpc2FibGU6IGFueSkge1xuICAgIHRoaXMuX29wdGlvbnMuZGlzYWJsZSA9IGRpc2FibGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgYSBsZWdlbmQgaXMgc2hvd24gdG8gYXNzb2NpYXRlIGRhdGVzXG4gICAqL1xuICBASW5wdXQoKSBzZXQgc2hvd0xlZ2VuZChzaG93TGVnZW5kOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5zaG93TGVnZW5kID0gc2hvd0xlZ2VuZDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbW9udGggYW5kIHllYXIgd2lsbCByZW5kZXIgYXMgZHJvcGRvd25zLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHNob3dNb250aFllYXJQaWNrZXIoc2hvd01vbnRoWWVhclBpY2tlcjogYm9vbGVhbikge1xuICAgIHRoaXMuX29wdGlvbnMuc2hvd01vbnRoWWVhclBpY2tlciA9IHNob3dNb250aFllYXJQaWNrZXI7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGRheXMgcG9ydGlvbiBvZiB0aGUgY2FsZW5kYXIgd2lsbCBiZSBoaWRkZW4uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgaGlkZURheXMoaGlkZURheXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLmhpZGVEYXlzID0gaGlkZURheXM7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHllYXJzIGFoZWFkIHRvIHNob3cgaW4gdGhlIG1vbnRoL3llYXIgcGlja2VyIHNob3VsZCB0b3RhbCA5IHdpdGggeWVhcnNCYWNrLlxuICAgKi9cbiAgQElucHV0KCkgc2V0IHllYXJzQWhlYWQoeWVhcnNBaGVhZDogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3B0aW9ucy55ZWFyc0FoZWFkID0geWVhcnNBaGVhZDtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLm1hcmtGb3JSZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgeWVhcnMgYmFjayB0byBzaG93IGluIHRoZSBtb250aC95ZWFyIHBpY2tlciBzaG91bGQgdG90YWwgOSB3aXRoIHllYXJzQWhlYWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgeWVhcnNCYWNrKHllYXJzQmFjazogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3B0aW9ucy55ZWFyc0JhY2sgPSB5ZWFyc0JhY2s7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBob3cgdGhlIGxlZ2VuZCBkaXNwbGF5c1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGxlZ2VuZChsZWdlbmQ6IEFycmF5PFNvaG9EYXRlUGlja2VyTGVnZW5kPikge1xuICAgIHRoaXMuX29wdGlvbnMubGVnZW5kID0gbGVnZW5kO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgICh0aGlzLmRhdGVwaWNrZXIgYXMgYW55KS5zZXR0aW5ncy5sZWdlbmQgPSBsZWdlbmQ7XG4gICAgICB0aGlzLnVwZGF0ZUxlZ2VuZCA9IHRydWU7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsZSB0byB1c2UgZm9yIHRoaXMgaW5zdGFuY2UuIElmIG5vdCBzZXQsIHRoZSBjdXJyZW50IGxvY2FsZSB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgbG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxlbmRhcidzIG5hbWUuIEN1cnJlbnRseSBqdXN0ICdncmVnb3JpYW4nIG9yICdpc2xhbWljLXVtYWxxdXJhJ1xuICAgKi9cbiAgQElucHV0KCkgc2V0IGNhbGVuZGFyTmFtZShjYWxlbmRhck5hbWU6IFNvaG9EYXRlUGlja2VyQ2FsZW5kYXJOYW1lKSB7XG4gICAgdGhpcy5fb3B0aW9ucy5jYWxlbmRhck5hbWUgPSBjYWxlbmRhck5hbWU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGRhdGVzIHdpbGwgdXNlIFVUQyBmb3JtYXRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB1c2VVVEModXNlVVRDOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3B0aW9ucy51c2VVVEMgPSB1c2VVVEM7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGlucHV0IHRvIHRhYmJhYmxlXG4gICAqL1xuICBASW5wdXQoKSBzZXQgdGFiYmFibGUodGFiYmFibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcHRpb25zLnRhYmJhYmxlID0gdGFiYmFibGU7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5tYXJrRm9yUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcHRpb25zIGZvciB0aGUgZGF0ZSBwaWNrZXJcbiAgICovXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IFNvaG9EYXRlUGlja2VyT3B0aW9ucykge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHRoaXMubWFya0ZvclJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBTb2hvRGF0ZVBpY2tlck9wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGNvbnRyb2xcbiAgICovXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIHZhbHVlIGlmIG5vdCByZXF1aXJlZCxcbiAgICAvLyB0aGlzIGNhdXNlcyBpc3N1ZSBvbiBjb21wb25lbnQgaW5pdGlhbGlzYXRpb25cbiAgICAvLyBhcyBlbmFibGUoKSBpcyBjYWxsZWQgYnkgYm90aCBkaXNhYmxlZCgpXG4gICAgLy8gYW5kIHJlYWRvbmx5KCkuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlciA9PSBudWxsKSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHN0YXR1cyBsb2NhbGx5IChmb3IgcmVmcmVzaGluZylcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXI/LmRpc2FibGUoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNSZWFkT25seSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJvbCB0byByZWFkb25seVxuICAgKi9cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgdmFsdWUgaWYgbm90IHJlcXVpcmVkLFxuICAgIC8vIHRoaXMgY2F1c2VzIGlzc3VlIG9uIGNvbXBvbmVudCBpbml0aWFsaXNhdGlvblxuICAgIC8vIGFzIGVuYWJsZSgpIGlzIGNhbGxlZCBieSBib3RoIGRpc2FibGVkKClcbiAgICAvLyBhbmQgcmVhZG9ubHkoKS5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyID09IG51bGwpIHtcbiAgICAgIHRoaXMuaXNSZWFkT25seSA9IHZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgc3RhdHVzIGxvY2FsbHkgKGZvciByZWZyZXNoaW5nKVxuICAgIHRoaXMuaXNSZWFkT25seSA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmRhdGVwaWNrZXI/LnJlYWRvbmx5KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzUmVhZE9ubHk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRhdGVwaWNrZXIgdmFsdWUgY2hhbmdlc1xuICAgKlxuICAgKiBAdG9kbyByZXBsYWNlIG92ZXJyaWRlIG9mIG5hdGl2ZSBhdHRyaWJ1dGVcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZSwgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ob0RhdGVQaWNrZXJFdmVudD4oKTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGxpc3RjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBkYXRlcGlja2VyIGlzIG9wZW5lZC5cbiAgICovXG4gIEBPdXRwdXQoKSBsaXN0b3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGEgbW9udGggd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgZGF0ZXBpY2tlclxuICAgKi9cbiAgQE91dHB1dCgpIGJlZm9yZW1vbnRocmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBhIG1vbnRoIGhhcyBiZWVuIHJlbmRlcmVkIGluIHRoZSBkYXRlcGlja2VyXG4gICAqL1xuICBAT3V0cHV0KCkgbW9udGhyZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ob0RhdGVQaWNrZXJNb250aFJlbmRlcmVkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBBUElcbiAgICovXG5cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nW10sIHRyaWdnZXI6IGJvb2xlYW4sIGlzVGltZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2V0VmFsdWUodmFsdWUsIHRyaWdnZXIsIGlzVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUoYXNEYXRlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nW10ge1xuICAgIGlmIChhc0RhdGUgJiYgKHR5cGVvZiB0aGlzLmludGVybmFsVmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgY29uc3QgY2FsZW5kYXIgPSBTb2hvLkxvY2FsZS5jYWxlbmRhcigpO1xuICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRoaXMuX29wdGlvbnMuZGF0ZUZvcm1hdCB8fCBjYWxlbmRhci5kYXRlRm9ybWF0LnNob3J0O1xuICAgICAgY29uc3QgdGltZUZvcm1hdCA9IHRoaXMuX29wdGlvbnMudGltZUZvcm1hdCB8fCBjYWxlbmRhci50aW1lRm9ybWF0O1xuICAgICAgbGV0IGZvcm1hdCA9IGRhdGVGb3JtYXQ7XG4gICAgICBpZiAodGhpcy5fb3B0aW9ucy5zaG93VGltZSkge1xuICAgICAgICBmb3JtYXQgKz0gJ1QnICsgdGltZUZvcm1hdDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFNvaG8uTG9jYWxlLnBhcnNlRGF0ZSh0aGlzLmludGVybmFsVmFsdWUgfHwgJycsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxWYWx1ZSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZWxlbWVudC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyPy5vcGVuQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGF0dHJpYnV0ZXMgdG8gdGhlIGhvc3QgaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRlcGlja2VyJykgZ2V0IGlzRGF0ZXBpY2tlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRpbWVwaWNrZXInKSBnZXQgaXNUaW1lcGlja2VyKCkge1xuICAgIHJldHVybiAhIXRoaXMuX29wdGlvbnMuc2hvd1RpbWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBTb2hvRGF0ZVBpY2tlckNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdGhpcyBjb21wb25lbnQgZW5jYXBzdWxhdGVzLlxuICAgKiBAcGFyYW0gbmdab25lIHRoZSBhbmd1bGFyIHpvbmUgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcmVmIHJlZmVyZW5jZSB0byB0aGUgY2hhbmdlIGRldGVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG5cbiAgICAvLyBjYWxsIG91dHNpZGUgdGhlIGFuZ3VsYXIgem9uZSBzbyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgLy8gaXNuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSBzb2hvIGNvbXBvbmVudC5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBhc3NpZ24gZWxlbWVudCB0byBsb2NhbCB2YXJpYWJsZVxuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50ID0galF1ZXJ5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSB0aGUgY29sb3JwaWNrZXIgY29udHJvbFxuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50LmRhdGVwaWNrZXIodGhpcy5fb3B0aW9ucyk7XG5cbiAgICAgIC8vIGV4dHJhY3QgdGhlIGFwaVxuICAgICAgdGhpcy5kYXRlcGlja2VyID0gdGhpcy5qUXVlcnlFbGVtZW50LmRhdGEoJ2RhdGVwaWNrZXInKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBCaW5kIHRvIGpRdWVyeUVsZW1lbnQncyBldmVudHNcbiAgICAgICAqL1xuICAgICAgdGhpcy5qUXVlcnlFbGVtZW50XG4gICAgICAgIC5vbignY2hhbmdlJywgKGFyZ3M6IGFueSkgPT4gdGhpcy5vbkNoYW5nZShhcmdzKSlcbiAgICAgICAgLm9uKCdsaXN0Y2xvc2VkJywgKCkgPT4gdGhpcy5vbkxpc3RDbG9zZWQoKSlcbiAgICAgICAgLm9uKCdsaXN0b3BlbmVkJywgKCkgPT4gdGhpcy5vbkxpc3RPcGVuZWQoKSlcbiAgICAgICAgLm9uKCdiZWZvcmVtb250aHJlbmRlcmVkJywgKCkgPT4gdGhpcy5vbkJlZm9yZU1vbnRoUmVuZGVyZWQoKSlcbiAgICAgICAgLm9uKCdtb250aHJlbmRlcmVkJywgKGUsIGFyZ3MpID0+IHRoaXMub25Nb250aFJlbmRlcmVkKGFyZ3MpKVxuXG4gICAgICBpZiAodGhpcy5pbnRlcm5hbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2V0VmFsdWUodGhpcy5pbnRlcm5hbFZhbHVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJ1blVwZGF0ZWRPbkNoZWNrID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcblxuICAgIGlmICh0aGlzLnVwZGF0ZUxlZ2VuZCAmJiB0aGlzLmRhdGVwaWNrZXI/LmlzT3BlbigpKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXIubG9hZExlZ2VuZCh0aGlzLl9vcHRpb25zLmxlZ2VuZCk7XG4gICAgICB0aGlzLnVwZGF0ZUxlZ2VuZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJ1blVwZGF0ZWRPbkNoZWNrKSB7XG4gICAgICAvLyBFbnN1cmUgdGhlIGVuYWJsZWQvZGlzYWJsZWQgZmxhZ3MgYXJlIHNldC5cbiAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQgIT09IG51bGwgJiYgdGhpcy5pc0Rpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuaXNEaXNhYmxlZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkgIT09IG51bGwgJiYgdGhpcy5pc1JlYWRPbmx5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IHRoaXMuaXNSZWFkT25seTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgY29udHJvbCBBRlRFUiB0aGUgbW9kZWxcbiAgICAgICAgLy8gaGFzIGJlZW4gdXBkYXRlZCAoYXNzdW1pbmcgdGhlcmUgaXMgb25lKSwgc29cbiAgICAgICAgLy8gZXhlY3V0ZSB1cGRhdGVkIGFmdGVyIGFuZ3VsYXIgaGFzIGdlbmVyYXRlZFxuICAgICAgICAvLyB0aGUgbW9kZWwgYW5kIHRoZSB2aWV3IG1hcmt1cC5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci51cGRhdGVkKHRoaXMuX29wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucnVuVXBkYXRlZE9uQ2hlY2sgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIGNvbnRyb2wgYmVpbmcgY2hhbmdlZC5cbiAgICovXG4gIG9uQ2hhbmdlKGV2ZW50OiBTb2hvRGF0ZVBpY2tlckV2ZW50KSB7XG4gICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdGhpcy5kYXRlcGlja2VyPy5lbGVtZW50LnZhbCgpO1xuXG4gICAgLy8gU2V0IHRoZSBkYXRlIG9uIHRoZSBldmVudC5cbiAgICBldmVudC5kYXRhID0gdGhpcy5pbnRlcm5hbFZhbHVlO1xuXG4gICAgLy8gV2hlbiB0aGUgcmVxdWVzdCBmb3IgZGF0YSBoYXMgY29tcGxldGVkLCBtYWtlIHN1cmUgd2VcbiAgICAvLyB1cGRhdGUgdGhlICdkcm9wZG93bicgY29udHJvbC5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gRmlyZSB0aGUgZXZlbnRcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHdyaXRlVmFsdWUgdG8gYWxsb3cgdGhlIGRhdGUgcGlja2VyXG4gICAqIGVsZW1lbnQgdG8gYmUgdXBkYXRlZCBjb3JyZWN0bHkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHRoZSBuZXcgdmFsdWVcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSkge1xuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIC8vIFRoZSBwcm9jZXNzaW5nIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgZm9ybWF0XG4gICAgICAvLyBpbiB0aGUgY29udHJvbC5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuX29wdGlvbnMucmFuZ2U/LnVzZVJhbmdlKSB7XG4gICAgICAgIGNvbnN0IGRhdGVzID0gdmFsdWUuc3BsaXQoJy0nKTtcbiAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IFNvaG8uTG9jYWxlLnBhcnNlRGF0ZShkYXRlc1swXS50cmltKCkpIHx8IFNvaG8uTG9jYWxlLnBhcnNlRGF0ZShkYXRlc1swXS50cmltKCksIHsgcGF0dGVybjogdGhpcy5fb3B0aW9ucz8uZGF0ZUZvcm1hdCB9KTtcbiAgICAgICAgY29uc3QgZW5kVmFsdWUgPSBTb2hvLkxvY2FsZS5wYXJzZURhdGUoZGF0ZXNbMV0udHJpbSgpKSB8fCBTb2hvLkxvY2FsZS5wYXJzZURhdGUoZGF0ZXNbMV0udHJpbSgpLCB7IHBhdHRlcm46IHRoaXMuX29wdGlvbnM/LmRhdGVGb3JtYXQgfSk7XG5cbiAgICAgICAgKHRoaXMuZGF0ZXBpY2tlciBhcyBhbnkpLnNldHRpbmdzLnJhbmdlLnN0YXJ0ID0gc3RhcnRWYWx1ZTtcbiAgICAgICAgKHRoaXMuZGF0ZXBpY2tlciBhcyBhbnkpLnNldHRpbmdzLnJhbmdlLmVuZCA9IGVuZFZhbHVlO1xuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuc2V0VmFsdWUoc3RhcnRWYWx1ZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLnNldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgc3RhdHVzIGNoYW5nZXMgdG8gb3IgZnJvbSBcIkRJU0FCTEVEXCIuXG4gICAqIERlcGVuZGluZyBvbiB0aGUgdmFsdWUsIGl0IHdpbGwgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGFwcHJvcHJpYXRlIERPTSBlbGVtZW50LlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cbiAgICAgIGlmICh0aGlzLmpRdWVyeUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5qUXVlcnlFbGVtZW50Lm9mZigpO1xuICAgICAgICB0aGlzLmpRdWVyeUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyB0aGUgY29tcG9uZW50cyBhcyByZXF1aXJpbmcgYSByZWJ1aWxkIGFmdGVyIHRoZSBuZXh0IHVwZGF0ZS5cbiAgICovXG4gIG1hcmtGb3JSZWZyZXNoKCkge1xuICAgIC8vIFJ1biB1cGRhdGVkIG9uIHRoZSBuZXh0IHVwZGF0ZWQgY2hlY2suXG4gICAgdGhpcy5ydW5VcGRhdGVkT25DaGVjayA9IHRydWU7XG5cbiAgICAvLyAuLi4gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgZGV0ZWN0b3Iga2lja3MgaW4sIG90aGVyd2lzZSBpZiB0aGUgaW5wdXRzXG4gICAgLy8gd2VyZSBjaGFuZ2UgcHJvZ3JhbW1hdGlhbGx5IHRoZSBjb21wb25lbnQgbWF5IG5vdCBiZSBlbGlnaWJsZSBmb3JcbiAgICAvLyB1cGRhdGluZy5cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgb25MaXN0Q2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RjbG9zZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxpc3RPcGVuZWQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMubGlzdG9wZW5lZC5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uQmVmb3JlTW9udGhSZW5kZXJlZCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iZWZvcmVtb250aHJlbmRlcmVkLmVtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Nb250aFJlbmRlcmVkKGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm1vbnRocmVuZGVyZWQuZW1pdChhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -170,7 +170,7 @@ export class SohoListBuilderComponent {
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
SohoListBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoListBuilderComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
173
|
-
SohoListBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoListBuilderComponent, selector: "[soho-listbuilder]", inputs: { sohoListBuilderElementId: "sohoListBuilderElementId", class: "class", dataset: "dataset", handle: "handle", btnAdd: "btnAdd", btnEdit: "btnEdit", btnDelete: "btnDelete", btnGoUp: "btnGoUp", btnGoDown: "btnGoDown", attributes: "attributes", template: "template", templateNewItem: "templateNewItem", templateItemContent: "templateItemContent" }, outputs: { afteradd: "afteradd", aftergoup: "aftergoup", aftergodown: "aftergodown", afterdelete: "afterdelete", beforeedit: "beforeedit", beforeadd: "beforeadd", beforegoup: "beforegoup", beforegodown: "beforegodown", beforedelete: "beforedelete", arrangeupdate: "arrangeupdate", entereditmode: "entereditmode", exiteditmode: "exiteditmode" }, host: { properties: { "class.listbuilder": "this.isListbuilder" } }, viewQueries: [{ propertyName: "listBuilderRef", first: true, predicate: ["listbuilder"], descendants: true, static: true }], ngImport: i0, template: "<div #listbuilder [class]=\"listClass\" [attr.id]=\"sohoListBuilderElementId\" >\n <soho-toolbar class=\"formatter-toolbar\">\n <soho-toolbar-button-set>\n <button soho-button=\"secondary\" icon=\"add\" data-action=\"add\" title=\"Add New\">Add</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"up-arrow\" data-action=\"goup\" title=\"Go Up\">Go Up</button>\n <button soho-button=\"secondary\" icon=\"down-arrow\" data-action=\"godown\" title=\"Go Down\">Go Down</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"edit\" data-action=\"edit\" title=\"Edit\">Edit</button>\n <button soho-button=\"secondary\" icon=\"delete\" data-action=\"delete\" title=\"Delete\">Delete</button>\n </soho-toolbar-button-set>\n </soho-toolbar>\n <div class=\"listbuilder-content\">\n <div class=\"listview\">\n <ul>\n <ng-content select=\"li[soho-listview-item]\"></ng-content>\n </ul>\n <ng-content select=\"[soho-emptymessage]\"></ng-content>\n </div>\n </div>\n</div>", components: [{ type: i1.SohoToolbarComponent, selector: "soho-toolbar, div[soho-toolbar]", inputs: ["noActionsButton", "hasMoreButton", "maxVisibleButtons", "rightAligned", "rightAlign", "resizeContainers", "favorButtonset", "moreMenuSettings", "attributes"], outputs: ["beforeActivated", "activated", "afterActivated", "selected", "menuItemMouseOver"] }, { type: i1.SohoToolbarButtonSetComponent, selector: "soho-toolbar-button-set" }, { type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
173
|
+
SohoListBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoListBuilderComponent, selector: "[soho-listbuilder]", inputs: { sohoListBuilderElementId: "sohoListBuilderElementId", class: "class", dataset: "dataset", handle: "handle", btnAdd: "btnAdd", btnEdit: "btnEdit", btnDelete: "btnDelete", btnGoUp: "btnGoUp", btnGoDown: "btnGoDown", attributes: "attributes", template: "template", templateNewItem: "templateNewItem", templateItemContent: "templateItemContent" }, outputs: { afteradd: "afteradd", aftergoup: "aftergoup", aftergodown: "aftergodown", afterdelete: "afterdelete", beforeedit: "beforeedit", beforeadd: "beforeadd", beforegoup: "beforegoup", beforegodown: "beforegodown", beforedelete: "beforedelete", arrangeupdate: "arrangeupdate", entereditmode: "entereditmode", exiteditmode: "exiteditmode" }, host: { properties: { "class.listbuilder": "this.isListbuilder" } }, viewQueries: [{ propertyName: "listBuilderRef", first: true, predicate: ["listbuilder"], descendants: true, static: true }], ngImport: i0, template: "<div #listbuilder [class]=\"listClass\" [attr.id]=\"sohoListBuilderElementId\" >\n <soho-toolbar class=\"formatter-toolbar\">\n <soho-toolbar-button-set>\n <button soho-button=\"secondary\" icon=\"add\" data-action=\"add\" title=\"Add New\">Add</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"up-arrow\" data-action=\"goup\" title=\"Go Up\">Go Up</button>\n <button soho-button=\"secondary\" icon=\"down-arrow\" data-action=\"godown\" title=\"Go Down\">Go Down</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"edit\" data-action=\"edit\" title=\"Edit\">Edit</button>\n <button soho-button=\"secondary\" icon=\"delete\" data-action=\"delete\" title=\"Delete\">Delete</button>\n </soho-toolbar-button-set>\n </soho-toolbar>\n <div class=\"listbuilder-content\">\n <div class=\"listview\">\n <ul>\n <ng-content select=\"li[soho-listview-item]\"></ng-content>\n </ul>\n <ng-content select=\"[soho-emptymessage]\"></ng-content>\n </div>\n </div>\n</div>", components: [{ type: i1.SohoToolbarComponent, selector: "soho-toolbar, div[soho-toolbar]", inputs: ["noActionsButton", "hasMoreButton", "maxVisibleButtons", "rightAligned", "rightAlign", "resizeContainers", "favorButtonset", "moreMenuSettings", "attributes"], outputs: ["beforeActivated", "activated", "afterActivated", "selected", "menuItemMouseOver"] }, { type: i1.SohoToolbarButtonSetComponent, selector: "soho-toolbar-button-set" }, { type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "iconAlign", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
174
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoListBuilderComponent, decorators: [{
|
|
175
175
|
type: Component,
|
|
176
176
|
args: [{ selector: '[soho-listbuilder]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #listbuilder [class]=\"listClass\" [attr.id]=\"sohoListBuilderElementId\" >\n <soho-toolbar class=\"formatter-toolbar\">\n <soho-toolbar-button-set>\n <button soho-button=\"secondary\" icon=\"add\" data-action=\"add\" title=\"Add New\">Add</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"up-arrow\" data-action=\"goup\" title=\"Go Up\">Go Up</button>\n <button soho-button=\"secondary\" icon=\"down-arrow\" data-action=\"godown\" title=\"Go Down\">Go Down</button>\n <div class=\"separator\"></div>\n <button soho-button=\"secondary\" icon=\"edit\" data-action=\"edit\" title=\"Edit\">Edit</button>\n <button soho-button=\"secondary\" icon=\"delete\" data-action=\"delete\" title=\"Delete\">Delete</button>\n </soho-toolbar-button-set>\n </soho-toolbar>\n <div class=\"listbuilder-content\">\n <div class=\"listview\">\n <ul>\n <ng-content select=\"li[soho-listview-item]\"></ng-content>\n </ul>\n <ng-content select=\"[soho-emptymessage]\"></ng-content>\n </div>\n </div>\n</div>" }]
|
|
@@ -369,7 +369,7 @@ export class SohoStepProcessComponent {
|
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
SohoStepProcessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoStepProcessComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
372
|
-
SohoStepProcessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoStepProcessComponent, selector: "div[soho-stepprocess]", inputs: { linearProgression: "linearProgression", nextButtonLabel: "nextButtonLabel", previousButtonLabel: "previousButtonLabel", continueButtonLabel: "continueButtonLabel", saveAndCloseButtonLabel: "saveAndCloseButtonLabel", nextButtonEnable: "nextButtonEnable", previousButtonEnable: "previousButtonEnable", saveCloseButtonEnable: "saveCloseButtonEnable" }, outputs: { beforeSelectStep: "beforeSelectStep", saveClose: "saveClose" }, host: { properties: { "class.step-process-container": "this.isStepProcessContainer", "class.two-column": "this.isTwoColumn", "class.fixed": "this.isFixed", "class.page-container": "this.isPageContainer", "class.no-scroll": "this.isNoScroll" } }, ngImport: i0, template: "\n<!-- STEP CONTROL STEPS -->\n<div class=\"sidebar\">\n <div soho-toolbar class=\"toolbar-custom toolbar-collapsible phone-visible\">\n <soho-toolbar-title>\n <ng-content select=\"div[soho-step-list-title]\"></ng-content>\n </soho-toolbar-title>\n </div>\n <ng-content select=\"ul[soho-step-list]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-toggle-sidebar\">{{continueButtonLabel}}</button>\n </div>\n</div>\n\n<!-- STEP CONTROL CONTENT -->\n<div class=\"main no-scroll\">\n\n <div class=\"toolbar-custom toolbar-collapsible\">\n <button soho-button=\"icon\" icon=\"bullet-steps\" class=\"btn-icon btn-toggle-steps js-toggle-sidebar\"></button>\n\n <ng-content select=\"div[soho-step-content-title]\"></ng-content>\n\n <div class=\"actions phone-hidden\">\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-prev\">{{previousButtonLabel}}</button>\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n </div>\n\n <!-- STEP CONTROL PHONE CONTROLS -->\n <ng-content select=\"div[soho-step-content]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n</div>\n", components: [{ type: i1.SohoToolbarComponent, selector: "soho-toolbar, div[soho-toolbar]", inputs: ["noActionsButton", "hasMoreButton", "maxVisibleButtons", "rightAligned", "rightAlign", "resizeContainers", "favorButtonset", "moreMenuSettings", "attributes"], outputs: ["beforeActivated", "activated", "afterActivated", "selected", "menuItemMouseOver"] }, { type: i1.SohoToolbarTitleComponent, selector: "soho-toolbar-title" }, { type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }] });
|
|
372
|
+
SohoStepProcessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoStepProcessComponent, selector: "div[soho-stepprocess]", inputs: { linearProgression: "linearProgression", nextButtonLabel: "nextButtonLabel", previousButtonLabel: "previousButtonLabel", continueButtonLabel: "continueButtonLabel", saveAndCloseButtonLabel: "saveAndCloseButtonLabel", nextButtonEnable: "nextButtonEnable", previousButtonEnable: "previousButtonEnable", saveCloseButtonEnable: "saveCloseButtonEnable" }, outputs: { beforeSelectStep: "beforeSelectStep", saveClose: "saveClose" }, host: { properties: { "class.step-process-container": "this.isStepProcessContainer", "class.two-column": "this.isTwoColumn", "class.fixed": "this.isFixed", "class.page-container": "this.isPageContainer", "class.no-scroll": "this.isNoScroll" } }, ngImport: i0, template: "\n<!-- STEP CONTROL STEPS -->\n<div class=\"sidebar\">\n <div soho-toolbar class=\"toolbar-custom toolbar-collapsible phone-visible\">\n <soho-toolbar-title>\n <ng-content select=\"div[soho-step-list-title]\"></ng-content>\n </soho-toolbar-title>\n </div>\n <ng-content select=\"ul[soho-step-list]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-toggle-sidebar\">{{continueButtonLabel}}</button>\n </div>\n</div>\n\n<!-- STEP CONTROL CONTENT -->\n<div class=\"main no-scroll\">\n\n <div class=\"toolbar-custom toolbar-collapsible\">\n <button soho-button=\"icon\" icon=\"bullet-steps\" class=\"btn-icon btn-toggle-steps js-toggle-sidebar\"></button>\n\n <ng-content select=\"div[soho-step-content-title]\"></ng-content>\n\n <div class=\"actions phone-hidden\">\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-prev\">{{previousButtonLabel}}</button>\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n </div>\n\n <!-- STEP CONTROL PHONE CONTROLS -->\n <ng-content select=\"div[soho-step-content]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n</div>\n", components: [{ type: i1.SohoToolbarComponent, selector: "soho-toolbar, div[soho-toolbar]", inputs: ["noActionsButton", "hasMoreButton", "maxVisibleButtons", "rightAligned", "rightAlign", "resizeContainers", "favorButtonset", "moreMenuSettings", "attributes"], outputs: ["beforeActivated", "activated", "afterActivated", "selected", "menuItemMouseOver"] }, { type: i1.SohoToolbarTitleComponent, selector: "soho-toolbar-title" }, { type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "iconAlign", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }] });
|
|
373
373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoStepProcessComponent, decorators: [{
|
|
374
374
|
type: Component,
|
|
375
375
|
args: [{ selector: 'div[soho-stepprocess]', template: "\n<!-- STEP CONTROL STEPS -->\n<div class=\"sidebar\">\n <div soho-toolbar class=\"toolbar-custom toolbar-collapsible phone-visible\">\n <soho-toolbar-title>\n <ng-content select=\"div[soho-step-list-title]\"></ng-content>\n </soho-toolbar-title>\n </div>\n <ng-content select=\"ul[soho-step-list]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-toggle-sidebar\">{{continueButtonLabel}}</button>\n </div>\n</div>\n\n<!-- STEP CONTROL CONTENT -->\n<div class=\"main no-scroll\">\n\n <div class=\"toolbar-custom toolbar-collapsible\">\n <button soho-button=\"icon\" icon=\"bullet-steps\" class=\"btn-icon btn-toggle-steps js-toggle-sidebar\"></button>\n\n <ng-content select=\"div[soho-step-content-title]\"></ng-content>\n\n <div class=\"actions phone-hidden\">\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-prev\">{{previousButtonLabel}}</button>\n <button soho-button=\"tertiary\" class=\"btn-tertiary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n </div>\n\n <!-- STEP CONTROL PHONE CONTROLS -->\n <ng-content select=\"div[soho-step-content]\"></ng-content>\n <div class=\"phone-action-bar phone-visible\">\n <button soho-button=\"secondary\" class=\"btn btn-secondary js-btn-save-changes\">{{saveAndCloseButtonLabel}}</button>\n <button soho-button=\"primary\" class=\"btn btn-primary js-step-link-next\">{{nextButtonLabel}}</button>\n </div>\n</div>\n" }]
|
|
@@ -357,7 +357,7 @@ export class SohoSwapListComponent {
|
|
|
357
357
|
/** Used to provide unnamed controls with a unique id. */
|
|
358
358
|
SohoSwapListComponent.counter = 0;
|
|
359
359
|
SohoSwapListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoSwapListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.SohoSwapListService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
360
|
-
SohoSwapListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoSwapListComponent, selector: "soho-swaplist", inputs: { name: "name", availableCardTitle: "availableCardTitle", selectedCardTitle: "selectedCardTitle", fullAccessCardTitle: "fullAccessCardTitle", availableCardSearchTitle: "availableCardSearchTitle", selectedCardSearchTitle: "selectedCardSearchTitle", fullAccessCardSearchTitle: "fullAccessCardSearchTitle", btnMoveToSelect: "btnMoveToSelect", btnMoveToLeft: "btnMoveToLeft", btnMoveToRight: "btnMoveToRight", searchable: "searchable", attributes: "attributes", availableItems: "availableItems", draggable: "draggable", keepInList: "keepInList", selectedItems: "selectedItems", additionalItems: "additionalItems", showFullAccessCard: "showFullAccessCard" }, outputs: { beforeSwapEvent: "beforeswap", updateEvent: "updated" }, host: { properties: { "id": "this.id", "class.swaplist": "this.isSwapList", "class.one-third": "this.isOneThird" } }, queries: [{ propertyName: "_availableCard", first: true, predicate: ["available"], descendants: true, static: true }, { propertyName: "_selectedCard", first: true, predicate: ["selected"], descendants: true, static: true }, { propertyName: "_additionalCard", first: true, predicate: ["additional"], descendants: true, static: true }], ngImport: i0, template: "<div>\n <soho-swaplist-card type=\"available\" title=\"{{availableCardTitle}}\" searchTitle=\"{{availableCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"right-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToSelect}}\"></button>\n </soho-swaplist-card>\n <soho-swaplist-card type=\"selected\" title=\"{{selectedCardTitle}}\" searchTitle=\"{{selectedCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToLeft=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n <button *ngIf=\"showFullAccessCard\" soho-button=\"btn\" icon=\"right-arrow\" moveToRight=\"true\" title=\"{{btnMoveToRight}}\">\n </button>\n </soho-swaplist-card>\n <soho-swaplist-card *ngIf=\"showFullAccessCard\" type=\"full-access\" title=\"{{fullAccessCardTitle}}\" searchTitle=\"{{fullAccessCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n </soho-swaplist-card>\n</div>\n", components: [{ type: SohoSwapListCardComponent, selector: "soho-swaplist-card", inputs: ["type", "showSearchable", "searchTitle", "title"] }, { type: i3.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
360
|
+
SohoSwapListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: SohoSwapListComponent, selector: "soho-swaplist", inputs: { name: "name", availableCardTitle: "availableCardTitle", selectedCardTitle: "selectedCardTitle", fullAccessCardTitle: "fullAccessCardTitle", availableCardSearchTitle: "availableCardSearchTitle", selectedCardSearchTitle: "selectedCardSearchTitle", fullAccessCardSearchTitle: "fullAccessCardSearchTitle", btnMoveToSelect: "btnMoveToSelect", btnMoveToLeft: "btnMoveToLeft", btnMoveToRight: "btnMoveToRight", searchable: "searchable", attributes: "attributes", availableItems: "availableItems", draggable: "draggable", keepInList: "keepInList", selectedItems: "selectedItems", additionalItems: "additionalItems", showFullAccessCard: "showFullAccessCard" }, outputs: { beforeSwapEvent: "beforeswap", updateEvent: "updated" }, host: { properties: { "id": "this.id", "class.swaplist": "this.isSwapList", "class.one-third": "this.isOneThird" } }, queries: [{ propertyName: "_availableCard", first: true, predicate: ["available"], descendants: true, static: true }, { propertyName: "_selectedCard", first: true, predicate: ["selected"], descendants: true, static: true }, { propertyName: "_additionalCard", first: true, predicate: ["additional"], descendants: true, static: true }], ngImport: i0, template: "<div>\n <soho-swaplist-card type=\"available\" title=\"{{availableCardTitle}}\" searchTitle=\"{{availableCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"right-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToSelect}}\"></button>\n </soho-swaplist-card>\n <soho-swaplist-card type=\"selected\" title=\"{{selectedCardTitle}}\" searchTitle=\"{{selectedCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToLeft=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n <button *ngIf=\"showFullAccessCard\" soho-button=\"btn\" icon=\"right-arrow\" moveToRight=\"true\" title=\"{{btnMoveToRight}}\">\n </button>\n </soho-swaplist-card>\n <soho-swaplist-card *ngIf=\"showFullAccessCard\" type=\"full-access\" title=\"{{fullAccessCardTitle}}\" searchTitle=\"{{fullAccessCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n </soho-swaplist-card>\n</div>\n", components: [{ type: SohoSwapListCardComponent, selector: "soho-swaplist-card", inputs: ["type", "showSearchable", "searchTitle", "title"] }, { type: i3.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "iconAlign", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
361
361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoSwapListComponent, decorators: [{
|
|
362
362
|
type: Component,
|
|
363
363
|
args: [{ selector: 'soho-swaplist', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <soho-swaplist-card type=\"available\" title=\"{{availableCardTitle}}\" searchTitle=\"{{availableCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"right-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToSelect}}\"></button>\n </soho-swaplist-card>\n <soho-swaplist-card type=\"selected\" title=\"{{selectedCardTitle}}\" searchTitle=\"{{selectedCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToLeft=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n <button *ngIf=\"showFullAccessCard\" soho-button=\"btn\" icon=\"right-arrow\" moveToRight=\"true\" title=\"{{btnMoveToRight}}\">\n </button>\n </soho-swaplist-card>\n <soho-swaplist-card *ngIf=\"showFullAccessCard\" type=\"full-access\" title=\"{{fullAccessCardTitle}}\" searchTitle=\"{{fullAccessCardSearchTitle}}\" showSearchable=\"{{searchable}}\">\n <button soho-button=\"btn\" icon=\"left-arrow\" moveToSelected=\"true\" title=\"{{btnMoveToLeft}}\"></button>\n </soho-swaplist-card>\n</div>\n" }]
|
|
@@ -76,7 +76,7 @@ SohoWizardButtonbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12
|
|
|
76
76
|
<ng-content></ng-content>
|
|
77
77
|
</div>
|
|
78
78
|
</div>
|
|
79
|
-
`, isInline: true, styles: [":host{flex:0}\n", ".buttonbar{display:flex}\n", ".left{flex:1;display:flex;justify-content:flex-start;align-items:center}\n", ".middle{flex:1;display:flex;justify-content:center;align-items:center}\n", ".right{flex:1;display:flex;justify-content:flex-end;align-items:center}\n"], components: [{ type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
79
|
+
`, isInline: true, styles: [":host{flex:0}\n", ".buttonbar{display:flex}\n", ".left{flex:1;display:flex;justify-content:flex-start;align-items:center}\n", ".middle{flex:1;display:flex;justify-content:center;align-items:center}\n", ".right{flex:1;display:flex;justify-content:flex-end;align-items:center}\n"], components: [{ type: i2.SohoButtonComponent, selector: "button[soho-button]", inputs: ["soho-button", "buttonOptions", "toggleOnIcon", "toggleOffIcon", "replaceText", "hideMenuArrow", "hitbox", "notificationBadge", "notificationBadgeOptions", "extraIconClass", "isToggle", "isTogglePressed", "icon", "iconAlign", "isSubmit", "ripple", "state", "toggle", "expandableExpander", "moveToLeft", "moveToRight", "moveToSelected"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
80
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: SohoWizardButtonbarComponent, decorators: [{
|
|
81
81
|
type: Component,
|
|
82
82
|
args: [{
|
package/esm2020/version.json
CHANGED