@fundamental-ngx/btp 0.46.2-rc.8 → 0.47.0-rc.0

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.
Files changed (36) hide show
  1. package/button/button-type-guard.d.ts +15 -0
  2. package/button/index.d.ts +2 -0
  3. package/button/nested-button.directive.d.ts +15 -0
  4. package/button/tool-header-button.directive.d.ts +8 -0
  5. package/esm2022/button/button-type-guard.mjs +25 -0
  6. package/esm2022/button/fundamental-ngx-btp-button.mjs +5 -0
  7. package/esm2022/button/index.mjs +3 -0
  8. package/esm2022/button/nested-button.directive.mjs +31 -0
  9. package/esm2022/button/tool-header-button.directive.mjs +22 -0
  10. package/esm2022/navigation/navigation-content-start.component.mjs +1 -2
  11. package/esm2022/navigation/navigation-list/navigation-list-item.component.mjs +6 -4
  12. package/esm2022/navigation/navigation.component.mjs +3 -3
  13. package/esm2022/navigation-menu/lib/navigation-menu.component.mjs +2 -2
  14. package/esm2022/search-field/search-field.component.mjs +4 -3
  15. package/esm2022/tool-header/components/tool-header/tool-header.component.mjs +6 -6
  16. package/esm2022/tool-header/components/tool-header-product-switch.component.mjs +5 -7
  17. package/esm2022/tool-header/index.mjs +1 -2
  18. package/esm2022/tool-layout/tool-layout.component.mjs +2 -2
  19. package/fesm2022/fundamental-ngx-btp-button.mjs +79 -0
  20. package/fesm2022/fundamental-ngx-btp-button.mjs.map +1 -0
  21. package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs +2 -2
  22. package/fesm2022/fundamental-ngx-btp-navigation-menu.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-btp-navigation.mjs +7 -6
  24. package/fesm2022/fundamental-ngx-btp-navigation.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-btp-search-field.mjs +3 -2
  26. package/fesm2022/fundamental-ngx-btp-search-field.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-btp-tool-header.mjs +10 -59
  28. package/fesm2022/fundamental-ngx-btp-tool-header.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-btp-tool-layout.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-btp-tool-layout.mjs.map +1 -1
  31. package/fundamental-ngx-btp-v0.47.0-rc.0.tgz +0 -0
  32. package/package.json +9 -3
  33. package/tool-header/index.d.ts +0 -1
  34. package/esm2022/tool-header/directives/tool-header-button.directive.mjs +0 -51
  35. package/fundamental-ngx-btp-v0.46.2-rc.8.tgz +0 -0
  36. package/tool-header/directives/tool-header-button.directive.d.ts +0 -22
@@ -0,0 +1,15 @@
1
+ import { OnChanges, OnInit } from '@angular/core';
2
+ import { ButtonComponent } from '@fundamental-ngx/core/button';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class ButtonTypeGuard implements OnInit, OnChanges {
5
+ /** Type of the button. */
6
+ abstract fdType: string;
7
+ /** @hidden */
8
+ protected _buttonComponent: ButtonComponent;
9
+ /** @hidden */
10
+ ngOnInit(): void;
11
+ /** @hidden */
12
+ ngOnChanges(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ButtonTypeGuard, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ButtonTypeGuard, never, never, {}, {}, never, never, false, never>;
15
+ }
@@ -0,0 +1,2 @@
1
+ export * from './nested-button.directive';
2
+ export * from './tool-header-button.directive';
@@ -0,0 +1,15 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { OnChanges } from '@angular/core';
3
+ import { ButtonTypeGuard } from './button-type-guard';
4
+ import * as i0 from "@angular/core";
5
+ export declare class NestedButtonDirective extends ButtonTypeGuard implements OnChanges {
6
+ /** Type of the button. In case of fdbNestedButton it is always a `nested` */
7
+ fdType: 'nested' | 'nested-square';
8
+ /** Whether the button should have squared form */
9
+ square: BooleanInput;
10
+ /** @hidden */
11
+ ngOnChanges(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<NestedButtonDirective, never>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NestedButtonDirective, "[fd-button][fdbNestedButton]", never, { "fdType": { "alias": "fdType"; "required": false; }; "square": { "alias": "square"; "required": false; }; }, {}, never, never, true, never>;
14
+ static ngAcceptInputType_square: any;
15
+ }
@@ -0,0 +1,8 @@
1
+ import { ButtonTypeGuard } from './button-type-guard';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ToolHeaderButtonDirective extends ButtonTypeGuard {
4
+ /** Type of the button. In case of fdbToolHeaderButton it is always a `tool-header` */
5
+ fdType: 'tool-header';
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToolHeaderButtonDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ToolHeaderButtonDirective, "[fd-button][fdbToolHeaderButton]", never, { "fdType": { "alias": "fdType"; "required": false; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,25 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { FD_BUTTON_COMPONENT } from '@fundamental-ngx/core/button';
3
+ import * as i0 from "@angular/core";
4
+ export class ButtonTypeGuard {
5
+ constructor() {
6
+ /** @hidden */
7
+ this._buttonComponent = inject(FD_BUTTON_COMPONENT, { host: true });
8
+ }
9
+ /** @hidden */
10
+ ngOnInit() {
11
+ this._buttonComponent.fdType = this.fdType;
12
+ this._buttonComponent.buildComponentCssClass();
13
+ }
14
+ /** @hidden */
15
+ ngOnChanges() {
16
+ this._buttonComponent.fdType = this.fdType;
17
+ this._buttonComponent.buildComponentCssClass();
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ButtonTypeGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ButtonTypeGuard, usesOnChanges: true, ngImport: i0 }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ButtonTypeGuard, decorators: [{
23
+ type: Directive
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXR5cGUtZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2J0cC9idXR0b24vYnV0dG9uLXR5cGUtZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHcEYsTUFBTSxPQUFnQixlQUFlO0lBRHJDO1FBS0ksY0FBYztRQUNKLHFCQUFnQixHQUFHLE1BQU0sQ0FBa0IsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQWE3RjtJQVhHLGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBYSxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQWEsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzhHQWpCaUIsZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQURwQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIE9uQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQsIEZEX0JVVFRPTl9DT01QT05FTlQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQnV0dG9uVHlwZUd1YXJkIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiBUeXBlIG9mIHRoZSBidXR0b24uICovXG4gICAgYWJzdHJhY3QgZmRUeXBlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfYnV0dG9uQ29tcG9uZW50ID0gaW5qZWN0PEJ1dHRvbkNvbXBvbmVudD4oRkRfQlVUVE9OX0NPTVBPTkVOVCwgeyBob3N0OiB0cnVlIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uQ29tcG9uZW50LmZkVHlwZSA9IHRoaXMuZmRUeXBlIGFzIGFueTtcbiAgICAgICAgdGhpcy5fYnV0dG9uQ29tcG9uZW50LmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9idXR0b25Db21wb25lbnQuZmRUeXBlID0gdGhpcy5mZFR5cGUgYXMgYW55O1xuICAgICAgICB0aGlzLl9idXR0b25Db21wb25lbnQuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWJ0cC1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2J0cC9idXR0b24vZnVuZGFtZW50YWwtbmd4LWJ0cC1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './nested-button.directive';
2
+ export * from './tool-header-button.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2J0cC9idXR0b24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZXN0ZWQtYnV0dG9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2wtaGVhZGVyLWJ1dHRvbi5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,31 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { Directive, Input } from '@angular/core';
3
+ import { ButtonTypeGuard } from './button-type-guard';
4
+ import * as i0 from "@angular/core";
5
+ export class NestedButtonDirective extends ButtonTypeGuard {
6
+ constructor() {
7
+ super(...arguments);
8
+ /** Type of the button. In case of fdbNestedButton it is always a `nested` */
9
+ this.fdType = 'nested';
10
+ }
11
+ /** @hidden */
12
+ ngOnChanges() {
13
+ this.fdType = this.square ? 'nested-square' : 'nested';
14
+ super.ngOnChanges();
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NestedButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "16.2.7", type: NestedButtonDirective, isStandalone: true, selector: "[fd-button][fdbNestedButton]", inputs: { fdType: "fdType", square: ["square", "square", coerceBooleanProperty] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NestedButtonDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[fd-button][fdbNestedButton]',
23
+ standalone: true
24
+ }]
25
+ }], propDecorators: { fdType: [{
26
+ type: Input
27
+ }], square: [{
28
+ type: Input,
29
+ args: [{ transform: coerceBooleanProperty }]
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2J0cC9idXR0b24vbmVzdGVkLWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFKMUQ7O1FBS0ksNkVBQTZFO1FBRTdFLFdBQU0sR0FBK0IsUUFBaUIsQ0FBQztLQVcxRDtJQUxHLGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUN2RCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs4R0FiUSxxQkFBcUI7a0dBQXJCLHFCQUFxQix5SEFNVixxQkFBcUI7OzJGQU5oQyxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUlHLE1BQU07c0JBREwsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvblR5cGVHdWFyZCB9IGZyb20gJy4vYnV0dG9uLXR5cGUtZ3VhcmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZC1idXR0b25dW2ZkYk5lc3RlZEJ1dHRvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkQnV0dG9uRGlyZWN0aXZlIGV4dGVuZHMgQnV0dG9uVHlwZUd1YXJkIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogVHlwZSBvZiB0aGUgYnV0dG9uLiBJbiBjYXNlIG9mIGZkYk5lc3RlZEJ1dHRvbiBpdCBpcyBhbHdheXMgYSBgbmVzdGVkYCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUeXBlOiAnbmVzdGVkJyB8ICduZXN0ZWQtc3F1YXJlJyA9ICduZXN0ZWQnIGFzIGNvbnN0O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBzcXVhcmVkIGZvcm0gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNxdWFyZTogQm9vbGVhbklucHV0O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mZFR5cGUgPSB0aGlzLnNxdWFyZSA/ICduZXN0ZWQtc3F1YXJlJyA6ICduZXN0ZWQnO1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { ButtonTypeGuard } from './button-type-guard';
3
+ import * as i0 from "@angular/core";
4
+ export class ToolHeaderButtonDirective extends ButtonTypeGuard {
5
+ constructor() {
6
+ super(...arguments);
7
+ /** Type of the button. In case of fdbToolHeaderButton it is always a `tool-header` */
8
+ this.fdType = 'tool-header';
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ToolHeaderButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.7", type: ToolHeaderButtonDirective, isStandalone: true, selector: "[fd-button][fdbToolHeaderButton]", inputs: { fdType: "fdType" }, usesInheritance: true, ngImport: i0 }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ToolHeaderButtonDirective, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[fd-button][fdbToolHeaderButton]',
17
+ standalone: true
18
+ }]
19
+ }], propDecorators: { fdType: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1oZWFkZXItYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL2J1dHRvbi90b29sLWhlYWRlci1idXR0b24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdEQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGVBQWU7SUFKOUQ7O1FBS0ksc0ZBQXNGO1FBRXRGLFdBQU0sR0FBa0IsYUFBc0IsQ0FBQztLQUNsRDs4R0FKWSx5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSUcsTUFBTTtzQkFETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZUd1YXJkIH0gZnJvbSAnLi9idXR0b24tdHlwZS1ndWFyZCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkLWJ1dHRvbl1bZmRiVG9vbEhlYWRlckJ1dHRvbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVG9vbEhlYWRlckJ1dHRvbkRpcmVjdGl2ZSBleHRlbmRzIEJ1dHRvblR5cGVHdWFyZCB7XG4gICAgLyoqIFR5cGUgb2YgdGhlIGJ1dHRvbi4gSW4gY2FzZSBvZiBmZGJUb29sSGVhZGVyQnV0dG9uIGl0IGlzIGFsd2F5cyBhIGB0b29sLWhlYWRlcmAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogJ3Rvb2wtaGVhZGVyJyA9ICd0b29sLWhlYWRlcicgYXMgY29uc3Q7XG59XG4iXX0=
@@ -49,7 +49,6 @@ export class NavigationContentStartComponent extends NavigationContentComponent
49
49
  this._scrollbar = inject(ScrollbarDirective);
50
50
  /** @hidden */
51
51
  this._destroyRef = inject(DestroyRef);
52
- this._scrollbar.overrideTabindex = false;
53
52
  effect(() => {
54
53
  if (!this._canTrackItems()) {
55
54
  return;
@@ -204,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
204
203
  type: ViewChild,
205
204
  args: ['showMoreOverflowItem', { static: false, read: FdbNavigationListItemComponent }]
206
205
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL25hdmlnYXRpb24vbmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL25hdmlnYXRpb24vbmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBWSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1D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QUlWLDhCQUE4Qiw0R0N4RTVGLDJoQkFjQSw0Q0R1QlEsdUJBQXVCLG1HQUV2QixJQUFJLDZGQUNKLHVCQUF1QixvSEFDdkIsbUNBQW1DOzsyRkFpQjlCLCtCQUErQjtrQkExQjNDLFNBQVM7K0JBQ0ksOEJBQThCLGNBRTVCLElBQUksV0FDUDt3QkFDTCx1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0IsSUFBSTt3QkFDSix1QkFBdUI7d0JBQ3ZCLG1DQUFtQztxQkFDdEMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsV0FBVyxpQ0FBaUM7eUJBQy9DO3FCQUNKLFFBRUs7d0JBQ0YsS0FBSyxFQUFFLHdEQUF3RDt3QkFDL0QsbUJBQW1CLEVBQUUsR0FBRztxQkFDM0Isa0JBQ2UsQ0FBQyxrQkFBa0IsQ0FBQzswRUFLbkIsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLckQsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLDBCQUEwQjtnQkFLMUIsaUJBQWlCO3NCQURqQyxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsxRCx3QkFBd0I7c0JBRG5DLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IFN1YmplY3QsIGFzeW5jU2NoZWR1bGVyLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZkYk5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tY29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IE5hdmlnYXRpb25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWNvbnRlbnQudG9rZW4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QtaXRlbS1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25MaXN0T3ZlcmZsb3dJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LW92ZXJmbG93LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5cbmNvbnN0IEZEX05BVklHQVRJT05fT1ZFUkZMT1dfSVRFTV9DTEFTUyA9ICdmZC1uYXZpZ2F0aW9uX19jb250YWluZXItLWhpZGRlbi1vdmVyZmxvdyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRiLW5hdmlnYXRpb24tY29udGVudC1zdGFydCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24tY29udGVudC1zdGFydC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5hdmlnYXRpb25MaXN0Q29tcG9uZW50LFxuICAgICAgICBOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5hdmlnYXRpb25MaW5rQ29tcG9uZW50LFxuICAgICAgICBOYXZpZ2F0aW9uTGlzdE92ZXJmbG93SXRlbUNvbXBvbmVudFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTmF2aWdhdGlvbkNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTmF2aWdhdGlvbkNvbnRlbnRTdGFydENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtbmF2aWdhdGlvbl9fY29udGFpbmVyIGZkLW5hdmlnYXRpb25fX2NvbnRhaW5lci0tdG9wJyxcbiAgICAgICAgJ1tzdHlsZS5mbGV4LWdyb3ddJzogJzEnXG4gICAgfSxcbiAgICBob3N0RGlyZWN0aXZlczogW1Njcm9sbGJhckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkNvbnRlbnRTdGFydENvbXBvbmVudCBleHRlbmRzIE5hdmlnYXRpb25Db250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25JdGVtczogUXVlcnlMaXN0PEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbkxpc3RzOiBRdWVyeUxpc3Q8RmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzaG93TW9yZU92ZXJmbG93TWVudScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nob3dNb3JlT3ZlcmZsb3c6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzaG93TW9yZU92ZXJmbG93SXRlbScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0pXG4gICAgcHJpdmF0ZSBzZXQgX3Nob3dNb3JlT3ZlcmZsb3dJdGVtQ21wKHZhbHVlOiBOdWxsYWJsZTxGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQ+KSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsaW5rVGVtcGxhdGUgPSBpbmplY3QoRmRiTmF2aWdhdGlvbkNvbXBvbmVudCkuaG9tZUxpbmtUZW1wbGF0ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dIb21lID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd092ZXJmbG93QnV0dG9uID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZGRlbkl0ZW1zOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVycmlkZSByZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jYW5UcmFja0l0ZW1zID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbkNvbXBvbmVudCA9IGluamVjdChGZGJOYXZpZ2F0aW9uQ29tcG9uZW50KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbGJhciA9IGluamVjdChTY3JvbGxiYXJEaXJlY3RpdmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLl9zY3JvbGxiYXIub3ZlcnJpZGVUYWJpbmRleCA9IGZhbHNlO1xuXG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NhblRyYWNrSXRlbXMoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWxzbyBsaXN0ZW4gdG8gc25hcHBlZCBzdGF0ZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgY29uc3Qgc25hcHBlZCA9IHRoaXMuX25hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYW5UcmFja0l0ZW1zLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLl9uYXZpZ2F0aW9uSXRlbXM/Lmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDMwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4gcHJldlswXS5jb250ZW50UmVjdC5oZWlnaHQgPT09IGN1cnJlbnRbMF0uY29udGVudFJlY3QuaGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0TmF2aWdhdGFibGVJdGVtcygpOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2godGhpcy5zaG93TW9yZU92ZXJmbG93SXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd01vcmVPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0/LmlzT3BlbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVZpc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMuX2hpZGRlbkl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGlmICghdGhpcy5fbmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmZsb3dCdXR0b24uc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoRkRfTkFWSUdBVElPTl9PVkVSRkxPV19JVEVNX0NMQVNTKTtcbiAgICAgICAgdGhpcy5zaG93T3ZlcmZsb3dCdXR0b24uc2V0KHRydWUpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBsZXQgY2FuRGlzcGxheUl0ZW1zID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICAgICAgY29uc3Qgc2hvd01vcmVIZWlnaHQgPVxuICAgICAgICAgICAgKHRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgfHwgMCkgKiAyO1xuICAgICAgICBjb25zdCBob21lRWxlbWVudFNpemUgPSB0aGlzLl9uYXZpZ2F0aW9uTGlzdHMudG9BcnJheSgpLnJlZHVjZSgoaGVpZ2h0LCBsaXN0KSA9PiB7XG4gICAgICAgICAgICBoZWlnaHQgKz0gbGlzdC5nZXRIb21lRWxlbWVudFNpemUoKS5oZWlnaHQ7XG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0O1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgbGV0IHRvdGFsQXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmVySGVpZ2h0IC0gc2hvd01vcmVIZWlnaHQgLSBob21lRWxlbWVudFNpemU7XG5cbiAgICAgICAgY29uc3QgaGlkZGVuRWxlbWVudHM6IEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudFtdID0gW107XG5cbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbkl0ZW1Hcm91cHMgPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjYzogeyByb290OiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXTsgY2hpbGRyZW46IEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudFtdIH0sIGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtTGV2ZWwgPSBpdGVtLm5vcm1hbGl6ZWRMZXZlbCgpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtTGV2ZWwgPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFjY1tpdGVtTGV2ZWwgPT09IDEgPyAncm9vdCcgOiAnY2hpbGRyZW4nXS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyByb290OiBbXSwgY2hpbGRyZW46IFtdIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5hdmlnYXRpb25JdGVtR3JvdXBzLmNoaWxkcmVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uY2FsY3VsYXRlRXhwYW5kZWQoKTtcbiAgICAgICAgICAgIGlmICghY2FuRGlzcGxheUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgaGlkZGVuRWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGl0ZW0uc2hvdygpO1xuXG4gICAgICAgICAgICB0b3RhbEF2YWlsYWJsZUhlaWdodCAtPSBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmICh0b3RhbEF2YWlsYWJsZUhlaWdodCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgY2FuRGlzcGxheUl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgaGlkZGVuRWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5hdmlnYXRpb25JdGVtR3JvdXBzLnJvb3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jaGVja1NlbGZIaWRkZW4oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRkRfTkFWSUdBVElPTl9PVkVSRkxPV19JVEVNX0NMQVNTKTtcblxuICAgICAgICB0aGlzLl9oYW5kbGVPdmVyZmxvd0l0ZW1zKGhpZGRlbkVsZW1lbnRzKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfSwgNSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVPdmVyZmxvd0l0ZW1zKGl0ZW1zOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dPdmVyZmxvd0J1dHRvbi5zZXQoaXRlbXMubGVuZ3RoID4gMCk7XG4gICAgICAgIHRoaXMuX2hpZGRlbkl0ZW1zID0gaXRlbXM7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwidWxbZmRiLW5hdmlnYXRpb24tbGlzdF1cIj48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93T3ZlcmZsb3dCdXR0b24oKVwiPlxuICAgIDx1bCBmZGItbmF2aWdhdGlvbi1saXN0IGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fbGlzdC0tbm8tZ3Jvd1wiIFtzaG93SG9tZV09XCJmYWxzZVwiICNzaG93TW9yZU92ZXJmbG93TWVudT5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICBmZGItbmF2aWdhdGlvbi1saXN0LW92ZXJmbG93LWl0ZW1cbiAgICAgICAgICAgIFthbHdheXNGb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAjc2hvd01vcmVPdmVyZmxvd0l0ZW1cbiAgICAgICAgICAgIFtoaWRkZW5JdGVtc109XCJfaGlkZGVuSXRlbXNcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YSBmZGItbmF2aWdhdGlvbi1saW5rIGdseXBoPVwib3ZlcmZsb3dcIiBsYWJlbD1cIk1vcmUgSXRlbXNcIj48L2E+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvbmctY29udGFpbmVyPlxuIl19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL25hdmlnYXRpb24vbmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvYnRwL25hdmlnYXRpb24vbmF2aWdhdGlvbi1jb250ZW50LXN0YXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBWSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUNBQW1D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QUFJLDZGQUNKLHVCQUF1QixvSEFDdkIsbUNBQW1DOzsyRkFpQjlCLCtCQUErQjtrQkExQjNDLFNBQVM7K0JBQ0ksOEJBQThCLGNBRTVCLElBQUksV0FDUDt3QkFDTCx1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0IsSUFBSTt3QkFDSix1QkFBdUI7d0JBQ3ZCLG1DQUFtQztxQkFDdEMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsV0FBVyxpQ0FBaUM7eUJBQy9DO3FCQUNKLFFBRUs7d0JBQ0YsS0FBSyxFQUFFLHdEQUF3RDt3QkFDL0QsbUJBQW1CLEVBQUUsR0FBRztxQkFDM0Isa0JBQ2UsQ0FBQyxrQkFBa0IsQ0FBQzswRUFLbkIsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLckQsZ0JBQWdCO3NCQURoQyxlQUFlO3VCQUFDLDBCQUEwQjtnQkFLMUIsaUJBQWlCO3NCQURqQyxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsxRCx3QkFBd0I7c0JBRG5DLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTnVsbGFibGUsIHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IFN1YmplY3QsIGFzeW5jU2NoZWR1bGVyLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9ic2VydmVPbiwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZkYk5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tY29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IE5hdmlnYXRpb25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWNvbnRlbnQudG9rZW4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QtaXRlbS1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25MaXN0T3ZlcmZsb3dJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LW92ZXJmbG93LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5cbmNvbnN0IEZEX05BVklHQVRJT05fT1ZFUkZMT1dfSVRFTV9DTEFTUyA9ICdmZC1uYXZpZ2F0aW9uX19jb250YWluZXItLWhpZGRlbi1vdmVyZmxvdyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRiLW5hdmlnYXRpb24tY29udGVudC1zdGFydCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24tY29udGVudC1zdGFydC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5hdmlnYXRpb25MaXN0Q29tcG9uZW50LFxuICAgICAgICBOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5hdmlnYXRpb25MaW5rQ29tcG9uZW50LFxuICAgICAgICBOYXZpZ2F0aW9uTGlzdE92ZXJmbG93SXRlbUNvbXBvbmVudFxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTmF2aWdhdGlvbkNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTmF2aWdhdGlvbkNvbnRlbnRTdGFydENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtbmF2aWdhdGlvbl9fY29udGFpbmVyIGZkLW5hdmlnYXRpb25fX2NvbnRhaW5lci0tdG9wJyxcbiAgICAgICAgJ1tzdHlsZS5mbGV4LWdyb3ddJzogJzEnXG4gICAgfSxcbiAgICBob3N0RGlyZWN0aXZlczogW1Njcm9sbGJhckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkNvbnRlbnRTdGFydENvbXBvbmVudCBleHRlbmRzIE5hdmlnYXRpb25Db250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25JdGVtczogUXVlcnlMaXN0PEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbkxpc3RzOiBRdWVyeUxpc3Q8RmRiTmF2aWdhdGlvbkxpc3RDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzaG93TW9yZU92ZXJmbG93TWVudScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nob3dNb3JlT3ZlcmZsb3c6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzaG93TW9yZU92ZXJmbG93SXRlbScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0pXG4gICAgcHJpdmF0ZSBzZXQgX3Nob3dNb3JlT3ZlcmZsb3dJdGVtQ21wKHZhbHVlOiBOdWxsYWJsZTxGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQ+KSB7XG4gICAgICAgIHRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsaW5rVGVtcGxhdGUgPSBpbmplY3QoRmRiTmF2aWdhdGlvbkNvbXBvbmVudCkuaG9tZUxpbmtUZW1wbGF0ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dIb21lID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd092ZXJmbG93QnV0dG9uID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hpZGRlbkl0ZW1zOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVycmlkZSByZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jYW5UcmFja0l0ZW1zID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbkNvbXBvbmVudCA9IGluamVjdChGZGJOYXZpZ2F0aW9uQ29tcG9uZW50KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Njcm9sbGJhciA9IGluamVjdChTY3JvbGxiYXJEaXJlY3RpdmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jYW5UcmFja0l0ZW1zKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGFsc28gbGlzdGVuIHRvIHNuYXBwZWQgc3RhdGUuXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgIGNvbnN0IHNuYXBwZWQgPSB0aGlzLl9uYXZpZ2F0aW9uQ29tcG9uZW50LmlzU25hcHBlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FuVHJhY2tJdGVtcy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShzdGFydFdpdGgobnVsbCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zPy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlT24oYXN5bmNTY2hlZHVsZXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgzMCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnJlbnQpID0+IHByZXZbMF0uY29udGVudFJlY3QuaGVpZ2h0ID09PSBjdXJyZW50WzBdLmNvbnRlbnRSZWN0LmhlaWdodCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLl9jYWxjdWxhdGlvbkluUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldE5hdmlnYXRhYmxlSXRlbXMoKTogRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuX25hdmlnYXRpb25JdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dNb3JlT3ZlcmZsb3dJdGVtKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHRoaXMuc2hvd01vcmVPdmVyZmxvd0l0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dNb3JlT3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNob3dNb3JlT3ZlcmZsb3dJdGVtPy5pc09wZW47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jYWxjdWxhdGlvbkluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jYWxjdWxhdGlvbkluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLl9oaWRkZW5JdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAoIXRoaXMuX25hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJmbG93QnV0dG9uLnNldChmYWxzZSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKEZEX05BVklHQVRJT05fT1ZFUkZMT1dfSVRFTV9DTEFTUyk7XG4gICAgICAgIHRoaXMuc2hvd092ZXJmbG93QnV0dG9uLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgbGV0IGNhbkRpc3BsYXlJdGVtcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IHNob3dNb3JlSGVpZ2h0ID1cbiAgICAgICAgICAgICh0aGlzLnNob3dNb3JlT3ZlcmZsb3dJdGVtPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IHx8IDApICogMjtcbiAgICAgICAgY29uc3QgaG9tZUVsZW1lbnRTaXplID0gdGhpcy5fbmF2aWdhdGlvbkxpc3RzLnRvQXJyYXkoKS5yZWR1Y2UoKGhlaWdodCwgbGlzdCkgPT4ge1xuICAgICAgICAgICAgaGVpZ2h0ICs9IGxpc3QuZ2V0SG9tZUVsZW1lbnRTaXplKCkuaGVpZ2h0O1xuICAgICAgICAgICAgcmV0dXJuIGhlaWdodDtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIGxldCB0b3RhbEF2YWlsYWJsZUhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAtIHNob3dNb3JlSGVpZ2h0IC0gaG9tZUVsZW1lbnRTaXplO1xuXG4gICAgICAgIGNvbnN0IGhpZGRlbkVsZW1lbnRzOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25JdGVtR3JvdXBzID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLnJlZHVjZShcbiAgICAgICAgICAgIChhY2M6IHsgcm9vdDogRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50W107IGNoaWxkcmVuOiBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRbXSB9LCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUxldmVsID0gaXRlbS5ub3JtYWxpemVkTGV2ZWwoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUxldmVsID4gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhY2NbaXRlbUxldmVsID09PSAxID8gJ3Jvb3QnIDogJ2NoaWxkcmVuJ10ucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgcm9vdDogW10sIGNoaWxkcmVuOiBbXSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2hvdygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBuYXZpZ2F0aW9uSXRlbUdyb3Vwcy5jaGlsZHJlbi5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNhbGN1bGF0ZUV4cGFuZGVkKCk7XG4gICAgICAgICAgICBpZiAoIWNhbkRpc3BsYXlJdGVtcykge1xuICAgICAgICAgICAgICAgIGl0ZW0uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGhpZGRlbkVsZW1lbnRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpdGVtLnNob3coKTtcblxuICAgICAgICAgICAgdG90YWxBdmFpbGFibGVIZWlnaHQgLT0gaXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgICAgICAgICBpZiAodG90YWxBdmFpbGFibGVIZWlnaHQgPD0gMCkge1xuICAgICAgICAgICAgICAgIGNhbkRpc3BsYXlJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGl0ZW0uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGhpZGRlbkVsZW1lbnRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBuYXZpZ2F0aW9uSXRlbUdyb3Vwcy5yb290LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uY2hlY2tTZWxmSGlkZGVuKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKEZEX05BVklHQVRJT05fT1ZFUkZMT1dfSVRFTV9DTEFTUyk7XG5cbiAgICAgICAgdGhpcy5faGFuZGxlT3ZlcmZsb3dJdGVtcyhoaWRkZW5FbGVtZW50cyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH0sIDUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlT3ZlcmZsb3dJdGVtcyhpdGVtczogRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93T3ZlcmZsb3dCdXR0b24uc2V0KGl0ZW1zLmxlbmd0aCA+IDApO1xuICAgICAgICB0aGlzLl9oaWRkZW5JdGVtcyA9IGl0ZW1zO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cInVsW2ZkYi1uYXZpZ2F0aW9uLWxpc3RdXCI+PC9uZy1jb250ZW50PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2hvd092ZXJmbG93QnV0dG9uKClcIj5cbiAgICA8dWwgZmRiLW5hdmlnYXRpb24tbGlzdCBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2xpc3QtLW5vLWdyb3dcIiBbc2hvd0hvbWVdPVwiZmFsc2VcIiAjc2hvd01vcmVPdmVyZmxvd01lbnU+XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgZmRiLW5hdmlnYXRpb24tbGlzdC1vdmVyZmxvdy1pdGVtXG4gICAgICAgICAgICBbYWx3YXlzRm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgI3Nob3dNb3JlT3ZlcmZsb3dJdGVtXG4gICAgICAgICAgICBbaGlkZGVuSXRlbXNdPVwiX2hpZGRlbkl0ZW1zXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGEgZmRiLW5hdmlnYXRpb24tbGluayBnbHlwaD1cIm92ZXJmbG93XCIgbGFiZWw9XCJNb3JlIEl0ZW1zXCI+PC9hPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -5,6 +5,7 @@ import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
5
5
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, HostListener, Injector, Input, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, effect, inject, signal } from '@angular/core';
6
6
  import { toSignal } from '@angular/core/rxjs-interop';
7
7
  import { RouterLink, RouterLinkActive } from '@angular/router';
8
+ import { NestedButtonDirective } from '@fundamental-ngx/btp/button';
8
9
  import { KeyUtil, TabbableElementService, applyCssClass } from '@fundamental-ngx/cdk/utils';
9
10
  import { ButtonComponent } from '@fundamental-ngx/core/button';
10
11
  import { IconComponent } from '@fundamental-ngx/core/icon';
@@ -355,7 +356,7 @@ export class NavigationListItemComponent extends FdbNavigationListItemComponent
355
356
  provide: FdbNavigationListItemComponent,
356
357
  useExisting: NavigationListItemComponent
357
358
  }
358
- ], queries: [{ propertyName: "_navigationListComponent", first: true, predicate: FdbNavigationListComponent, descendants: true }, { propertyName: "_routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "_routerLink", first: true, predicate: RouterLink, descendants: true }, { propertyName: "linkComponent", first: true, predicate: NavigationLinkComponent, descendants: true }, { propertyName: "_childNavigationListItems", predicate: FdbNavigationListItemComponent, descendants: true }], viewQueries: [{ propertyName: "_childrenTemplate", first: true, predicate: ["childrenTemplate"], descendants: true, read: TemplateRef }, { propertyName: "_navigationItem", first: true, predicate: ["navigationItem"], descendants: true }, { propertyName: "_clonedMainLink", first: true, predicate: ["clonedMainLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n class=\"fd-button--nested fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
359
+ ], queries: [{ propertyName: "_navigationListComponent", first: true, predicate: FdbNavigationListComponent, descendants: true }, { propertyName: "_routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "_routerLink", first: true, predicate: RouterLink, descendants: true }, { propertyName: "linkComponent", first: true, predicate: NavigationLinkComponent, descendants: true }, { propertyName: "_childNavigationListItems", predicate: FdbNavigationListItemComponent, descendants: true }], viewQueries: [{ propertyName: "_childrenTemplate", first: true, predicate: ["childrenTemplate"], descendants: true, read: TemplateRef }, { propertyName: "_navigationItem", first: true, predicate: ["navigationItem"], descendants: true }, { propertyName: "_clonedMainLink", first: true, predicate: ["clonedMainLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n fdbNestedButton\n class=\"fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: NestedButtonDirective, selector: "[fd-button][fdbNestedButton]", inputs: ["fdType", "square"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
359
360
  }
360
361
  __decorate([
361
362
  applyCssClass,
@@ -379,8 +380,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
379
380
  PopoverControlComponent,
380
381
  RouterLink,
381
382
  ButtonComponent,
382
- IconComponent
383
- ], standalone: true, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n class=\"fd-button--nested fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n" }]
383
+ IconComponent,
384
+ NestedButtonDirective
385
+ ], standalone: true, template: "<div\n class=\"fd-navigation__item\"\n [class.fd-navigation__item--group]=\"isGroup()\"\n [class.fd-navigation__item--overflow]=\"_hidden()\"\n [class.fd-navigation__item--child]=\"normalizedLevel() > 2\"\n [class.fd-navigation__item--with-expander]=\"\n childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\n \"\n aria-current=\"page\"\n [attr.aria-selected]=\"isRouterLinkActive() || (childrenActive() && navigationComponent.isSnapped()) ? true : null\"\n [attr.aria-expanded]=\"expandedAttr()\"\n [attr.aria-level]=\"level()\"\n #navigationItem\n role=\"menuitem\"\n>\n <ng-container *ngIf=\"linkTemplate\">\n <ng-template [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-content select=\"[fdb-navigation-link]\"></ng-content>\n <button\n (click)=\"toggle()\"\n *ngIf=\"childNavigationListComponent() && normalizedLevel() < 3 && linkComponent?._routerLink\"\n fd-button\n fdbNestedButton\n class=\"fd-navigation__expander\"\n >\n <fd-icon [glyph]=\"toggleIcon()\"></fd-icon>\n </button>\n</div>\n<ng-container\n *ngIf=\"\n (childNavigationListComponent() && !navigationComponent.isSnapped()) ||\n (navigationComponent.isSnapped() && normalizedLevel() < 2) ||\n _hidden()\n \"\n>\n <ng-template [ngTemplateOutlet]=\"childrenTemplate\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n</ng-container>\n\n<ng-template #childrenTemplate>\n <ng-template #childNavigationLists>\n <ng-content select=\"ul[fdb-navigation-list]\"></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"isGroup(); else withWrapper\">\n <ng-template [ngTemplateOutlet]=\"childNavigationLists\" [ngTemplateOutletInjector]=\"injector\"></ng-template>\n </ng-container>\n <ng-template #withWrapper>\n <ng-template #popoverTemplate>\n <!-- fd-navigation__list-container -->\n <div\n *ngIf=\"childNavigationListComponent()\"\n [class.fd-navigation__list-container]=\"!navigationComponent.isSnapped()\"\n aria-hidden=\"true\"\n >\n <div class=\"fd-navigation__list-wrapper popover-wrapper\" aria-hidden=\"true\">\n <div\n *ngIf=\"linkComponent && navigationComponent.isSnapped()\"\n class=\"fd-navigation__item fd-navigation__item--title fd-navigation__item--child\"\n aria-level=\"1\"\n role=\"treeitem\"\n aria-expanded=\"true\"\n [attr.aria-selected]=\"isRouterLinkActive()\"\n >\n <a\n class=\"fd-navigation__link\"\n [routerLink]=\"$any(routerLink())?.commands\"\n role=\"button\"\n tabindex=\"0\"\n (keydown)=\"clonedMainLinkKeydown($event)\"\n #clonedMainLink\n >\n <span\n class=\"fd-navigation__icon sap-icon--basket\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></span>\n <ng-container *ngTemplateOutlet=\"linkComponent.textRenderer!\"></ng-container>\n <span class=\"fd-navigation__selection-indicator\"></span>\n </a>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"_hidden()\" [ngIfElse]=\"popoverTemplate\">\n <div\n *ngIf=\"childNavigationListComponent()\"\n class=\"fd-navigation__list-container fd-navigation__list-container--submenu fd-menu__sublist\"\n >\n <div class=\"fd-navigation__list-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"childNavigationLists\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-template>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n" }]
384
386
  }], ctorParameters: function () { return []; }, propDecorators: { class: [{
385
387
  type: Input
386
388
  }], group: [{
@@ -420,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
420
422
  type: HostListener,
421
423
  args: ['keydown', ['$event']]
422
424
  }] } });
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9idHAvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9idHAvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFHSCxPQUFPLEVBRVAsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDaEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxF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QUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0osV0FDUTt3QkFDTCxTQUFTO3dCQUNULElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGFBQWE7cUJBQ2hCLGNBQ1csSUFBSTswRUFRaEIsS0FBSztzQkFESixLQUFLO2dCQUtGLEtBQUs7c0JBRFIsS0FBSztnQkFPRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsVUFBVTtnQkFPakIsWUFBWTtzQkFEWCxLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLRix3QkFBd0I7c0JBRDNCLFlBQVk7dUJBQUMsMEJBQTBCO2dCQU9wQyxpQkFBaUI7c0JBRHBCLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQU8xQixXQUFXO3NCQURkLFlBQVk7dUJBQUMsVUFBVTtnQkFPcEIsaUJBQWlCO3NCQURwQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPcEQsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFLM0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHVCQUF1QjtnQkFLcEIseUJBQXlCO3NCQUR6QyxlQUFlO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLckQsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkF5SWhFLHNCQUFzQixNQU1kLGVBQWU7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IERvbVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gICAgQ3NzQ2xhc3NCdWlsZGVyLFxuICAgIEhhc0VsZW1lbnRSZWYsXG4gICAgS2V5VXRpbCxcbiAgICBOdWxsYWJsZSxcbiAgICBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgIGFwcGx5Q3NzQ2xhc3Ncbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsIFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tY29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IE5hdmlnYXRpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZGJOYXZpZ2F0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saXN0LWl0ZW0tY29tcG9uZW50LnRva2VuJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2xpW2ZkYi1uYXZpZ2F0aW9uLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgUG9wb3ZlclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIsIEhhc0VsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIEZvY3VzYWJsZU9wdGlvblxue1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZ3JvdXAoZ3JvdXA6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0dyb3VwLnNldChncm91cCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoJ2V4cGFuZGVkJylcbiAgICBzZXQgX2V4cGFuZGVkKGV4cGFuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KGV4cGFuZGVkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBhbHdheXNGb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChGZGJOYXZpZ2F0aW9uTGlzdENvbXBvbmVudClcbiAgICBzZXQgX25hdmlnYXRpb25MaXN0Q29tcG9uZW50KG5hdmlnYXRpb25MaXN0Q29tcG9uZW50OiBGZGJOYXZpZ2F0aW9uTGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmNoaWxkTmF2aWdhdGlvbkxpc3RDb21wb25lbnQuc2V0KG5hdmlnYXRpb25MaXN0Q29tcG9uZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSlcbiAgICBzZXQgX3JvdXRlckxpbmtBY3RpdmUocm91dGVyTGlua0FjdGl2ZTogUm91dGVyTGlua0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnJvdXRlckxpbmtBY3RpdmUuc2V0KHJvdXRlckxpbmtBY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChSb3V0ZXJMaW5rKVxuICAgIHNldCBfcm91dGVyTGluayhyb3V0ZXJMaW5rOiBSb3V0ZXJMaW5rKSB7XG4gICAgICAgIHRoaXMucm91dGVyTGluay5zZXQocm91dGVyTGluayk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjaGlsZHJlblRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHNldCBfY2hpbGRyZW5UZW1wbGF0ZSh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dm9pZD4pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlblRlbXBsYXRlLnNldCh0ZW1wbGF0ZVJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCduYXZpZ2F0aW9uSXRlbScpXG4gICAgX25hdmlnYXRpb25JdGVtOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKE5hdmlnYXRpb25MaW5rQ29tcG9uZW50KVxuICAgIGxpbmtDb21wb25lbnQ6IE51bGxhYmxlPE5hdmlnYXRpb25MaW5rQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGlsZE5hdmlnYXRpb25MaXN0SXRlbXM6IFF1ZXJ5TGlzdDxGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjbG9uZWRNYWluTGluaycsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Nsb25lZE1haW5MaW5rOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcGFyZW50TGlzdEl0ZW1Db21wb25lbnQgPSBpbmplY3QoRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50LCB7IG9wdGlvbmFsOiB0cnVlLCBza2lwU2VsZjogdHJ1ZSB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcnJpZGUgbm9BcnJvdyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVycmlkZSBhZGRpdGlvbmFsQm9keUNsYXNzID0gJ2ZkLW5hdmlnYXRpb25fX2xpc3QtY29udGFpbmVyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcm91dGVyTGluayA9IHNpZ25hbDxSb3V0ZXJMaW5rIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJvdXRlckxpbmtBY3RpdmUgPSBzaWduYWw8Um91dGVyTGlua0FjdGl2ZSB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc1JvdXRlckxpbmtBY3RpdmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRlckxpbmtBY3RpdmUgPSB0aGlzLnJvdXRlckxpbmtBY3RpdmUoKTtcbiAgICAgICAgaWYgKHJvdXRlckxpbmtBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0b1NpZ25hbChyb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlQ2hhbmdlLCB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlOiByb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlLFxuICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yXG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCA9IHNpZ25hbDxGZGJOYXZpZ2F0aW9uTGlzdENvbXBvbmVudCB8IG51bGw+KG51bGwpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZXhwYW5kZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmdWxsUGF0aEV4cGFuZGVkID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+ICh0aGlzLnBhcmVudExpc3RJdGVtQ29tcG9uZW50ID8gdGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudC5leHBhbmRlZCgpIDogdHJ1ZSkgJiYgdGhpcy5leHBhbmRlZCgpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNHcm91cCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkcmVuVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hpbGRyZW5BY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpblBvcnRhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFyZW50SW5Qb3J0YWwoKSB8fCB0aGlzLl9zZWxmSW5Qb3J0YWwoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHBhcmVudEluUG9ydGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudD8uaW5Qb3J0YWwoKSB8fCBmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGluIGF0dHJpYnV0ZSBvbmx5LiBGb3IgYWN0dWFsIGNhbGN1bGF0aW9uIG9mIGxldmVsIG9mIG5lc3RpbmcgdXNlIGBub3JtYWxpemVkTGV2ZWxgLlxuICAgICAqL1xuICAgIGdldCBsZXZlbCgpOiBTaWduYWw8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudE5hdmlnYXRpb25MaXN0Q29tcG9uZW50LmxldmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgZm9yIGNhbGN1bGF0aW9uIG9mIHRoZSBsZXZlbCBvZiBpbmNsdXNpb24uIENhbiBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgYWN0dWFsIGxldmVsIGR1ZSB0byBhYmlsaXR5IHRvIG1peCBncm91cGVkIGxpc3RzIHdpdGggdW5ncm91cGVkLlxuICAgICAqIEZvciB1bmdyb3VwZWQgbGlzdHMgd2lsbCBhZGQgKzEgZm9yIHRoZSBmaXJzdCBsaXN0IGluIHRoZSBoaWVyYXJjaHkgdG8gbWltaWMgZ3JvdXAgZXhpc3RlbmNlLlxuICAgICAqL1xuICAgIG5vcm1hbGl6ZWRMZXZlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQuaXNJbkdyb3VwKCkgfHwgdGhpcy5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxldmVsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGV2ZWwoKSArIDE7XG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc0luUG9wb3ZlciA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkgJiYgKHRoaXMubm9ybWFsaXplZExldmVsKCkgPiAyIHx8IHRoaXMuX2hpZGRlbigpKVxuICAgICk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgZXhwYW5kZWRBdHRyID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICAodGhpcy5leHBhbmRlZCgpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMubm9ybWFsaXplZExldmVsKCkgPT09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgISF0aGlzLmNoaWxkTmF2aWdhdGlvbkxpc3RDb21wb25lbnQoKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkpKSAmJlxuICAgICAgICAgICAgIXRoaXMuX2hpZGRlbigpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIEljb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSB0b2dnbGUgYnV0dG9uLlxuICAgICAqKi9cbiAgICB0b2dnbGVJY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRlZEF0dHIoKSkge1xuICAgICAgICAgICAgcmV0dXJuICdzbGltLWFycm93LWRvd24nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1J0bCgpID8gJ3NsaW0tYXJyb3ctbGVmdCcgOiAnc2xpbS1hcnJvdy1yaWdodCc7XG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRvbVBvcnRhbDogTnVsbGFibGU8RG9tUG9ydGFsPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZkluUG9ydGFsID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmJhYmxlRWxlbWVudFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uQ29tcG9uZW50ID0gaW5qZWN0KEZkYk5hdmlnYXRpb25Db21wb25lbnQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbEJvZHlDb21wb25lbnRDbGFzc2VzID0gW1xuICAgICAgICAgICAgICAgICdmZC1uYXZpZ2F0aW9uJyxcbiAgICAgICAgICAgICAgICAnZmQtbmF2aWdhdGlvbi0tc25hcHBlZCcsXG4gICAgICAgICAgICAgICAgYGZkLW5hdmlnYXRpb24tLSR7dGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50Lm1vZGUoKX1gXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2xhc3MpID0+ICEha2xhc3MpXG4gICAgICAgICAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnVwZGF0ZUNvbnRlbnQobnVsbCwgdGhpcy5jaGlsZHJlblRlbXBsYXRlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5jbGFzcyB8fCAnJywgJ2ZkLW5hdmlnYXRpb25fX2xpc3QtaXRlbSddO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBfa2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5Qb3BvdmVyKCkgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtET1dOX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9oaWRkZW4oKSB8fCB0aGlzLnBhcmVudExpc3RJdGVtQ29tcG9uZW50Py5faGlkZGVuKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoaWRkZW5JdGVtcyA9IHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5nZXRNb3JlQnV0dG9uKCk/LmhpZGRlbkl0ZW1zKCkgfHwgW107XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RMZXZlbEhpZGRlbkVsZW1lbnRDb25kaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICBoaWRkZW5JdGVtcyAmJlxuICAgICAgICAgICAgICAgICAgICAoKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PSBoaWRkZW5JdGVtc1swXT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5JdGVtc1toaWRkZW5JdGVtcy5sZW5ndGggLSAxXT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRMZXZlbEhpZGRlbkVsZW1lbnRDb25kaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZWRMZXZlbCgpID4gMiAmJlxuICAgICAgICAgICAgICAgICAgICAoKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGlzdEl0ZW1zLmZpcnN0ID09PSB0aGlzKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGlzdEl0ZW1zLmxhc3QgPT09IHRoaXMpKTtcblxuICAgICAgICAgICAgICAgIGlmIChmaXJzdExldmVsSGlkZGVuRWxlbWVudENvbmRpdGlvbiB8fCBzZWNvbmRMZXZlbEhpZGRlbkVsZW1lbnRDb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQua2V5RG93bkhhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpICYmIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGlzdEl0ZW1zLmZpcnN0ID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudD8uZm9jdXNPbkNsb25lZExpbmsoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSAmJiB0aGlzLnBhcmVudE5hdmlnYXRpb25MaXN0Q29tcG9uZW50Lmxpc3RJdGVtcy5maXJzdCA9PT0gdGhpcykgfHxcbiAgICAgICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpICYmIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGlzdEl0ZW1zLmxhc3QgPT09IHRoaXMpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQua2V5RG93bkhhbmRsZXIoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV10pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZEV4cGFuZCA9ICF0aGlzLl9pc0NvbGxhcHNlQWN0aW9uKGV2ZW50KTtcblxuICAgICAgICBpZiAoIXRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5fZXhwYW5kZWRTdGF0ZUtleWJvYXJkSGFuZGxlcihzaG91bGRFeHBhbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc25hcHBlZFN0YXRlS2V5Ym9hcmRIYW5kbGVyKHNob3VsZEV4cGFuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsb25lZE1haW5MaW5rS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDb2xsYXBzZUFjdGlvbihldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGlsZE5hdmlnYXRpb25MaXN0SXRlbXMuZmlyc3Q/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNhbGN1bGF0ZUV4cGFuZGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0NvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmJhYmxlU2VydmljZS5nZXRUYWJiYWJsZUVsZW1lbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGZhbHNlLCB0cnVlKT8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS51cGRhdGVUcmlnZ2VyRWxlbWVudCh0aGlzLl9uYXZpZ2F0aW9uSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnJlZnJlc2hDb25maWd1cmF0aW9uKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29sbGFwc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGV4cGFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZC5zZXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9oaWRkZW4oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KCF0aGlzLmV4cGFuZGVkKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0U25hcHBlZEFjdGl2ZVN0YXRlKGlzQWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5BY3RpdmUuc2V0KGlzQWN0aXZlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhpZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hpZGRlbi5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGlkZGVuLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hlY2tTZWxmSGlkZGVuKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG91bGRIaWRlID0gdGhpcy5fY2hpbGROYXZpZ2F0aW9uTGlzdEl0ZW1zXG4gICAgICAgICAgICA/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5ub3JtYWxpemVkTGV2ZWwoKSA9PT0gdGhpcy5ub3JtYWxpemVkTGV2ZWwoKSArIDEpXG4gICAgICAgICAgICAuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uX2hpZGRlbigpKTtcbiAgICAgICAgdGhpcy5faGlkZGVuLnNldChzaG91bGRIaWRlKTtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBzaG91bGRIaWRlO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gc2hvdWxkSGlkZSA/ICdub25lJyA6ICdmbGV4JztcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1c09uQ2xvbmVkTGluaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2Nsb25lZE1haW5MaW5rKSB7XG4gICAgICAgICAgICB0aGlzLl9jbG9uZWRNYWluTGluay5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoaWRkZW5JdGVtcyA9IHRoaXMuaGlkZGVuSXRlbXMoKTtcblxuICAgICAgICBpZiAoaGlkZGVuSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudChoaWRkZW5JdGVtc1swXT8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KT8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY3JlYXRlUG9ydGFsKCk6IERvbVBvcnRhbCB7XG4gICAgICAgIHRoaXMuZG9tUG9ydGFsID0gdGhpcy5kb21Qb3J0YWwgfHwgbmV3IERvbVBvcnRhbCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX3NlbGZJblBvcnRhbC5zZXQodHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRvbVBvcnRhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRlc3Ryb3lQb3J0YWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRvbVBvcnRhbD8uaXNBdHRhY2hlZCkge1xuICAgICAgICAgICAgdGhpcy5kb21Qb3J0YWwuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLmRvbVBvcnRhbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZkluUG9ydGFsLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0NvbGxhcHNlQWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGV4cGFuZEtleSA9IHRoaXMuX3J0bD8ucnRsLnZhbHVlID8gUklHSFRfQVJST1cgOiBMRUZUX0FSUk9XO1xuICAgICAgICByZXR1cm4gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIGV4cGFuZEtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9leHBhbmRlZFN0YXRlS2V5Ym9hcmRIYW5kbGVyKHNob3VsZEV4cGFuZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoc2hvdWxkRXhwYW5kICYmIHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50LnNldE5leHRJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNob3VsZEV4cGFuZCAmJiAhdGhpcy5leHBhbmRlZCgpICYmIHRoaXMucGFyZW50TGlzdEl0ZW1Db21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5zZXRBY3RpdmVJdGVtKHRoaXMucGFyZW50TGlzdEl0ZW1Db21wb25lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaG91bGRFeHBhbmQgJiYgdGhpcy5jaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50LnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChzaG91bGRFeHBhbmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc25hcHBlZFN0YXRlS2V5Ym9hcmRIYW5kbGVyKHNob3VsZEV4cGFuZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoc2hvdWxkRXhwYW5kICYmIHRoaXMuX2hpZGRlbigpKSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChzaG91bGRFeHBhbmQpO1xuICAgICAgICAgICAgdGhpcy5fY2hpbGROYXZpZ2F0aW9uTGlzdEl0ZW1zLmZpcnN0Py5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5jaGlsZEZvY3VzZWQuc2V0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG91bGRFeHBhbmQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGlsZE5hdmlnYXRpb25MaXN0SXRlbXMuZmlyc3Q/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChzaG91bGRFeHBhbmQpO1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2Uub3BlbigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQ2xvbmVkTGluaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkLnNldChzaG91bGRFeHBhbmQpO1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmluUG9ydGFsKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluUG9ydGFsKCkgJiYgdGhpcy5ub3JtYWxpemVkTGV2ZWwoKSA9PT0gMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25Db21wb25lbnQuZm9jdXNNb3JlQnV0dG9uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TGlzdEl0ZW1Db21wb25lbnQ/LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19pdGVtXCJcbiAgICBbY2xhc3MuZmQtbmF2aWdhdGlvbl9faXRlbS0tZ3JvdXBdPVwiaXNHcm91cCgpXCJcbiAgICBbY2xhc3MuZmQtbmF2aWdhdGlvbl9faXRlbS0tb3ZlcmZsb3ddPVwiX2hpZGRlbigpXCJcbiAgICBbY2xhc3MuZmQtbmF2aWdhdGlvbl9faXRlbS0tY2hpbGRdPVwibm9ybWFsaXplZExldmVsKCkgPiAyXCJcbiAgICBbY2xhc3MuZmQtbmF2aWdhdGlvbl9faXRlbS0td2l0aC1leHBhbmRlcl09XCJcbiAgICAgICAgY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCgpICYmIG5vcm1hbGl6ZWRMZXZlbCgpIDwgMyAmJiBsaW5rQ29tcG9uZW50Py5fcm91dGVyTGlua1xuICAgIFwiXG4gICAgYXJpYS1jdXJyZW50PVwicGFnZVwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1JvdXRlckxpbmtBY3RpdmUoKSB8fCAoY2hpbGRyZW5BY3RpdmUoKSAmJiBuYXZpZ2F0aW9uQ29tcG9uZW50LmlzU25hcHBlZCgpKSA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkQXR0cigpXCJcbiAgICBbYXR0ci5hcmlhLWxldmVsXT1cImxldmVsKClcIlxuICAgICNuYXZpZ2F0aW9uSXRlbVxuICAgIHJvbGU9XCJtZW51aXRlbVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmtUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlua1RlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJpbmplY3RvclwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZkYi1uYXZpZ2F0aW9uLWxpbmtdXCI+PC9uZy1jb250ZW50PlxuICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICAgICAgKm5nSWY9XCJjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KCkgJiYgbm9ybWFsaXplZExldmVsKCkgPCAzICYmIGxpbmtDb21wb25lbnQ/Ll9yb3V0ZXJMaW5rXCJcbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZmQtYnV0dG9uLS1uZXN0ZWQgZmQtbmF2aWdhdGlvbl9fZXhwYW5kZXJcIlxuICAgID5cbiAgICAgICAgPGZkLWljb24gW2dseXBoXT1cInRvZ2dsZUljb24oKVwiPjwvZmQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAgIChjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KCkgJiYgIW5hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkpIHx8XG4gICAgICAgIChuYXZpZ2F0aW9uQ29tcG9uZW50LmlzU25hcHBlZCgpICYmIG5vcm1hbGl6ZWRMZXZlbCgpIDwgMikgfHxcbiAgICAgICAgX2hpZGRlbigpXG4gICAgXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRyZW5UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIj48L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjY2hpbGRyZW5UZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkTmF2aWdhdGlvbkxpc3RzPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ1bFtmZGItbmF2aWdhdGlvbi1saXN0XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXAoKTsgZWxzZSB3aXRoV3JhcHBlclwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGROYXZpZ2F0aW9uTGlzdHNcIiBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3dpdGhXcmFwcGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJUZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gZmQtbmF2aWdhdGlvbl9fbGlzdC1jb250YWluZXIgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19saXN0LWNvbnRhaW5lcl09XCIhbmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fbGlzdC13cmFwcGVyIHBvcG92ZXItd3JhcHBlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxpbmtDb21wb25lbnQgJiYgbmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2l0ZW0gZmQtbmF2aWdhdGlvbl9faXRlbS0tdGl0bGUgZmQtbmF2aWdhdGlvbl9faXRlbS0tY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNSb3V0ZXJMaW5rQWN0aXZlKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiJGFueShyb3V0ZXJMaW5rKCkpPy5jb21tYW5kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJjbG9uZWRNYWluTGlua0tleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Nsb25lZE1haW5MaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19pY29uIHNhcC1pY29uLS1iYXNrZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rQ29tcG9uZW50LnRleHRSZW5kZXJlciFcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLW5hdmlnYXRpb25fX3NlbGVjdGlvbi1pbmRpY2F0b3JcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkTmF2aWdhdGlvbkxpc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiX2hpZGRlbigpXCIgW25nSWZFbHNlXT1cInBvcG92ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2xpc3QtY29udGFpbmVyIGZkLW5hdmlnYXRpb25fX2xpc3QtY29udGFpbmVyLS1zdWJtZW51IGZkLW1lbnVfX3N1Ymxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZE5hdmlnYXRpb25MaXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9idHAvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9idHAvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWxpc3QvbmF2aWdhdGlvbi1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFHSCxPQUFPLEVBRVAsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDaEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFP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QUFJLGFBQzFCO3dCQUNQLGNBQWM7d0JBQ2Q7NEJBQ0ksT0FBTyxFQUFFLDhCQUE4Qjs0QkFDdkMsV0FBVyw2QkFBNkI7eUJBQzNDO3FCQUNKLFdBQ1E7d0JBQ0wsU0FBUzt3QkFDVCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLHFCQUFxQjtxQkFDeEIsY0FDVyxJQUFJOzBFQVFoQixLQUFLO3NCQURKLEtBQUs7Z0JBS0YsS0FBSztzQkFEUixLQUFLO2dCQU9GLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxVQUFVO2dCQU9qQixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtGLHdCQUF3QjtzQkFEM0IsWUFBWTt1QkFBQywwQkFBMEI7Z0JBT3BDLGlCQUFpQjtzQkFEcEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBTzFCLFdBQVc7c0JBRGQsWUFBWTt1QkFBQyxVQUFVO2dCQU9wQixpQkFBaUI7c0JBRHBCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU9wRCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUszQixhQUFhO3NCQURaLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUtwQix5QkFBeUI7c0JBRHpDLGVBQWU7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUtyRCxlQUFlO3NCQUQvQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXlJaEUsc0JBQXNCLE1BTWQsZUFBZTtzQkFEdEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgRG9tUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgY29tcHV0ZWQsXG4gICAgZWZmZWN0LFxuICAgIGluamVjdCxcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlckxpbmssIFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmVzdGVkQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9idHAvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgQ3NzQ2xhc3NCdWlsZGVyLFxuICAgIEhhc0VsZW1lbnRSZWYsXG4gICAgS2V5VXRpbCxcbiAgICBOdWxsYWJsZSxcbiAgICBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgIGFwcGx5Q3NzQ2xhc3Ncbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsIFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tY29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IE5hdmlnYXRpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZGJOYXZpZ2F0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgRmRiTmF2aWdhdGlvbkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1saXN0LWl0ZW0tY29tcG9uZW50LnRva2VuJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2xpW2ZkYi1uYXZpZ2F0aW9uLWxpc3QtaXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgUG9wb3ZlclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIE5lc3RlZEJ1dHRvbkRpcmVjdGl2ZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnRcbiAgICBleHRlbmRzIEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENzc0NsYXNzQnVpbGRlciwgSGFzRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgRm9jdXNhYmxlT3B0aW9uXG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBncm91cChncm91cDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzR3JvdXAuc2V0KGdyb3VwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgnZXhwYW5kZWQnKVxuICAgIHNldCBfZXhwYW5kZWQoZXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZC5zZXQoZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQElucHV0KClcbiAgICBsaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsd2F5c0ZvY3VzYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKEZkYk5hdmlnYXRpb25MaXN0Q29tcG9uZW50KVxuICAgIHNldCBfbmF2aWdhdGlvbkxpc3RDb21wb25lbnQobmF2aWdhdGlvbkxpc3RDb21wb25lbnQ6IEZkYk5hdmlnYXRpb25MaXN0Q29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5zZXQobmF2aWdhdGlvbkxpc3RDb21wb25lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChSb3V0ZXJMaW5rQWN0aXZlKVxuICAgIHNldCBfcm91dGVyTGlua0FjdGl2ZShyb3V0ZXJMaW5rQWN0aXZlOiBSb3V0ZXJMaW5rQWN0aXZlKSB7XG4gICAgICAgIHRoaXMucm91dGVyTGlua0FjdGl2ZS5zZXQocm91dGVyTGlua0FjdGl2ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFJvdXRlckxpbmspXG4gICAgc2V0IF9yb3V0ZXJMaW5rKHJvdXRlckxpbms6IFJvdXRlckxpbmspIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJMaW5rLnNldChyb3V0ZXJMaW5rKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NoaWxkcmVuVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgc2V0IF9jaGlsZHJlblRlbXBsYXRlKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx2b2lkPikge1xuICAgICAgICB0aGlzLmNoaWxkcmVuVGVtcGxhdGUuc2V0KHRlbXBsYXRlUmVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb25JdGVtJylcbiAgICBfbmF2aWdhdGlvbkl0ZW06IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoTmF2aWdhdGlvbkxpbmtDb21wb25lbnQpXG4gICAgbGlua0NvbXBvbmVudDogTnVsbGFibGU8TmF2aWdhdGlvbkxpbmtDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoaWxkTmF2aWdhdGlvbkxpc3RJdGVtczogUXVlcnlMaXN0PEZkYk5hdmlnYXRpb25MaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2Nsb25lZE1haW5MaW5rJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2xvbmVkTWFpbkxpbms6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwYXJlbnRMaXN0SXRlbUNvbXBvbmVudCA9IGluamVjdChGZGJOYXZpZ2F0aW9uTGlzdEl0ZW1Db21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVycmlkZSBub0Fycm93ID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG92ZXJyaWRlIGFkZGl0aW9uYWxCb2R5Q2xhc3MgPSAnZmQtbmF2aWdhdGlvbl9fbGlzdC1jb250YWluZXInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByb3V0ZXJMaW5rID0gc2lnbmFsPFJvdXRlckxpbmsgfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcm91dGVyTGlua0FjdGl2ZSA9IHNpZ25hbDxSb3V0ZXJMaW5rQWN0aXZlIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGlzUm91dGVyTGlua0FjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVyTGlua0FjdGl2ZSA9IHRoaXMucm91dGVyTGlua0FjdGl2ZSgpO1xuICAgICAgICBpZiAocm91dGVyTGlua0FjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvU2lnbmFsKHJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmVDaGFuZ2UsIHtcbiAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWU6IHJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmUsXG4gICAgICAgICAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3JcbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50ID0gc2lnbmFsPEZkYk5hdmlnYXRpb25MaXN0Q29tcG9uZW50IHwgbnVsbD4obnVsbCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBleHBhbmRlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZ1bGxQYXRoRXhwYW5kZWQgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gKHRoaXMucGFyZW50TGlzdEl0ZW1Db21wb25lbnQgPyB0aGlzLnBhcmVudExpc3RJdGVtQ29tcG9uZW50LmV4cGFuZGVkKCkgOiB0cnVlKSAmJiB0aGlzLmV4cGFuZGVkKClcbiAgICApO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc0dyb3VwID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hpbGRyZW5UZW1wbGF0ZSA9IHNpZ25hbDxUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGlsZHJlbkFjdGl2ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGluUG9ydGFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYXJlbnRJblBvcnRhbCgpIHx8IHRoaXMuX3NlbGZJblBvcnRhbCgpKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcGFyZW50SW5Qb3J0YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBhcmVudExpc3RJdGVtQ29tcG9uZW50Py5pblBvcnRhbCgpIHx8IGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgaW4gYXR0cmlidXRlIG9ubHkuIEZvciBhY3R1YWwgY2FsY3VsYXRpb24gb2YgbGV2ZWwgb2YgbmVzdGluZyB1c2UgYG5vcm1hbGl6ZWRMZXZlbGAuXG4gICAgICovXG4gICAgZ2V0IGxldmVsKCk6IFNpZ25hbDxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGV2ZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBmb3IgY2FsY3VsYXRpb24gb2YgdGhlIGxldmVsIG9mIGluY2x1c2lvbi4gQ2FuIGJlIGRpZmZlcmVudCB0aGFuIHRoZSBhY3R1YWwgbGV2ZWwgZHVlIHRvIGFiaWxpdHkgdG8gbWl4IGdyb3VwZWQgbGlzdHMgd2l0aCB1bmdyb3VwZWQuXG4gICAgICogRm9yIHVuZ3JvdXBlZCBsaXN0cyB3aWxsIGFkZCArMSBmb3IgdGhlIGZpcnN0IGxpc3QgaW4gdGhlIGhpZXJhcmNoeSB0byBtaW1pYyBncm91cCBleGlzdGVuY2UuXG4gICAgICovXG4gICAgbm9ybWFsaXplZExldmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5pc0luR3JvdXAoKSB8fCB0aGlzLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV2ZWwoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sZXZlbCgpICsgMTtcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzSW5Qb3BvdmVyID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKSAmJiAodGhpcy5ub3JtYWxpemVkTGV2ZWwoKSA+IDIgfHwgdGhpcy5faGlkZGVuKCkpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICBleHBhbmRlZEF0dHIgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICh0aGlzLmV4cGFuZGVkKCkgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5ub3JtYWxpemVkTGV2ZWwoKSA9PT0gMSAmJlxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCgpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKSkpICYmXG4gICAgICAgICAgICAhdGhpcy5faGlkZGVuKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogSWNvbiB3aGljaCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHRvZ2dsZSBidXR0b24uXG4gICAgICoqL1xuICAgIHRvZ2dsZUljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkQXR0cigpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3NsaW0tYXJyb3ctZG93bic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUnRsKCkgPyAnc2xpbS1hcnJvdy1sZWZ0JyA6ICdzbGltLWFycm93LXJpZ2h0JztcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZG9tUG9ydGFsOiBOdWxsYWJsZTxEb21Qb3J0YWw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxmSW5Qb3J0YWwgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJiYWJsZVNlcnZpY2UgPSBpbmplY3QoVGFiYmFibGVFbGVtZW50U2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25Db21wb25lbnQgPSBpbmplY3QoRmRiTmF2aWdhdGlvbkNvbXBvbmVudCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsQm9keUNvbXBvbmVudENsYXNzZXMgPSBbXG4gICAgICAgICAgICAgICAgJ2ZkLW5hdmlnYXRpb24nLFxuICAgICAgICAgICAgICAgICdmZC1uYXZpZ2F0aW9uLS1zbmFwcGVkJyxcbiAgICAgICAgICAgICAgICBgZmQtbmF2aWdhdGlvbi0tJHt0aGlzLm5hdmlnYXRpb25Db21wb25lbnQubW9kZSgpfWBcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKChrbGFzcykgPT4gISFrbGFzcylcbiAgICAgICAgICAgICAgICAuam9pbignICcpO1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UudXBkYXRlQ29udGVudChudWxsLCB0aGlzLmNoaWxkcmVuVGVtcGxhdGUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmNsYXNzIHx8ICcnLCAnZmQtbmF2aWdhdGlvbl9fbGlzdC1pdGVtJ107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9rZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNJblBvcG92ZXIoKSAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2hpZGRlbigpIHx8IHRoaXMucGFyZW50TGlzdEl0ZW1Db21wb25lbnQ/Ll9oaWRkZW4oKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbkl0ZW1zID0gdGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50LmdldE1vcmVCdXR0b24oKT8uaGlkZGVuSXRlbXMoKSB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdExldmVsSGlkZGVuRWxlbWVudENvbmRpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbkl0ZW1zICYmXG4gICAgICAgICAgICAgICAgICAgICgoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09IGhpZGRlbkl0ZW1zWzBdPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbkl0ZW1zW2hpZGRlbkl0ZW1zLmxlbmd0aCAtIDFdPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZExldmVsSGlkZGVuRWxlbWVudENvbmRpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9ybWFsaXplZExldmVsKCkgPiAyICYmXG4gICAgICAgICAgICAgICAgICAgICgoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5saXN0SXRlbXMuZmlyc3QgPT09IHRoaXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5saXN0SXRlbXMubGFzdCA9PT0gdGhpcykpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0TGV2ZWxIaWRkZW5FbGVtZW50Q29uZGl0aW9uIHx8IHNlY29uZExldmVsSGlkZGVuRWxlbWVudENvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5rZXlEb3duSGFuZGxlcihldmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykgJiYgdGhpcy5wYXJlbnROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5saXN0SXRlbXMuZmlyc3QgPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudExpc3RJdGVtQ29tcG9uZW50Py5mb2N1c09uQ2xvbmVkTGluaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpICYmIHRoaXMucGFyZW50TmF2aWdhdGlvbkxpc3RDb21wb25lbnQubGlzdEl0ZW1zLmZpcnN0ID09PSB0aGlzKSB8fFxuICAgICAgICAgICAgICAgIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgdGhpcy5wYXJlbnROYXZpZ2F0aW9uTGlzdENvbXBvbmVudC5saXN0SXRlbXMubGFzdCA9PT0gdGhpcylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkNvbXBvbmVudC5rZXlEb3duSGFuZGxlcihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkRXhwYW5kID0gIXRoaXMuX2lzQ29sbGFwc2VBY3Rpb24oZXZlbnQpO1xuXG4gICAgICAgIGlmICghdGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50LmlzU25hcHBlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9leHBhbmRlZFN0YXRlS2V5Ym9hcmRIYW5kbGVyKHNob3VsZEV4cGFuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zbmFwcGVkU3RhdGVLZXlib2FyZEhhbmRsZXIoc2hvdWxkRXhwYW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvbmVkTWFpbkxpbmtLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc0NvbGxhcHNlQWN0aW9uKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkTmF2aWdhdGlvbkxpc3RJdGVtcy5maXJzdD8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2FsY3VsYXRlRXhwYW5kZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGlua0NvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5saW5rQ29tcG9uZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZmFsc2UsIHRydWUpPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJTZXJ2aWNlLnVwZGF0ZVRyaWdnZXJFbGVtZW50KHRoaXMuX25hdmlnYXRpb25JdGVtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlclNlcnZpY2UucmVmcmVzaENvbmZpZ3VyYXRpb24odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb2xsYXBzZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZC5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZXhwYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGFuZGVkLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2hpZGRlbigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leHBhbmRlZC5zZXQoIXRoaXMuZXhwYW5kZWQoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRTbmFwcGVkQWN0aXZlU3RhdGUoaXNBY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbkFjdGl2ZS5zZXQoaXNBY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGlkZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGlkZGVuLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oaWRkZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGVja1NlbGZIaWRkZW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNob3VsZEhpZGUgPSB0aGlzLl9jaGlsZE5hdmlnYXRpb25MaXN0SXRlbXNcbiAgICAgICAgICAgID8uZmlsdGVyKChpdGVtKSA9PiBpdGVtLm5vcm1hbGl6ZWRMZXZlbCgpID09PSB0aGlzLm5vcm1hbGl6ZWRMZXZlbCgpICsgMSlcbiAgICAgICAgICAgIC5ldmVyeSgoaXRlbSkgPT4gaXRlbS5faGlkZGVuKCkpO1xuICAgICAgICB0aGlzLl9oaWRkZW4uc2V0KHNob3VsZEhpZGUpO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHNob3VsZEhpZGU7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBzaG91bGRIaWRlID8gJ25vbmUnIDogJ2ZsZXgnO1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZvY3VzT25DbG9uZWRMaW5rKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY2xvbmVkTWFpbkxpbmspIHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb25lZE1haW5MaW5rLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhpZGRlbkl0ZW1zID0gdGhpcy5oaWRkZW5JdGVtcygpO1xuXG4gICAgICAgIGlmIChoaWRkZW5JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KGhpZGRlbkl0ZW1zWzBdPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjcmVhdGVQb3J0YWwoKTogRG9tUG9ydGFsIHtcbiAgICAgICAgdGhpcy5kb21Qb3J0YWwgPSB0aGlzLmRvbVBvcnRhbCB8fCBuZXcgRG9tUG9ydGFsKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fc2VsZkluUG9ydGFsLnNldCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9tUG9ydGFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGVzdHJveVBvcnRhbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG9tUG9ydGFsPy5pc0F0dGFjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRvbVBvcnRhbC5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuZG9tUG9ydGFsID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxmSW5Qb3J0YWwuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQ29sbGFwc2VBY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXhwYW5kS2V5ID0gdGhpcy5fcnRsPy5ydGwudmFsdWUgPyBSSUdIVF9BUlJPVyA6IExFRlRfQVJST1c7XG4gICAgICAgIHJldHVybiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgZXhwYW5kS2V5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZGVkU3RhdGVLZXlib2FyZEhhbmRsZXIoc2hvdWxkRXhwYW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChzaG91bGRFeHBhbmQgJiYgdGhpcy5leHBhbmRlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2hvdWxkRXhwYW5kICYmICF0aGlzLmV4cGFuZGVkKCkgJiYgdGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uQ29tcG9uZW50LnNldEFjdGl2ZUl0ZW0odGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNob3VsZEV4cGFuZCAmJiB0aGlzLmNoaWxkTmF2aWdhdGlvbkxpc3RDb21wb25lbnQoKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Db21wb25lbnQuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KHNob3VsZEV4cGFuZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zbmFwcGVkU3RhdGVLZXlib2FyZEhhbmRsZXIoc2hvdWxkRXhwYW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChzaG91bGRFeHBhbmQgJiYgdGhpcy5faGlkZGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KHNob3VsZEV4cGFuZCk7XG4gICAgICAgICAgICB0aGlzLl9jaGlsZE5hdmlnYXRpb25MaXN0SXRlbXMuZmlyc3Q/LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmNoaWxkRm9jdXNlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZEV4cGFuZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoaWxkTmF2aWdhdGlvbkxpc3RJdGVtcy5maXJzdD8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KHNob3VsZEV4cGFuZCk7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5vcGVuKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25DbG9uZWRMaW5rKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQuc2V0KHNob3VsZEV4cGFuZCk7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyU2VydmljZS5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5Qb3J0YWwoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5Qb3J0YWwoKSAmJiB0aGlzLm5vcm1hbGl6ZWRMZXZlbCgpID09PSAyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkNvbXBvbmVudC5mb2N1c01vcmVCdXR0b24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRMaXN0SXRlbUNvbXBvbmVudD8uZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2l0ZW1cIlxuICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19pdGVtLS1ncm91cF09XCJpc0dyb3VwKClcIlxuICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19pdGVtLS1vdmVyZmxvd109XCJfaGlkZGVuKClcIlxuICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19pdGVtLS1jaGlsZF09XCJub3JtYWxpemVkTGV2ZWwoKSA+IDJcIlxuICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19pdGVtLS13aXRoLWV4cGFuZGVyXT1cIlxuICAgICAgICBjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KCkgJiYgbm9ybWFsaXplZExldmVsKCkgPCAzICYmIGxpbmtDb21wb25lbnQ/Ll9yb3V0ZXJMaW5rXG4gICAgXCJcbiAgICBhcmlhLWN1cnJlbnQ9XCJwYWdlXCJcbiAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzUm91dGVyTGlua0FjdGl2ZSgpIHx8IChjaGlsZHJlbkFjdGl2ZSgpICYmIG5hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkpID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRBdHRyKClcIlxuICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwibGV2ZWwoKVwiXG4gICAgI25hdmlnYXRpb25JdGVtXG4gICAgcm9sZT1cIm1lbnVpdGVtXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlua1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaW5rVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmRiLW5hdmlnYXRpb24tbGlua11cIj48L25nLWNvbnRlbnQ+XG4gICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAqbmdJZj1cImNoaWxkTmF2aWdhdGlvbkxpc3RDb21wb25lbnQoKSAmJiBub3JtYWxpemVkTGV2ZWwoKSA8IDMgJiYgbGlua0NvbXBvbmVudD8uX3JvdXRlckxpbmtcIlxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmRiTmVzdGVkQnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fZXhwYW5kZXJcIlxuICAgID5cbiAgICAgICAgPGZkLWljb24gW2dseXBoXT1cInRvZ2dsZUljb24oKVwiPjwvZmQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAgIChjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KCkgJiYgIW5hdmlnYXRpb25Db21wb25lbnQuaXNTbmFwcGVkKCkpIHx8XG4gICAgICAgIChuYXZpZ2F0aW9uQ29tcG9uZW50LmlzU25hcHBlZCgpICYmIG5vcm1hbGl6ZWRMZXZlbCgpIDwgMikgfHxcbiAgICAgICAgX2hpZGRlbigpXG4gICAgXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGRyZW5UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIj48L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjY2hpbGRyZW5UZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NoaWxkTmF2aWdhdGlvbkxpc3RzPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ1bFtmZGItbmF2aWdhdGlvbi1saXN0XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXAoKTsgZWxzZSB3aXRoV3JhcHBlclwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpbGROYXZpZ2F0aW9uTGlzdHNcIiBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3dpdGhXcmFwcGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJUZW1wbGF0ZT5cbiAgICAgICAgICAgIDwhLS0gZmQtbmF2aWdhdGlvbl9fbGlzdC1jb250YWluZXIgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZE5hdmlnYXRpb25MaXN0Q29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1uYXZpZ2F0aW9uX19saXN0LWNvbnRhaW5lcl09XCIhbmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fbGlzdC13cmFwcGVyIHBvcG92ZXItd3JhcHBlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxpbmtDb21wb25lbnQgJiYgbmF2aWdhdGlvbkNvbXBvbmVudC5pc1NuYXBwZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2l0ZW0gZmQtbmF2aWdhdGlvbl9faXRlbS0tdGl0bGUgZmQtbmF2aWdhdGlvbl9faXRlbS0tY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNSb3V0ZXJMaW5rQWN0aXZlKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbmF2aWdhdGlvbl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiJGFueShyb3V0ZXJMaW5rKCkpPy5jb21tYW5kc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJjbG9uZWRNYWluTGlua0tleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Nsb25lZE1haW5MaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19pY29uIHNhcC1pY29uLS1iYXNrZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rQ29tcG9uZW50LnRleHRSZW5kZXJlciFcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLW5hdmlnYXRpb25fX3NlbGVjdGlvbi1pbmRpY2F0b3JcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaWxkTmF2aWdhdGlvbkxpc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiX2hpZGRlbigpXCIgW25nSWZFbHNlXT1cInBvcG92ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hpbGROYXZpZ2F0aW9uTGlzdENvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW5hdmlnYXRpb25fX2xpc3QtY29udGFpbmVyIGZkLW5hdmlnYXRpb25fX2xpc3QtY29udGFpbmVyLS1zdWJtZW51IGZkLW1lbnVfX3N1Ymxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1uYXZpZ2F0aW9uX19saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlsZE5hdmlnYXRpb25MaXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==