@fundamental-ngx/core 0.38.2-rc.3 → 0.38.2-rc.4
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/scrollbar/scrollbar.component.mjs +13 -5
- package/esm2020/wizard/wizard.component.mjs +7 -2
- package/fesm2015/fundamental-ngx-core-scrollbar.mjs +11 -3
- package/fesm2015/fundamental-ngx-core-scrollbar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-wizard.mjs +7 -3
- package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-scrollbar.mjs +11 -3
- package/fesm2020/fundamental-ngx-core-scrollbar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-wizard.mjs +7 -3
- package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fundamental-ngx-core-v0.38.2-rc.4.tgz +0 -0
- package/package.json +2 -2
- package/scrollbar/scrollbar.component.d.ts +8 -0
- package/wizard/wizard.component.d.ts +3 -0
- package/fundamental-ngx-core-v0.38.2-rc.3.tgz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
@@ -14,7 +14,11 @@ import * as i0 from "@angular/core";
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
export class ScrollbarComponent {
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
constructor(_elementRef) {
|
|
21
|
+
this._elementRef = _elementRef;
|
|
18
22
|
/** Whether to force apply tabindex attribute. */
|
|
19
23
|
this.overrideTabindex = true;
|
|
20
24
|
/** @hidden */
|
|
@@ -63,6 +67,10 @@ export class ScrollbarComponent {
|
|
|
63
67
|
}
|
|
64
68
|
return this._overflow;
|
|
65
69
|
}
|
|
70
|
+
/** method to invoke scroll */
|
|
71
|
+
scroll(options) {
|
|
72
|
+
this._elementRef.nativeElement.scroll(options);
|
|
73
|
+
}
|
|
66
74
|
/** @hidden */
|
|
67
75
|
get _overflow() {
|
|
68
76
|
if (this.alwaysVisible) {
|
|
@@ -71,14 +79,14 @@ export class ScrollbarComponent {
|
|
|
71
79
|
return 'auto';
|
|
72
80
|
}
|
|
73
81
|
}
|
|
74
|
-
ScrollbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
ScrollbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
75
83
|
ScrollbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ScrollbarComponent, selector: "[fd-scrollbar]", inputs: { noHorizontalScroll: "noHorizontalScroll", noVerticalScroll: "noVerticalScroll", alwaysVisible: "alwaysVisible", overrideTabindex: "overrideTabindex" }, host: { properties: { "attr.tabindex": "this._tabindex", "style.overflow-x": "this._overflowX", "style.overflow-y": "this._overflowY" }, classAttribute: "fd-scrollbar" }, ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-scrollbar{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:auto;padding:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
76
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, decorators: [{
|
|
77
85
|
type: Component,
|
|
78
86
|
args: [{ selector: '[fd-scrollbar]', template: ` <ng-content></ng-content>`, host: {
|
|
79
87
|
class: 'fd-scrollbar'
|
|
80
88
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-scrollbar{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:auto;padding:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}\n"] }]
|
|
81
|
-
}], propDecorators: { noHorizontalScroll: [{
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { noHorizontalScroll: [{
|
|
82
90
|
type: Input
|
|
83
91
|
}], noVerticalScroll: [{
|
|
84
92
|
type: Input
|
|
@@ -96,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
96
104
|
type: HostBinding,
|
|
97
105
|
args: ['style.overflow-y']
|
|
98
106
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3Njcm9sbGJhci9zY3JvbGxiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUk1RTs7Ozs7Ozs7Ozs7R0FXRztBQVlILE1BQU0sT0FBTyxrQkFBa0I7SUFtRTNCOztPQUVHO0lBQ0gsWUFBb0IsV0FBb0M7UUFBcEMsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBMUN4RCxpREFBaUQ7UUFFakQscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBNEJ4QixjQUFjO1FBQ04sd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDTixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsY0FBYztRQUNOLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBSzRCLENBQUM7SUFyRTVELDREQUE0RDtJQUM1RCxJQUNJLGtCQUFrQixDQUFDLEtBQW1CO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxJQUNJLGdCQUFnQixDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxJQUNJLGFBQWEsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQU1ELGNBQWM7SUFDZCxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNJLFVBQVU7UUFDVixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLElBQ0ksVUFBVTtRQUNWLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFnQkQsOEJBQThCO0lBQzlCLE1BQU0sQ0FBQyxPQUF3QjtRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFZLFNBQVM7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7K0dBcEZRLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1ZQVJqQiw0QkFBNEI7MkZBUTdCLGtCQUFrQjtrQkFYOUIsU0FBUzsrQkFFSSxnQkFBZ0IsWUFDaEIsNEJBQTRCLFFBQ2hDO3dCQUNGLEtBQUssRUFBRSxjQUFjO3FCQUN4QixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO2lHQUszQyxrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBVUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBVU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS0YsU0FBUztzQkFEWixXQUFXO3VCQUFDLGVBQWU7Z0JBT3hCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBVzNCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmV4cG9ydCB0eXBlIFNjcm9sbGJhck92ZXJmbG93T3B0aW9ucyA9ICdhdXRvJyB8ICdzY3JvbGwnIHwgJ2hpZGRlbic7XG5cbi8qKlxuICogVGhlIHNjcm9sbGJhciBkaXJlY3RpdmUuXG4gKlxuICogQ2hpbGRyZW4gdXNhZ2U6XG4gKiBgYGBodG1sXG4gKiA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAqIDxkaXYgZmQtc2Nyb2xsYmFyIG5vVmVydGljYWxTY3JvbGw+XG4gKiA8ZGl2IGZkLXNjcm9sbGJhciBbbm9WZXJ0aWNhbFNjcm9sbF09XCJ0cnVlXCI+XG4gKiA8ZGl2IGZkLXNjcm9sbGJhciBub0hvcml6b250YWxTY3JvbGw+XG4gKiA8ZGl2IGZkLXNjcm9sbGJhciBbbm9Ib3Jpem9udGFsU2Nyb2xsXT1cInRydWVcIj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkLXNjcm9sbGJhcl0nLFxuICAgIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1zY3JvbGxiYXInXG4gICAgfSxcbiAgICBzdHlsZVVybHM6IFsnLi9zY3JvbGxiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbGJhckNvbXBvbmVudCB7XG4gICAgLyoqIFdoZXRoZXIgb3ZlcmZsb3cgaG9yaXpvbnRhbCBjb250ZW50IHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbm9Ib3Jpem9udGFsU2Nyb2xsKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbm9Ib3Jpem9udGFsU2Nyb2xsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IG5vSG9yaXpvbnRhbFNjcm9sbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vSG9yaXpvbnRhbFNjcm9sbDtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciBvdmVyZmxvdyB2ZXJ0aWNhbCBjb250ZW50IHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbm9WZXJ0aWNhbFNjcm9sbCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX25vVmVydGljYWxTY3JvbGwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgbm9WZXJ0aWNhbFNjcm9sbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vVmVydGljYWxTY3JvbGw7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgc2Nyb2xsYmFycyBzaG91bGQgYmUgdmlzaWJsZSBldmVuIGlmIGNvbnRlbnQgZml0cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhbHdheXNWaXNpYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYWx3YXlzVmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBhbHdheXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWx3YXlzVmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0byBmb3JjZSBhcHBseSB0YWJpbmRleCBhdHRyaWJ1dGUuICovXG4gICAgQElucHV0KClcbiAgICBvdmVycmlkZVRhYmluZGV4ID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBnZXQgX3RhYmluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVycmlkZVRhYmluZGV4ID8gMCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm92ZXJmbG93LXgnKVxuICAgIGdldCBfb3ZlcmZsb3dYKCk6IFNjcm9sbGJhck92ZXJmbG93T3B0aW9ucyB7XG4gICAgICAgIGlmICh0aGlzLm5vSG9yaXpvbnRhbFNjcm9sbCkge1xuICAgICAgICAgICAgcmV0dXJuICdoaWRkZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJmbG93O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdy15JylcbiAgICBnZXQgX292ZXJmbG93WSgpOiBTY3JvbGxiYXJPdmVyZmxvd09wdGlvbnMge1xuICAgICAgICBpZiAodGhpcy5ub1ZlcnRpY2FsU2Nyb2xsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2hpZGRlbic7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmZsb3c7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ub0hvcml6b250YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbm9WZXJ0aWNhbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbHdheXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgICAvKiogbWV0aG9kIHRvIGludm9rZSBzY3JvbGwgKi9cbiAgICBzY3JvbGwob3B0aW9uczogU2Nyb2xsVG9PcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGwob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfb3ZlcmZsb3coKTogU2Nyb2xsYmFyT3ZlcmZsb3dPcHRpb25zIHtcbiAgICAgICAgaWYgKHRoaXMuYWx3YXlzVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuICdzY3JvbGwnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICdhdXRvJztcbiAgICB9XG59XG4iXX0=
|
|
@@ -8,6 +8,7 @@ import { WizardContentComponent } from './wizard-content/wizard-content.componen
|
|
|
8
8
|
import { ACTIVE_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS, COMPLETED_STEP_STATUS } from './constants';
|
|
9
9
|
import { WIZARD } from './wizard-injection-token';
|
|
10
10
|
import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
|
|
11
|
+
import { ScrollbarComponent } from '@fundamental-ngx/core/scrollbar';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "@fundamental-ngx/core/dialog";
|
|
13
14
|
import * as i2 from "@angular/common";
|
|
@@ -298,6 +299,7 @@ export class WizardComponent {
|
|
|
298
299
|
});
|
|
299
300
|
this._setUpScrollListener();
|
|
300
301
|
}
|
|
302
|
+
this.scrollbar.scroll({ top: 0, behavior: 'smooth' });
|
|
301
303
|
}
|
|
302
304
|
/** @hidden */
|
|
303
305
|
_setUpScrollListener() {
|
|
@@ -494,7 +496,7 @@ WizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
494
496
|
provide: WIZARD,
|
|
495
497
|
useExisting: WizardComponent
|
|
496
498
|
}
|
|
497
|
-
], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-wizard:after,.fd-wizard:before{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__navigation:after,.fd-wizard__navigation:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_HeaderShadow);background:var(--sapObjectHeader_Background);border:0;box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);display:table;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:4rem;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:1rem 0 0;position:relative;table-layout:fixed;width:100%}.fd-wizard__progress-bar:after,.fd-wizard__progress-bar:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--lg,.fd-wizard__progress-bar--md{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-wrapper:after,.fd-wizard__step-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step{-webkit-box-sizing:border-box;-webkit-box-sizing:content-box;border:0;box-sizing:border-box;box-sizing:content-box;color:var(--sapTextColor);display:table-cell;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:10.5rem;padding:0;position:relative;vertical-align:top;width:100%}.fd-wizard__step:after,.fd-wizard__step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{background:var(--fdWizard_Current_Step_Background_Color);border:var(--fdWizard_Current_Step_Border);color:var(--fdWizard_Current_Step_Color);position:relative}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{-webkit-transition:all .125s ease-in;background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;bottom:-1rem;content:\"\";display:inline-block;height:var(--fdWizard_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{min-width:auto;width:.25rem}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}.fd-wizard__step--stacked:last-child[dir=rtl],[dir=rtl] .fd-wizard__step--stacked:last-child{padding-left:2.375rem;padding-right:0}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:first-child{z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-container:after,.fd-wizard__step-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container.is-focus,.fd-wizard__step-container:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-wizard__step-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 .1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right);min-height:2rem;min-width:2rem;padding:0;width:2rem}.fd-wizard__step-indicator:after,.fd-wizard__step-indicator:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-indicator[dir=rtl],[dir=rtl] .fd-wizard__step-indicator{margin-left:var(--fdWizard_Step_Indicator_Margin_Right);margin-right:.1875rem}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:inherit;border-radius:inherit;color:inherit;display:flex;font-size:inherit;font-size:var(--sapFontLargeSize);height:100%;justify-content:center;line-height:1}.fd-wizard__label-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:2rem;max-width:100%;overflow:hidden;padding:0}.fd-wizard__label-container:after,.fd-wizard__label-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{-webkit-line-clamp:1;max-height:1rem}.fd-wizard__label,.fd-wizard__label-container--optional .fd-wizard__label{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.fd-wizard__label{-webkit-box-sizing:border-box;-webkit-line-clamp:2;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-family:var(--fdWizard_Label_Font_Family);font-size:var(--sapFontSize);font-weight:400;font-weight:var(--fdWizard_Label_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;max-width:100%;padding:0}.fd-wizard__label:after,.fd-wizard__label:before{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{-webkit-box-sizing:border-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:-webkit-box;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:normal}.fd-wizard__optional-text:after,.fd-wizard__optional-text:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 1 auto;border:0;border-bottom:.0625rem solid var(--sapList_BorderColor);box-sizing:border-box;color:var(--sapTextColor);flex:1 1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:.5rem;max-width:100%;min-width:1rem;padding:0}.fd-wizard__connector:after,.fd-wizard__connector:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{-webkit-box-sizing:border-box;background:var(--sapBackgroundColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 0 0;width:100%}.fd-wizard__content:after,.fd-wizard__content:before{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--lg,.fd-wizard__content--md{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{-webkit-box-sizing:border-box;background-color:var(--fdWizard_Step_Content_Container_Background_Color);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding:var(--fdWizard_Step_Content_Container_Spacing)}.fd-wizard__step-content-container:after,.fd-wizard__step-content-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--lg,.fd-wizard__step-content-container--md{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0}.fd-wizard__next-step:after,.fd-wizard__next-step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--lg,.fd-wizard__next-step--md{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{bottom:3.5rem;position:absolute}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}.fd-scrollbar{max-height:100%;max-width:100%;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i5.ScrollbarComponent, selector: "[fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
499
|
+
], queries: [{ propertyName: "progressBar", first: true, predicate: WizardProgressBarDirective, descendants: true }, { propertyName: "steps", predicate: WizardStepComponent, descendants: true }, { propertyName: "wizardContent", predicate: WizardContentComponent }], viewQueries: [{ propertyName: "wrapperContainer", first: true, predicate: ["wrapperContainer"], descendants: true }, { propertyName: "scrollbar", first: true, predicate: ScrollbarComponent, descendants: true }], ngImport: i0, template: "<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n <div\n *ngIf=\"appendToWizard\"\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!appendToWizard\" cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n <div *ngFor=\"let contentTemplate of contentTemplates\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <ng-content></ng-content>\n</section>\n", styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-wizard{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-wizard:after,.fd-wizard:before{box-sizing:inherit;font-size:inherit}.fd-wizard__navigation{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__navigation:after,.fd-wizard__navigation:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapContent_HeaderShadow);background:var(--sapObjectHeader_Background);border:0;box-shadow:var(--sapContent_HeaderShadow);box-sizing:border-box;color:var(--sapTextColor);display:table;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:4rem;line-height:var(--sapContent_LineHeight);list-style-type:none;margin:0;padding:1rem 0 0;position:relative;table-layout:fixed;width:100%}.fd-wizard__progress-bar:after,.fd-wizard__progress-bar:before{box-sizing:inherit;font-size:inherit}.fd-wizard__progress-bar--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__progress-bar--lg,.fd-wizard__progress-bar--md{padding-left:2rem;padding-right:2rem}.fd-wizard__progress-bar--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__step-wrapper{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-wrapper:after,.fd-wizard__step-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step{-webkit-box-sizing:border-box;-webkit-box-sizing:content-box;border:0;box-sizing:border-box;box-sizing:content-box;color:var(--sapTextColor);display:table-cell;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:10.5rem;padding:0;position:relative;vertical-align:top;width:100%}.fd-wizard__step:after,.fd-wizard__step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__label{color:var(--fdWizard_Current_Step_Label_Color)}.fd-wizard__step--current .fd-wizard__step-indicator{background:var(--fdWizard_Current_Step_Background_Color);border:var(--fdWizard_Current_Step_Border);color:var(--fdWizard_Current_Step_Color);position:relative}.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--current .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Current_Step_Icon_Color)}.fd-wizard__step--current .fd-wizard__step-indicator:after{-webkit-transition:all .125s ease-in;background:var(--fdWizard_Selection_Bar_Background);border-radius:.125rem .125rem 0 0;bottom:-1rem;content:\"\";display:inline-block;height:var(--fdWizard_Selection_Bar_Height);left:-.1875rem;position:absolute;transition:all .125s ease-in;width:calc(100% + .375rem)}.fd-wizard__step--upcoming .fd-wizard__label,.fd-wizard__step--upcoming .fd-wizard__optional-text{color:var(--sapContent_LabelColor)}.fd-wizard__step--upcoming .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:.0625rem solid var(--sapList_BorderColor);color:var(--fdWizard_Upcoming_Step_Color)}.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Upcoming_Step_Icon_Color)}.fd-wizard__step--upcoming .fd-wizard__step-container{cursor:default;pointer-events:none}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__label{color:var(--fdWizard_Completed_Step_Label_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator{background:var(--sapObjectHeader_Background);border:var(--fdWizard_Completed_Step_Border);color:var(--fdWizard_Completed_Step_Color)}.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--upcoming.fd-wizard__step--completed .fd-wizard__step-indicator .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Completed_Step_Icon_Color)}.fd-wizard__step--no-label{min-width:4rem}.fd-wizard__step--no-label .fd-wizard__label-container{display:none}.fd-wizard__step--stacked-top.fd-wizard__step--stacked{min-width:4rem;width:4rem}.fd-wizard__step--stacked-top.fd-wizard__step--stacked .fd-wizard__connector{display:block;min-width:auto}.fd-wizard__step--stacked{min-width:auto;width:.25rem}.fd-wizard__step--stacked:last-child{padding-right:2.375rem}.fd-wizard__step--stacked:last-child[dir=rtl],[dir=rtl] .fd-wizard__step--stacked:last-child{padding-left:2.375rem;padding-right:0}.fd-wizard__step--stacked .fd-wizard__connector,.fd-wizard__step--stacked .fd-wizard__label-container{display:none}.fd-wizard__step--stacked.fd-wizard__step--upcoming:first-child{z-index:9}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(2){z-index:8}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(3){z-index:7}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(4){z-index:6}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(5){z-index:5}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(6){z-index:4}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(7){z-index:3}.fd-wizard__step--stacked.fd-wizard__step--upcoming:nth-child(8){z-index:2}.fd-wizard__step--active .fd-wizard__step-indicator{background:var(--sapActiveColor);border-color:var(--fdWizard_Active_Step_Border_Color);color:var(--fdWizard_Active_Step_Color)}.fd-wizard__step--active .fd-wizard__icon [class*=sap-icon],.fd-wizard__step--active .fd-wizard__icon[class*=sap-icon]{color:var(--fdWizard_Active_Step_Icon_Color)}.fd-wizard__step-container{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-wizard__step-container:after,.fd-wizard__step-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-container.is-focus,.fd-wizard__step-container:focus{outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-wizard__step-indicator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;border-radius:50%;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 0 0 .1875rem;margin-right:var(--fdWizard_Step_Indicator_Margin_Right);min-height:2rem;min-width:2rem;padding:0;width:2rem}.fd-wizard__step-indicator:after,.fd-wizard__step-indicator:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-indicator[dir=rtl],[dir=rtl] .fd-wizard__step-indicator{margin-left:var(--fdWizard_Step_Indicator_Margin_Right);margin-right:.1875rem}.fd-wizard__icon [class*=sap-icon],.fd-wizard__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:inherit;border-radius:inherit;color:inherit;display:flex;font-size:inherit;font-size:var(--sapFontLargeSize);height:100%;justify-content:center;line-height:1}.fd-wizard__label-container{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:2rem;max-width:100%;overflow:hidden;padding:0}.fd-wizard__label-container:after,.fd-wizard__label-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__label-container--optional .fd-wizard__label{-webkit-line-clamp:1;max-height:1rem}.fd-wizard__label,.fd-wizard__label-container--optional .fd-wizard__label{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:normal}.fd-wizard__label{-webkit-box-sizing:border-box;-webkit-line-clamp:2;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-family:var(--fdWizard_Label_Font_Family);font-size:var(--sapFontSize);font-weight:400;font-weight:var(--fdWizard_Label_Font_Weight);forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;max-width:100%;padding:0}.fd-wizard__label:after,.fd-wizard__label:before{box-sizing:inherit;font-size:inherit}.fd-wizard__optional-text{-webkit-box-sizing:border-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:-webkit-box;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:normal}.fd-wizard__optional-text:after,.fd-wizard__optional-text:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 1 auto;border:0;border-bottom:.0625rem solid var(--sapList_BorderColor);box-sizing:border-box;color:var(--sapTextColor);flex:1 1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:.5rem;max-width:100%;min-width:1rem;padding:0}.fd-wizard__connector:after,.fd-wizard__connector:before{box-sizing:inherit;font-size:inherit}.fd-wizard__connector--active{border-bottom-color:var(--fdWizard_Connector_Active_Border_Color)}.fd-wizard__connector--branching{border-bottom-style:dashed}.fd-wizard__content{-webkit-box-sizing:border-box;background:var(--sapBackgroundColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:1rem 0 0;width:100%}.fd-wizard__content:after,.fd-wizard__content:before{box-sizing:inherit;font-size:inherit}.fd-wizard__content--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__content--lg,.fd-wizard__content--md{padding-left:2rem;padding-right:2rem}.fd-wizard__content--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__content--solid{background:var(--fdWizard_Content_Solid_Background)}.fd-wizard__content--list{background:var(--fdWizard_Content_List_Background)}.fd-wizard__content--transparent{background:var(--fdWizard_Content_Transparent_Background)}.fd-wizard__step-content-container{-webkit-box-sizing:border-box;background-color:var(--fdWizard_Step_Content_Container_Background_Color);border:0;border-radius:var(--sapElement_BorderCornerRadius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding:var(--fdWizard_Step_Content_Container_Spacing)}.fd-wizard__step-content-container:after,.fd-wizard__step-content-container:before{box-sizing:inherit;font-size:inherit}.fd-wizard__step-content-container--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__step-content-container--lg,.fd-wizard__step-content-container--md{padding-left:2rem;padding-right:2rem}.fd-wizard__step-content-container--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0}.fd-wizard__next-step:after,.fd-wizard__next-step:before{box-sizing:inherit;font-size:inherit}.fd-wizard__next-step--sm{padding-left:1rem;padding-right:1rem}.fd-wizard__next-step--lg,.fd-wizard__next-step--md{padding-left:2rem;padding-right:2rem}.fd-wizard__next-step--xl{padding-left:3rem;padding-right:3rem}.fd-wizard__next-step--floating{bottom:3.5rem;position:absolute}.fd-wizard__label,.fd-wizard__optional-text{display:block;display:-webkit-box}.fd-wizard-container-wrapper{overflow:auto}@media (max-width: 599px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:1rem;padding-right:1rem}}@media (min-width: 600px) and (max-width: 1439px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:2rem;padding-right:2rem}}@media (min-width: 1440px){.fd-wizard--responsive-paddings .fd-wizard__content,.fd-wizard--responsive-paddings .fd-wizard__progress-bar{padding-left:3rem;padding-right:3rem}}.fd-wizard__progress-bar{z-index:1003}.fd-scrollbar{max-height:100%;max-width:100%;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ScrollSpyDirective, selector: "[fdScrollSpy]", inputs: ["trackedTags", "fireEmpty", "targetPercent", "targetOffset", "scrollSpyDisabled"], outputs: ["spyChange"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i5.ScrollbarComponent, selector: "[fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
498
500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: WizardComponent, decorators: [{
|
|
499
501
|
type: Component,
|
|
500
502
|
args: [{ selector: 'fd-wizard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -538,8 +540,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
538
540
|
}], wrapperContainer: [{
|
|
539
541
|
type: ViewChild,
|
|
540
542
|
args: ['wrapperContainer']
|
|
543
|
+
}], scrollbar: [{
|
|
544
|
+
type: ViewChild,
|
|
545
|
+
args: [ScrollbarComponent]
|
|
541
546
|
}], resizeHandler: [{
|
|
542
547
|
type: HostListener,
|
|
543
548
|
args: ['window:resize']
|
|
544
549
|
}] } });
|
|
545
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQWMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFD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c0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFTTixTQUFTO3NCQUZSLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUs5QixLQUFLO3NCQURKLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUszRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUt4QyxhQUFhO3NCQURaLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBd0M3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgV2l6YXJkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLXN0ZXAvd2l6YXJkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1jb250ZW50L3dpemFyZC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENVUlJFTlRfU1RFUF9TVEFUVVMsIFVQQ09NSU5HX1NURVBfU1RBVFVTLCBDT01QTEVURURfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXSVpBUkQgfSBmcm9tICcuL3dpemFyZC1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgRmRMYW5ndWFnZSwgRkRfTEFOR1VBR0UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuXG5leHBvcnQgY29uc3QgU1RFUF9NSU5fV0lEVEggPSAxNjg7XG5leHBvcnQgY29uc3QgU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQtdG9wJztcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1zdGFja2VkJztcbmV4cG9ydCBjb25zdCBTVEVQX05PX0xBQkVMX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tbm8tbGFiZWwnO1xuXG5leHBvcnQgY29uc3QgV0laQVJEX05BVklHQVRJT05fQ0xBU1MgPSAnZmQtd2l6YXJkX19uYXZpZ2F0aW9uJztcbmV4cG9ydCBjb25zdCBXSVpBUkRfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmRfX2NvbnRlbnQnO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUyA9ICdmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXInO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MgPSAnZmQtd2l6YXJkLXRhbGwtY29udGVudCc7XG5leHBvcnQgY29uc3QgU0hFTExCQVJfQ0xBU1MgPSAnZmQtc2hlbGxiYXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mb290ZXInO1xuZXhwb3J0IGNvbnN0IEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MgPSAnZmQtYmFyLS1mbG9hdGluZy1mb290ZXInO1xuXG5leHBvcnQgbGV0IF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcDtcbmV4cG9ydCBsZXQgdGltZXI6IGFueSA9IG51bGw7XG5leHBvcnQgY29uc3QgaGFuZGxlVGltZW91dFJlZmVyZW5jZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGltZXIgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICB9XG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gZmFsc2U7XG4gICAgfSwgMTUwKTtcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtd2l6YXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBXSVpBUkQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogV2l6YXJkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JlZ2lvbidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGEgc3VtbWFyeSBzdGVwLiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogYWRkaW5nIGFyaWEgbGFiZWwgdG8gdGhlIGNvbXBvbmVudFxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgaXMgYmVpbmcgdHJhbnNsYXRlZCBieSBpMThuIHBhY2thZ2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc3RlcHM6IFF1ZXJ5TGlzdDxXaXphcmRTdGVwQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZSlcbiAgICBwcm9ncmVzc0JhcjogV2l6YXJkUHJvZ3Jlc3NCYXJEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oV2l6YXJkQ29udGVudENvbXBvbmVudClcbiAgICB3aXphcmRDb250ZW50OiBXaXphcmRDb250ZW50Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd3cmFwcGVyQ29udGFpbmVyJylcbiAgICB3cmFwcGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgX2xhbmd1YWdlJDogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge1xuICAgICAgICBjb25zdCBzdWIgPSBfbGFuZ3VhZ2UkLnN1YnNjcmliZSgobGFuZykgPT4ge1xuICAgICAgICAgICAgLy8gc2V0IGFyaWFMYWJlbCBvbmx5IGlmIGl0J3Mgbm90IGFwcGxpZWQgbWFudWFsbHlcbiAgICAgICAgICAgIHRoaXMuYXJpYUxhYmVsID8/PSB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUobGFuZywgJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChzdWIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBhIHNtYWxsIHN0ZXAgd2FzIGZvdW5kLCBnZXQgdGhlIHN0ZXAgd2l0aCBhIHZpc2libGUgbGFiZWwgZnVydGhlc3QgYXdheSBmcm9tIHRoZSBjdXJyZW50IHN0ZXAgYW5kIGhpZGUgdGhlIGxhYmVsXG4gICAgICAgIGxldCBzdGVwc0FycmF5ID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIHN0ZXBzQXJyYXkgPSBzdGVwc0FycmF5LmZpbHRlcigoc3RlcCkgPT4gIXN0ZXAuaGFzTGFiZWwoU1RFUF9OT19MQUJFTF9DTEFTUykpO1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHN0ZXBzQXJyYXkucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXBzQXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRTdGVwSW5kZXggPSAwLFxuICAgICAgICAgICAgICAgIHN0ZXBUb0hpZGU7XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID0gc3RlcHNBcnJheS5pbmRleE9mKGN1cnJlbnRTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPiAoc3RlcHNBcnJheS5sZW5ndGggLSAxKSAvIDJcbiAgICAgICAgICAgICAgICA/IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVswXSlcbiAgICAgICAgICAgICAgICA6IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVtzdGVwc0FycmF5Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfTk9fTEFCRUxfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX0NMQVNTKTtcbiAgICAgICAgICAgIGlmIChzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPCBjdXJyZW50U3RlcEluZGV4ICYmICF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcFRvSGlkZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcFRvSGlkZSksIDAsIHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPiBjdXJyZW50U3RlcEluZGV4ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQuaW5jbHVkZXMoc3RlcFRvSGlkZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQudW5zaGlmdChzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U3RhY2tlZFRvcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcC5zdGVwSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4ICsgMV0gPT09IGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcCkgJiYgdGhpcy5zdGFja2VkU3RlcHNMZWZ0Lmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZShpbmRleCwgMCwgc3RlcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zdGFja2VkSXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNldFN0ZXBDbGFzc2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfTk9fTEFCRUxfQ0xBU1MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dTdW1tYXJ5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFRlbXBsYXRlcygpO1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50U3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRGaW5hbFN0ZXAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhc3ROb25TdW1tYXJ5U3RlcCA9IHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpO1xuICAgICAgICBpZiAobGFzdE5vblN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmxhc3QucmVtb3ZlRnJvbURvbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vblN1bW1hcnlTdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdE5vblN1bW1hcnlTdGVwLnNldEZpbmFsU3RlcCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvd1N1bW1hcnkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGVwLmlzU3VtbWFyeSkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN1bW1hcnkgPSB0aGlzLnN0ZXBzLmZpbmQoKHN0ZXApID0+IHN0ZXAuaXNTdW1tYXJ5KTtcbiAgICAgICAgaWYgKHN1bW1hcnkpIHtcbiAgICAgICAgICAgIHN1bW1hcnkuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3VtbWFyeS5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXJyZW50U3RlcCgpOiBXaXphcmRTdGVwQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuZmlsdGVyKFxuICAgICAgICAgICAgKHN0ZXApID0+IHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBBQ1RJVkVfU1RFUF9TVEFUVVNcbiAgICAgICAgKVswXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk6IHZvaWQge1xuICAgICAgICAvLyBBZGQgc21hbGwgZGVsYXkgZm9yIGVsZW1lbnRzIHRvIHJlbmRlciBhcHByb3ByaWF0ZWx5LlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNSaWdodCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zdGVwcy5maXJzdC5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0U3RlcENsYXNzZXMoKTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLl9hbnlTdGVwSXNUb29OYXJyb3coKSAmJiBpIDwgdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbnlTdGVwSXNUb29OYXJyb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnNvbWUoKHN0ZXApID0+IHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwQ2xpY2tlZChjbGlja2VkU3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWNsaWNrZWRTdGVwKSB7XG4gICAgICAgICAgICBjbGlja2VkU3RlcCA9IHRoaXMuc3RlcHMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xpY2tlZFN0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2YoY2xpY2tlZFN0ZXApO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmIChzdGVwID09PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5lbWl0KENVUlJFTlRfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwICE9PSBjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXApIDwgY2xpY2tlZFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDT01QTEVURURfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA+IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBVUENPTUlOR19TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChVUENPTUlOR19TVEVQX1NUQVRVUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuYmx1cigpOyAvLyB0aGlzIGZ1bmN0aW9uIGNhbiBmb2N1cyBzdGVwIGluZGljYXRvcnMgdW5kZXNpcmFibHlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxhc3QuaXNTdW1tYXJ5ICYmICF0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW3RoaXMuc3RlcHMubGVuZ3RoIC0gMl07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCJcbiAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgZmRTY3JvbGxTcHlcbiAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgIChzcHlDaGFuZ2UpPVwic2Nyb2xsU3B5Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWFwcGVuZFRvV2l6YXJkXCIgY2RrU2Nyb2xsYWJsZSBjbGFzcz1cImZkLXdpemFyZC1jb250YWluZXItd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnRUZW1wbGF0ZSBvZiBjb250ZW50VGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvd2l6YXJkL3dpemFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQWMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7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QUFJLEVBQUUsUUFBUTtxQkFDakI7OzBCQWlGSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzRDQTFFYixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFTTixTQUFTO3NCQUZSLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUs5QixLQUFLO3NCQURKLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUszRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUt4QyxhQUFhO3NCQURaLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSzdCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBd0M3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgV2l6YXJkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vd2l6YXJkLXN0ZXAvd2l6YXJkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1jb250ZW50L3dpemFyZC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENVUlJFTlRfU1RFUF9TVEFUVVMsIFVQQ09NSU5HX1NURVBfU1RBVFVTLCBDT01QTEVURURfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXSVpBUkQgfSBmcm9tICcuL3dpemFyZC1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgRmRMYW5ndWFnZSwgRkRfTEFOR1VBR0UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2Nyb2xsYmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvV2l6YXJkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgc2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtd2l6YXJkLS1yZXNwb25zaXZlLXBhZGRpbmdzJylcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgYSBzdW1tYXJ5IHN0ZXAuICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVN1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBhZGRpbmcgYXJpYSBsYWJlbCB0byB0aGUgY29tcG9uZW50XG4gICAgICogSWYgbm90IHByb3ZpZGVkLCBpcyBiZWluZyB0cmFuc2xhdGVkIGJ5IGkxOG4gcGFja2FnZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFNjcm9sbGJhckNvbXBvbmVudClcbiAgICBzY3JvbGxiYXI6IFNjcm9sbGJhckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgX2xhbmd1YWdlJDogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlhbG9nQm9keUNvbXBvbmVudDogRGlhbG9nQm9keUNvbXBvbmVudFxuICAgICkge1xuICAgICAgICBjb25zdCBzdWIgPSBfbGFuZ3VhZ2UkLnN1YnNjcmliZSgobGFuZykgPT4ge1xuICAgICAgICAgICAgLy8gc2V0IGFyaWFMYWJlbCBvbmx5IGlmIGl0J3Mgbm90IGFwcGxpZWQgbWFudWFsbHlcbiAgICAgICAgICAgIHRoaXMuYXJpYUxhYmVsID8/PSB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUobGFuZywgJ2NvcmVXaXphcmQuYXJpYUxhYmVsJyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChzdWIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgcmVzaXplSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkV2lkdGggPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoIXRoaXMuX3ByZXZpb3VzV2lkdGggfHwgd2l6YXJkV2lkdGggPD0gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fd2l6YXJkU2hyaW5raW5nKCk7XG4gICAgICAgIH0gZWxzZSBpZiAod2l6YXJkV2lkdGggPiB0aGlzLl9wcmV2aW91c1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzV2lkdGggPSB3aXphcmRXaWR0aDtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbnMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBmaXhlcyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZW50VGVtcGxhdGVzKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3NldHVwU3RlcEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlVGltZW91dFJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwcml2YXRlXG4gICAgICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpemFyZCBjb250ZW50IGJ5IGxvb2tpbmcgZm9yIHRoZSBkb2N1bWVudCdzIHNoZWxsYmFyLCB0aGUgd2l6YXJkXG4gICAgICogbmF2aWdhdGlvbiBhbmQgdGhlIHdpemFyZCBmb290ZXIsIGFuZCBjYWxjdWxhdGluZyB0aGUgaGVpZ2h0IGJhc2VkIG9uIHRoZWlyIHByZXNlbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpemFyZE5hdkhlaWdodCA9IDA7XG4gICAgICAgIGNvbnN0IHNoZWxsYmFySGVpZ2h0ID0gdGhpcy5fZ2V0U2hlbGxiYXJIZWlnaHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpIHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICB3aXphcmROYXZIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmROYXZIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aXphcmRGb290ZXJIZWlnaHQgPSB0aGlzLl9nZXRXaXphcmRGb290ZXJIZWlnaHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nT2Zmc2V0ID0gdGhpcy5fZ2V0RGlhbG9nT2Zmc2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIHNoZWxsYmFySGVpZ2h0ICsgd2l6YXJkTmF2SGVpZ2h0ICsgd2l6YXJkRm9vdGVySGVpZ2h0ICsgZGlhbG9nT2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0U2hlbGxiYXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuJyArIFNIRUxMQkFSX0NMQVNTKT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRXaXphcmROYXZIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9OQVZJR0FUSU9OX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldFZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZEZvb3RlckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GT09URVJfQ0xBU1MpLm9mZnNldEhlaWdodDtcbiAgICAgICAgfSBlbHNlIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RGlhbG9nT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbGJhci5zY3JvbGwoeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgYSBzbWFsbCBzdGVwIHdhcyBmb3VuZCwgZ2V0IHRoZSBzdGVwIHdpdGggYSB2aXNpYmxlIGxhYmVsIGZ1cnRoZXN0IGF3YXkgZnJvbSB0aGUgY3VycmVudCBzdGVwIGFuZCBoaWRlIHRoZSBsYWJlbFxuICAgICAgICBsZXQgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBzdGVwc0FycmF5ID0gc3RlcHNBcnJheS5maWx0ZXIoKHN0ZXApID0+ICFzdGVwLmhhc0xhYmVsKFNURVBfTk9fTEFCRUxfQ0xBU1MpKTtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzdGVwc0FycmF5LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwc0FycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gMCxcbiAgICAgICAgICAgICAgICBzdGVwVG9IaWRlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IHN0ZXBzQXJyYXkuaW5kZXhPZihjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID4gKHN0ZXBzQXJyYXkubGVuZ3RoIC0gMSkgLyAyXG4gICAgICAgICAgICAgICAgPyAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbMF0pXG4gICAgICAgICAgICAgICAgOiAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbc3RlcHNBcnJheS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBpZiAoc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpIDwgY3VycmVudFN0ZXBJbmRleCAmJiAhdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZSh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXBUb0hpZGUpLCAwLCBzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpID4gY3VycmVudFN0ZXBJbmRleCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LnVuc2hpZnQoc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFN0YWNrZWRUb3AoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcEluZGljYXRvcikge1xuICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleCArIDFdID09PSBjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXApICYmIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UoaW5kZXgsIDAsIHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc3RhY2tlZEl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zaG93U3VtbWFyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0ZXBDbGFzc2VzKCk7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fYW55U3RlcElzVG9vTmFycm93KCkgJiYgaSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW55U3RlcElzVG9vTmFycm93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcENsaWNrZWQoY2xpY2tlZFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgY2xpY2tlZFN0ZXAgPSB0aGlzLnN0ZXBzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWNrZWRTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKGNsaWNrZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcCA9PT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDVVJSRU5UX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCAhPT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA8IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ09NUExFVEVEX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPiBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoVVBDT01JTkdfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gZm9jdXMgc3RlcCBpbmRpY2F0b3JzIHVuZGVzaXJhYmx5XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLnN0ZXBzLmxlbmd0aCAtIDJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNjcm9sbFNweUNoYW5nZSgkZXZlbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5fc3RlcElkLnRvU3RyaW5nKCkgPT09ICRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLl9zdGVwSWQgPCBwYXJzZUludCgkZXZlbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uaWQsIDEwKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENPTVBMRVRFRF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IFVQQ09NSU5HX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJmZC13aXphcmRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC13aXphcmQtbmF2aWdhdGlvblwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICBjbGFzcz1cImZkLXdpemFyZC1jb250YWluZXItd3JhcHBlclwiXG4gICAgICAgICN3cmFwcGVyQ29udGFpbmVyXG4gICAgICAgIGZkU2Nyb2xsU3B5XG4gICAgICAgIGNka1Njcm9sbGFibGVcbiAgICAgICAgW3RyYWNrZWRUYWdzXT1cIlsnZGl2J11cIlxuICAgICAgICAoc3B5Q2hhbmdlKT1cInNjcm9sbFNweUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgZmQtc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFhcHBlbmRUb1dpemFyZFwiIGNka1Njcm9sbGFibGUgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NlY3Rpb24+XG4iXX0=
|
|
@@ -16,7 +16,11 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
class ScrollbarComponent {
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
*/
|
|
22
|
+
constructor(_elementRef) {
|
|
23
|
+
this._elementRef = _elementRef;
|
|
20
24
|
/** Whether to force apply tabindex attribute. */
|
|
21
25
|
this.overrideTabindex = true;
|
|
22
26
|
/** @hidden */
|
|
@@ -65,6 +69,10 @@ class ScrollbarComponent {
|
|
|
65
69
|
}
|
|
66
70
|
return this._overflow;
|
|
67
71
|
}
|
|
72
|
+
/** method to invoke scroll */
|
|
73
|
+
scroll(options) {
|
|
74
|
+
this._elementRef.nativeElement.scroll(options);
|
|
75
|
+
}
|
|
68
76
|
/** @hidden */
|
|
69
77
|
get _overflow() {
|
|
70
78
|
if (this.alwaysVisible) {
|
|
@@ -73,14 +81,14 @@ class ScrollbarComponent {
|
|
|
73
81
|
return 'auto';
|
|
74
82
|
}
|
|
75
83
|
}
|
|
76
|
-
ScrollbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
+
ScrollbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
77
85
|
ScrollbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ScrollbarComponent, selector: "[fd-scrollbar]", inputs: { noHorizontalScroll: "noHorizontalScroll", noVerticalScroll: "noVerticalScroll", alwaysVisible: "alwaysVisible", overrideTabindex: "overrideTabindex" }, host: { properties: { "attr.tabindex": "this._tabindex", "style.overflow-x": "this._overflowX", "style.overflow-y": "this._overflowY" }, classAttribute: "fd-scrollbar" }, ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-scrollbar{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:auto;padding:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
78
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollbarComponent, decorators: [{
|
|
79
87
|
type: Component,
|
|
80
88
|
args: [{ selector: '[fd-scrollbar]', template: ` <ng-content></ng-content>`, host: {
|
|
81
89
|
class: 'fd-scrollbar'
|
|
82
90
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["/*!\n * Fundamental Library Styles v0.26.0-rc.45\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-scrollbar{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:auto;padding:0;scrollbar-color:var(--fdScrollbar_Thumb_Color) var(--fdScrollbar_Track_Color)}.fd-scrollbar:after,.fd-scrollbar:before{box-sizing:inherit;font-size:inherit}.fd-scrollbar.is-focus,.fd-scrollbar:focus{outline:none;z-index:5}.fd-scrollbar::-webkit-scrollbar{height:var(--fdScrollbar_Dimension);width:var(--fdScrollbar_Dimension)}.fd-scrollbar::-webkit-scrollbar-corner,.fd-scrollbar::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color)}.fd-scrollbar::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color);background-color:transparent;border:var(--fdScrollbar_Thumb_Offset) solid transparent;border-radius:calc(var(--fdScrollbar_Thumb_Border_Radius) - var(--fdScrollbar_Thumb_Offset));box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Color)}.fd-scrollbar::-webkit-scrollbar-thumb:active,.fd-scrollbar::-webkit-scrollbar-thumb:hover{box-shadow:inset 0 0 0 var(--fdScrollbar_Dimension) var(--fdScrollbar_Thumb_Hover_Color)}.fd-scrollbar--container::-webkit-scrollbar-corner,.fd-scrollbar--container::-webkit-scrollbar-track{background-color:var(--fdScrollbar_Track_Color);border-radius:0 var(--fdScrollbar_Border_Radius) var(--fdScrollbar_Border_Radius) 0}.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-corner,.fd-scrollbar--container[dir=rtl]::-webkit-scrollbar-track,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-corner,[dir=rtl] .fd-scrollbar--container::-webkit-scrollbar-track{border-radius:var(--fdScrollbar_Border_Radius) 0 0 var(--fdScrollbar_Border_Radius)}\n"] }]
|
|
83
|
-
}], propDecorators: { noHorizontalScroll: [{
|
|
91
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { noHorizontalScroll: [{
|
|
84
92
|
type: Input
|
|
85
93
|
}], noVerticalScroll: [{
|
|
86
94
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-scrollbar.mjs","sources":["../../../../libs/core/src/lib/scrollbar/scrollbar.component.ts","../../../../libs/core/src/lib/scrollbar/scrollbar.module.ts","../../../../libs/core/src/lib/scrollbar/fundamental-ngx-core-scrollbar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport type ScrollbarOverflowOptions = 'auto' | 'scroll' | 'hidden';\n\n/**\n * The scrollbar directive.\n *\n * Children usage:\n * ```html\n * <div fd-scrollbar>\n * <div fd-scrollbar noVerticalScroll>\n * <div fd-scrollbar [noVerticalScroll]=\"true\">\n * <div fd-scrollbar noHorizontalScroll>\n * <div fd-scrollbar [noHorizontalScroll]=\"true\">\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-scrollbar]',\n template: ` <ng-content></ng-content>`,\n host: {\n class: 'fd-scrollbar'\n },\n styleUrls: ['./scrollbar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollbarComponent {\n /** Whether overflow horizontal content should be hidden. */\n @Input()\n set noHorizontalScroll(value: BooleanInput) {\n this._noHorizontalScroll = coerceBooleanProperty(value);\n }\n get noHorizontalScroll(): boolean {\n return this._noHorizontalScroll;\n }\n\n /** Whether overflow vertical content should be hidden. */\n @Input()\n set noVerticalScroll(value: BooleanInput) {\n this._noVerticalScroll = coerceBooleanProperty(value);\n }\n get noVerticalScroll(): boolean {\n return this._noVerticalScroll;\n }\n\n /** Whether scrollbars should be visible even if content fits. */\n @Input()\n set alwaysVisible(value: BooleanInput) {\n this._alwaysVisible = coerceBooleanProperty(value);\n }\n get alwaysVisible(): boolean {\n return this._alwaysVisible;\n }\n\n /** Whether to force apply tabindex attribute. */\n @Input()\n overrideTabindex = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number | null {\n return this.overrideTabindex ? 0 : null;\n }\n\n /** @hidden */\n @HostBinding('style.overflow-x')\n get _overflowX(): ScrollbarOverflowOptions {\n if (this.noHorizontalScroll) {\n return 'hidden';\n }\n\n return this._overflow;\n }\n\n /** @hidden */\n @HostBinding('style.overflow-y')\n get _overflowY(): ScrollbarOverflowOptions {\n if (this.noVerticalScroll) {\n return 'hidden';\n }\n\n return this._overflow;\n }\n\n /** @hidden */\n private _noHorizontalScroll = false;\n\n /** @hidden */\n private _noVerticalScroll = false;\n\n /** @hidden */\n private _alwaysVisible = false;\n\n /** @hidden */\n private get _overflow(): ScrollbarOverflowOptions {\n if (this.alwaysVisible) {\n return 'scroll';\n }\n\n return 'auto';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ScrollbarComponent } from './scrollbar.component';\n\n@NgModule({\n declarations: [ScrollbarComponent],\n imports: [CommonModule],\n exports: [ScrollbarComponent]\n})\nexport class ScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;AAKA;;;;;;;;;;;AAWG;MAYU,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-scrollbar.mjs","sources":["../../../../libs/core/src/lib/scrollbar/scrollbar.component.ts","../../../../libs/core/src/lib/scrollbar/scrollbar.module.ts","../../../../libs/core/src/lib/scrollbar/fundamental-ngx-core-scrollbar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, Input, ViewEncapsulation } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport type ScrollbarOverflowOptions = 'auto' | 'scroll' | 'hidden';\n\n/**\n * The scrollbar directive.\n *\n * Children usage:\n * ```html\n * <div fd-scrollbar>\n * <div fd-scrollbar noVerticalScroll>\n * <div fd-scrollbar [noVerticalScroll]=\"true\">\n * <div fd-scrollbar noHorizontalScroll>\n * <div fd-scrollbar [noHorizontalScroll]=\"true\">\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-scrollbar]',\n template: ` <ng-content></ng-content>`,\n host: {\n class: 'fd-scrollbar'\n },\n styleUrls: ['./scrollbar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScrollbarComponent {\n /** Whether overflow horizontal content should be hidden. */\n @Input()\n set noHorizontalScroll(value: BooleanInput) {\n this._noHorizontalScroll = coerceBooleanProperty(value);\n }\n get noHorizontalScroll(): boolean {\n return this._noHorizontalScroll;\n }\n\n /** Whether overflow vertical content should be hidden. */\n @Input()\n set noVerticalScroll(value: BooleanInput) {\n this._noVerticalScroll = coerceBooleanProperty(value);\n }\n get noVerticalScroll(): boolean {\n return this._noVerticalScroll;\n }\n\n /** Whether scrollbars should be visible even if content fits. */\n @Input()\n set alwaysVisible(value: BooleanInput) {\n this._alwaysVisible = coerceBooleanProperty(value);\n }\n get alwaysVisible(): boolean {\n return this._alwaysVisible;\n }\n\n /** Whether to force apply tabindex attribute. */\n @Input()\n overrideTabindex = true;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number | null {\n return this.overrideTabindex ? 0 : null;\n }\n\n /** @hidden */\n @HostBinding('style.overflow-x')\n get _overflowX(): ScrollbarOverflowOptions {\n if (this.noHorizontalScroll) {\n return 'hidden';\n }\n\n return this._overflow;\n }\n\n /** @hidden */\n @HostBinding('style.overflow-y')\n get _overflowY(): ScrollbarOverflowOptions {\n if (this.noVerticalScroll) {\n return 'hidden';\n }\n\n return this._overflow;\n }\n\n /** @hidden */\n private _noHorizontalScroll = false;\n\n /** @hidden */\n private _noVerticalScroll = false;\n\n /** @hidden */\n private _alwaysVisible = false;\n\n /**\n * @hidden\n */\n constructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n /** method to invoke scroll */\n scroll(options: ScrollToOptions): void {\n this._elementRef.nativeElement.scroll(options);\n }\n\n /** @hidden */\n private get _overflow(): ScrollbarOverflowOptions {\n if (this.alwaysVisible) {\n return 'scroll';\n }\n\n return 'auto';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ScrollbarComponent } from './scrollbar.component';\n\n@NgModule({\n declarations: [ScrollbarComponent],\n imports: [CommonModule],\n exports: [ScrollbarComponent]\n})\nexport class ScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|