@fundamental-ngx/core 0.44.0-rc.1 → 0.44.0-rc.3

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 (80) hide show
  1. package/breadcrumb/breadcrumb.component.d.ts +4 -4
  2. package/content-density/providers/content-density-observer-providers.d.ts +1 -1
  3. package/content-density/services/content-density-observer.service.d.ts +3 -3
  4. package/dialog/dialog-container/dialog-container.component.d.ts +4 -4
  5. package/esm2022/avatar-group/avatar-group.component.mjs +4 -4
  6. package/esm2022/breadcrumb/breadcrumb.component.mjs +9 -11
  7. package/esm2022/content-density/providers/content-density-observer-providers.mjs +4 -4
  8. package/esm2022/content-density/services/content-density-observer.service.mjs +13 -13
  9. package/esm2022/dialog/dialog-container/dialog-container.component.mjs +12 -13
  10. package/esm2022/message-box/message-box-container/message-box-container.component.mjs +12 -15
  11. package/esm2022/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.mjs +8 -9
  12. package/esm2022/message-strip/auto-dismiss-message-strip.directive.mjs +10 -9
  13. package/esm2022/multi-combobox/base-multi-combobox.class.mjs +17 -14
  14. package/esm2022/multi-combobox/multi-combobox.component.mjs +44 -45
  15. package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +8 -10
  16. package/esm2022/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +9 -11
  17. package/esm2022/segmented-button/segmented-button.component.mjs +19 -21
  18. package/esm2022/shellbar/shellbar.component.mjs +12 -11
  19. package/esm2022/split-button/split-button.component.mjs +15 -16
  20. package/esm2022/table/directives/table-cell.directive.mjs +5 -7
  21. package/esm2022/table/directives/table-row.directive.mjs +17 -20
  22. package/esm2022/table/table.component.mjs +10 -9
  23. package/esm2022/tabs/tab-list.component.mjs +26 -28
  24. package/esm2022/token/token.component.mjs +13 -13
  25. package/esm2022/toolbar/toolbar.component.mjs +23 -24
  26. package/esm2022/tree/components/tree-item/tree-item.component.mjs +21 -21
  27. package/esm2022/tree/tree.component.mjs +23 -22
  28. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +3 -3
  29. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  30. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +9 -10
  31. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  32. package/fesm2022/fundamental-ngx-core-content-density.mjs +15 -14
  33. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  34. package/fesm2022/fundamental-ngx-core-dialog.mjs +10 -9
  35. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  36. package/fesm2022/fundamental-ngx-core-message-box.mjs +11 -11
  37. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  38. package/fesm2022/fundamental-ngx-core-message-strip.mjs +16 -14
  39. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  40. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +62 -63
  41. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  42. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +9 -10
  43. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  44. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +17 -19
  45. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  46. package/fesm2022/fundamental-ngx-core-shellbar.mjs +11 -10
  47. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  48. package/fesm2022/fundamental-ngx-core-split-button.mjs +13 -13
  49. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-core-table.mjs +26 -30
  51. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-tabs.mjs +27 -28
  53. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  54. package/fesm2022/fundamental-ngx-core-token.mjs +13 -12
  55. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-toolbar.mjs +21 -22
  57. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-core-tree.mjs +38 -38
  59. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  60. package/fundamental-ngx-core-v0.44.0-rc.3.tgz +0 -0
  61. package/message-box/message-box-container/message-box-container.component.d.ts +4 -6
  62. package/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.d.ts +1 -1
  63. package/message-strip/auto-dismiss-message-strip.directive.d.ts +3 -3
  64. package/multi-combobox/base-multi-combobox.class.d.ts +30 -30
  65. package/multi-combobox/multi-combobox.component.d.ts +17 -18
  66. package/multi-combobox/select-all-toggler/select-all-toggler.component.d.ts +1 -1
  67. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +5 -6
  68. package/package.json +3 -3
  69. package/schematics/add-dependencies/index.js +4 -4
  70. package/segmented-button/segmented-button.component.d.ts +6 -7
  71. package/shellbar/shellbar.component.d.ts +1 -1
  72. package/split-button/split-button.component.d.ts +3 -4
  73. package/table/directives/table-row.directive.d.ts +2 -4
  74. package/table/table.component.d.ts +3 -4
  75. package/tabs/tab-list.component.d.ts +4 -5
  76. package/token/token.component.d.ts +5 -5
  77. package/toolbar/toolbar.component.d.ts +6 -6
  78. package/tree/components/tree-item/tree-item.component.d.ts +28 -28
  79. package/tree/tree.component.d.ts +7 -7
  80. package/fundamental-ngx-core-v0.44.0-rc.1.tgz +0 -0
@@ -1,5 +1,5 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
- import { DestroyedService, RtlService } from '@fundamental-ngx/cdk/utils';
1
+ import { AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { RtlService } from '@fundamental-ngx/cdk/utils';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import { Placement } from '@fundamental-ngx/core/shared';
5
5
  import { BreadcrumbItemComponent } from './breadcrumb-item.component';
@@ -17,7 +17,7 @@ import * as i0 from "@angular/core";
17
17
  */
18
18
  export declare class BreadcrumbComponent implements OnInit, AfterViewInit {
19
19
  elementRef: ElementRef<HTMLElement>;
20
- private _onDestroy$;
20
+ private _destroyRef;
21
21
  private _rtlService;
22
22
  private _cdr;
23
23
  /**
@@ -54,7 +54,7 @@ export declare class BreadcrumbComponent implements OnInit, AfterViewInit {
54
54
  /** @hidden */
55
55
  _placement$: BehaviorSubject<Placement>;
56
56
  /** @hidden */
57
- constructor(elementRef: ElementRef<HTMLElement>, _onDestroy$: DestroyedService, _rtlService: RtlService | null, _cdr: ChangeDetectorRef);
57
+ constructor(elementRef: ElementRef<HTMLElement>, _destroyRef: DestroyRef, _rtlService: RtlService | null, _cdr: ChangeDetectorRef);
58
58
  /** @hidden */
59
59
  ngOnInit(): void;
60
60
  /** @hidden */
@@ -1,6 +1,6 @@
1
1
  import { Provider } from '@angular/core';
2
2
  import { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';
3
3
  /**
4
- * Creates provider for ContentDensityObserver and adds DestroyedService provider
4
+ * Creates provider for ContentDensityObserver
5
5
  */
6
6
  export declare function contentDensityObserverProviders(params?: ContentDensityObserverSettings): Provider[];
@@ -8,14 +8,14 @@ export declare class ContentDensityObserver extends BehaviorSubject<ContentDensi
8
8
  private _injector;
9
9
  private _providedConfig?;
10
10
  /** @hidden */
11
+ readonly config: ContentDensityObserverSettings;
12
+ /** @hidden */
11
13
  private readonly _isCompact$;
12
14
  /** @hidden */
13
15
  private readonly _isCozy$;
14
16
  /** @hidden */
15
17
  private readonly _isCondensed$;
16
18
  /** @hidden */
17
- readonly config: ContentDensityObserverSettings;
18
- /** @hidden */
19
19
  readonly isCompact$: import("rxjs").Observable<boolean>;
20
20
  /** @hidden */
21
21
  readonly isCozy$: import("rxjs").Observable<boolean>;
@@ -36,7 +36,7 @@ export declare class ContentDensityObserver extends BehaviorSubject<ContentDensi
36
36
  /** @hidden */
37
37
  private _renderer;
38
38
  /** @hidden */
39
- private readonly _destroy$;
39
+ private readonly _destroyRef;
40
40
  /** @hidden */
41
41
  private _elementRef;
42
42
  /** @hidden */
@@ -1,6 +1,6 @@
1
- import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, ElementRef, Injector } from '@angular/core';
1
+ import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, Injector } from '@angular/core';
2
2
  import { AnimationEvent } from '@angular/animations';
3
- import { CssClassBuilder, DestroyedService, DynamicComponentContainer } from '@fundamental-ngx/cdk/utils';
3
+ import { CssClassBuilder, DynamicComponentContainer } from '@fundamental-ngx/cdk/utils';
4
4
  import { DialogRef } from '../utils/dialog-ref.class';
5
5
  import { DialogConfig } from '../utils/dialog-config.class';
6
6
  import { DialogContentType } from '../dialog.types';
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  export declare class DialogContainerComponent extends DynamicComponentContainer<DialogContentType> implements AfterViewInit, AfterContentChecked, CssClassBuilder {
11
11
  dialogConfig: DialogConfig;
12
12
  private _dialogRef;
13
- private _destroy$;
13
+ private _destroyRef;
14
14
  /** Custom classes */
15
15
  set class(userClass: string);
16
16
  /** @hidden */
@@ -20,7 +20,7 @@ export declare class DialogContainerComponent extends DynamicComponentContainer<
20
20
  /** @hidden */
21
21
  private _class;
22
22
  /** @hidden */
23
- constructor(dialogConfig: DialogConfig, _dialogRef: DialogRef, _destroy$: DestroyedService, elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, injector: Injector);
23
+ constructor(dialogConfig: DialogConfig, _dialogRef: DialogRef, _destroyRef: DestroyRef, elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, injector: Injector);
24
24
  /** @hidden */
25
25
  buildComponentCssClass(): string[];
26
26
  /** Handle end of animations, updating the state of the Message Toast. */
@@ -30,9 +30,9 @@ export class AvatarGroupComponent {
30
30
  return this._avatarGroupItemWidth;
31
31
  }
32
32
  const elementStyles = getComputedStyle(this.mainItems.first._element);
33
- return (this._avatarGroupItemWidth +
34
- parseInt(elementStyles.marginLeft, 10) +
35
- parseInt(elementStyles.marginRight, 10));
33
+ const marginLeft = elementStyles.marginLeft || '0';
34
+ const marginRight = elementStyles.marginRight || '0';
35
+ return this._avatarGroupItemWidth + parseInt(marginLeft, 10) + parseInt(marginRight, 10);
36
36
  }
37
37
  /** @hidden */
38
38
  constructor(_viewportRuler, _rtlService) {
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
203
203
  type: HostListener,
204
204
  args: ['keyup', ['$event']]
205
205
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2F2YXRhci1ncm91cC9hdmF0YXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYXZhdGFyLWdyb3VwL2F2YXRhci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBZSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBS2xELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBZXpCLE1BQU0sT0FBTyxvQkFBb0I7SUFzQzdCLGNBQWM7SUFDZCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUks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LENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQTNOUSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw4TEFQbEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ3REO1NBQ0osb0RBOEJnQix3QkFBd0IsbU1DM0U3Qyw2SUFHQTs7MkZENENhLG9CQUFvQjtrQkFiaEMsU0FBUzsrQkFDSSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzt5QkFDdEQ7cUJBQ0o7OzBCQWdGNEQsUUFBUTs0Q0EzRXJFLEVBQUU7c0JBREQsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBV04sU0FBUztzQkFEUixlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLaEUsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQjtnQkFpRmpDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgVVBfQVJST1csIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBUQUIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29sb3JBY2NlbnQsIEtleVV0aWwsIFJ0bFNlcnZpY2UsIFNpemUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBBdmF0YXJHcm91cEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYXZhdGFyLWdyb3VwLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEF2YXRhckdyb3VwSW50ZXJmYWNlIH0gZnJvbSAnLi9hdmF0YXItZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFWQVRBUl9HUk9VUF9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5cbmV4cG9ydCB0eXBlIEF2YXRhckdyb3VwVHlwZSA9ICdncm91cCcgfCAnaW5kaXZpZHVhbCc7XG5leHBvcnQgdHlwZSBBdmF0YXJHcm91cE92ZXJmbG93QnV0dG9uQ29sb3IgPSAnbmV1dHJhbCcgfCAncmFuZG9tJyB8IENvbG9yQWNjZW50O1xuXG5sZXQgYXZhdGFyR3JvdXBDb3VudCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtYXZhdGFyLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hdmF0YXItZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBVkFUQVJfR1JPVVBfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXZhdGFyR3JvdXBDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgQXZhdGFyR3JvdXBJbnRlcmZhY2UsIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBJZCBvZiB0aGUgQXZhdGFyIEdyb3VwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgZmQtYXZhdGFyLWdyb3VwLSR7YXZhdGFyR3JvdXBDb3VudCsrfWA7XG5cbiAgICAvKiogQXBwbHkgdXNlciBjdXN0b20gY2xhc3MuICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBzaXplIG9mIHRoZSBBdmF0YXIgR3JvdXAuIE9wdGlvbnMgaW5jbHVkZTogKnhzKiwgKnMqLCAqbSosICpsKiBhbmQgKnhsKiAoZGVmYXVsdDogKnMqKS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpemU6IFNpemUgPSAncyc7XG5cbiAgICAvKiogVGhlIHR5cGUgb2YgdGhlIEF2YXRhciBHcm91cC4gT3B0aW9ucyBpbmNsdWRlOiAqZ3JvdXAqIGFuZCAqaW5kaXZpZHVhbCogKGRlZmF1bHQ6ICpncm91cCopLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZTogQXZhdGFyR3JvdXBUeXBlID0gJ2dyb3VwJztcblxuICAgIC8qKiBBcmlhLWxhYmVsIGZvciBBdmF0YXIgR3JvdXAuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQ291bnRlciBmb3IgYWxsIGF2YXRhcnMuICovXG4gICAgYWxsSXRlbXNDb3VudCA9IDA7XG5cbiAgICAvKiogQ291bnRlciBmb3IgdmlzaWJsZSBpbiBvdmVyZmxvdyBwb3BvdmVyIGF2YXRhcnMuICovXG4gICAgb3ZlcmZsb3dJdGVtc0NvdW50ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIEF2YXRhciBHcm91cCBpdGVtcy4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEF2YXRhckdyb3VwSXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIG1haW5JdGVtczogUXVlcnlMaXN0PEF2YXRhckdyb3VwSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2F2YXRhckdyb3VwQ29udGFpbmVyJylcbiAgICBhdmF0YXJHcm91cENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJvb3RDbGFzc05hbWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0dyb3VwVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2dyb3VwJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9hdmF0YXJHcm91cFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YXRhckdyb3VwQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9hdmF0YXJHcm91cEl0ZW1XaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tYWluSXRlbXMuZmlyc3Q/Ll9lbGVtZW50Lm9mZnNldFdpZHRoID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfYXZhdGFyR3JvdXBJdGVtV2l0aE1hcmdpbnNXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMubWFpbkl0ZW1zLmZpcnN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXZhdGFyR3JvdXBJdGVtV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50U3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLm1haW5JdGVtcy5maXJzdC5fZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX2F2YXRhckdyb3VwSXRlbVdpZHRoICtcbiAgICAgICAgICAgIHBhcnNlSW50KGVsZW1lbnRTdHlsZXMubWFyZ2luTGVmdCwgMTApICtcbiAgICAgICAgICAgIHBhcnNlSW50KGVsZW1lbnRTdHlsZXMubWFyZ2luUmlnaHQsIDEwKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzS2V5TWFuYWdlciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgX2tleWJvYXJkRXZlbnRzTWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEF2YXRhckdyb3VwSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMgcnRsIHNlcnZpY2UgKi9cbiAgICBwcml2YXRlIF9kaXI6ICdsdHInIHwgJ3J0bCcgfCBudWxsID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29uUmVzaXplKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hc3NpZ25Dc3NDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIG9mKHRydWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVsYXkoNSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jb2xsYXBzZUl0ZW1zKCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuRm9ySXRlbUNoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fc2V0S2V5Ym9hcmRFdmVudHNNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAga2V5VXBIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1haW5JdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9lbGVtZW50ID09PSBldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBwYXNzaW5nIHRoZSBldmVudCB0byBrZXkgbWFuYWdlciBzbyB3ZSBnZXQgYSBjaGFuZ2UgZmlyZWRcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0QWN0aXZlSXRlbShpdGVtOiBBdmF0YXJHcm91cEl0ZW1EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXQoKTtcbiAgICAgICAgdGhpcy5fY29sbGFwc2VJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsSXRlbXNDb3VudCA9IHRoaXMubWFpbkl0ZW1zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zQ291bnQgPSAwO1xuXG4gICAgICAgIHRoaXMubWFpbkl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICBpdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxhcHNlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEl0ZW1zQ291bnRlciA9IHRoaXMubWFpbkl0ZW1zPy5sZW5ndGggfHwgMDtcbiAgICAgICAgbGV0IGNvbnRlbnRXaWR0aCA9IDA7XG4gICAgICAgIGxldCBpZHggPSAwO1xuICAgICAgICBjb25zdCBhdmF0YXJHcm91cEl0ZW1XaWR0aCA9IHRoaXMuX2F2YXRhckdyb3VwSXRlbVdpZHRoO1xuICAgICAgICBjb25zdCBhdmF0YXJHcm91cEl0ZW1XaXRoTWFyZ2luc1dpZHRoID0gdGhpcy5fYXZhdGFyR3JvdXBJdGVtV2l0aE1hcmdpbnNXaWR0aDtcblxuICAgICAgICB3aGlsZSAoaWR4IDwgYWxsSXRlbXNDb3VudGVyKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb250ZW50V2lkdGggPVxuICAgICAgICAgICAgICAgIGlkeCA9PT0gMCAmJiB0aGlzLmlzR3JvdXBUeXBlXG4gICAgICAgICAgICAgICAgICAgID8gY29udGVudFdpZHRoICsgYXZhdGFyR3JvdXBJdGVtV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgOiBjb250ZW50V2lkdGggKyBhdmF0YXJHcm91cEl0ZW1XaXRoTWFyZ2luc1dpZHRoO1xuXG4gICAgICAgICAgICBpZiAobmV3Q29udGVudFdpZHRoID49IHRoaXMuX2F2YXRhckdyb3VwV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAvLyAtMSBiZWNhdXNlIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGxvb3Agd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgb3ZlcmZsb3cgYnV0dG9uXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SWR4ID0gaWR4IC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJmbG93SXRlbXNDb3VudCA9IGFsbEl0ZW1zQ291bnRlciAtIG5ld0lkeDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYWluSXRlbXNUb0hpZGUgPSB0aGlzLm1haW5JdGVtcy50b0FycmF5KCkuc2xpY2UobmV3SWR4KTtcbiAgICAgICAgICAgICAgICBtYWluSXRlbXNUb0hpZGUuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXQuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRlbnRXaWR0aCA9IG5ld0NvbnRlbnRXaWR0aDtcbiAgICAgICAgICAgIGlkeCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Gb3JJdGVtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLm1haW5JdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblJlc2l6ZSgpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hc3NpZ25Dc3NDbGFzc2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvb3RDbGFzc05hbWVzID0ge1xuICAgICAgICAgICAgJ2ZkLWF2YXRhci1ncm91cCc6IHRydWUsXG4gICAgICAgICAgICBbYGZkLWF2YXRhci1ncm91cC0tJHt0aGlzLnR5cGV9LXR5cGVgXTogISF0aGlzLnR5cGUsXG4gICAgICAgICAgICBbYGZkLWF2YXRhci1ncm91cC0tJHt0aGlzLnNpemV9YF06ICEhdGhpcy5zaXplLFxuICAgICAgICAgICAgW3RoaXMuY2xhc3NdOiAhIXRoaXMuY2xhc3NcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEtleWJvYXJkRXZlbnRzTWFuYWdlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5tYWluSXRlbXMpXG4gICAgICAgICAgICAud2l0aFdyYXAoKVxuICAgICAgICAgICAgLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJ0bFN1YiA9IHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgoaXNSdGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcblxuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChydGxTdWIpO1xuICAgIH1cbn1cbiIsIjxkaXYgI2F2YXRhckdyb3VwQ29udGFpbmVyIFtjbGFzc109XCJyb290Q2xhc3NOYW1lc1wiIFtpZF09XCJpZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2F2YXRhci1ncm91cC9hdmF0YXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYXZhdGFyLWdyb3VwL2F2YXRhci1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE9BQU8sRUFBZSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBS2xELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBZXpCLE1BQU0sT0FBTyxvQkFBb0I7SUFzQzdCLGNBQWM7SUFDZCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUks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LENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0F6TlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsOExBUGxCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzthQUN0RDtTQUNKLG9EQThCZ0Isd0JBQXdCLG1NQzNFN0MsNklBR0E7OzJGRDRDYSxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBQ0ksaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7eUJBQ3REO3FCQUNKOzswQkE4RTRELFFBQVE7NENBekVyRSxFQUFFO3NCQURELEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQVdOLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBS2hFLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBK0VqQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVEFCIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbG9yQWNjZW50LCBLZXlVdGlsLCBSdGxTZXJ2aWNlLCBTaXplIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQXZhdGFyR3JvdXBJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2F2YXRhci1ncm91cC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBdmF0YXJHcm91cEludGVyZmFjZSB9IGZyb20gJy4vYXZhdGFyLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBVkFUQVJfR1JPVVBfQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5leHBvcnQgdHlwZSBBdmF0YXJHcm91cFR5cGUgPSAnZ3JvdXAnIHwgJ2luZGl2aWR1YWwnO1xuZXhwb3J0IHR5cGUgQXZhdGFyR3JvdXBPdmVyZmxvd0J1dHRvbkNvbG9yID0gJ25ldXRyYWwnIHwgJ3JhbmRvbScgfCBDb2xvckFjY2VudDtcblxubGV0IGF2YXRhckdyb3VwQ291bnQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWF2YXRhci1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVZBVEFSX0dST1VQX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF2YXRhckdyb3VwQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEF2YXRhckdyb3VwSW50ZXJmYWNlLCBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogSWQgb2YgdGhlIEF2YXRhciBHcm91cC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlkID0gYGZkLWF2YXRhci1ncm91cC0ke2F2YXRhckdyb3VwQ291bnQrK31gO1xuXG4gICAgLyoqIEFwcGx5IHVzZXIgY3VzdG9tIGNsYXNzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBUaGUgc2l6ZSBvZiB0aGUgQXZhdGFyIEdyb3VwLiBPcHRpb25zIGluY2x1ZGU6ICp4cyosICpzKiwgKm0qLCAqbCogYW5kICp4bCogKGRlZmF1bHQ6ICpzKikuICovXG4gICAgQElucHV0KClcbiAgICBzaXplOiBTaXplID0gJ3MnO1xuXG4gICAgLyoqIFRoZSB0eXBlIG9mIHRoZSBBdmF0YXIgR3JvdXAuIE9wdGlvbnMgaW5jbHVkZTogKmdyb3VwKiBhbmQgKmluZGl2aWR1YWwqIChkZWZhdWx0OiAqZ3JvdXAqKS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHR5cGU6IEF2YXRhckdyb3VwVHlwZSA9ICdncm91cCc7XG5cbiAgICAvKiogQXJpYS1sYWJlbCBmb3IgQXZhdGFyIEdyb3VwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIENvdW50ZXIgZm9yIGFsbCBhdmF0YXJzLiAqL1xuICAgIGFsbEl0ZW1zQ291bnQgPSAwO1xuXG4gICAgLyoqIENvdW50ZXIgZm9yIHZpc2libGUgaW4gb3ZlcmZsb3cgcG9wb3ZlciBhdmF0YXJzLiAqL1xuICAgIG92ZXJmbG93SXRlbXNDb3VudCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBBdmF0YXIgR3JvdXAgaXRlbXMuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihBdmF0YXJHcm91cEl0ZW1EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBtYWluSXRlbXM6IFF1ZXJ5TGlzdDxBdmF0YXJHcm91cEl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdhdmF0YXJHcm91cENvbnRhaW5lcicpXG4gICAgYXZhdGFyR3JvdXBDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByb290Q2xhc3NOYW1lczogUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNHcm91cFR5cGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdncm91cCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfYXZhdGFyR3JvdXBXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hdmF0YXJHcm91cENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfYXZhdGFyR3JvdXBJdGVtV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpbkl0ZW1zLmZpcnN0Py5fZWxlbWVudC5vZmZzZXRXaWR0aCA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2F2YXRhckdyb3VwSXRlbVdpdGhNYXJnaW5zV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLm1haW5JdGVtcy5maXJzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2F2YXRhckdyb3VwSXRlbVdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5tYWluSXRlbXMuZmlyc3QuX2VsZW1lbnQpO1xuICAgICAgICBjb25zdCBtYXJnaW5MZWZ0ID0gZWxlbWVudFN0eWxlcy5tYXJnaW5MZWZ0IHx8ICcwJztcbiAgICAgICAgY29uc3QgbWFyZ2luUmlnaHQgPSBlbGVtZW50U3R5bGVzLm1hcmdpblJpZ2h0IHx8ICcwJztcblxuICAgICAgICByZXR1cm4gdGhpcy5fYXZhdGFyR3JvdXBJdGVtV2lkdGggKyBwYXJzZUludChtYXJnaW5MZWZ0LCAxMCkgKyBwYXJzZUludChtYXJnaW5SaWdodCwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzS2V5TWFuYWdlciBpbnN0YW5jZSAqL1xuICAgIHByaXZhdGUgX2tleWJvYXJkRXZlbnRzTWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEF2YXRhckdyb3VwSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuIGhhbmRsZXMgcnRsIHNlcnZpY2UgKi9cbiAgICBwcml2YXRlIF9kaXI6ICdsdHInIHwgJ3J0bCcgfCBudWxsID0gJ2x0cic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29uUmVzaXplKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hc3NpZ25Dc3NDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIG9mKHRydWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVsYXkoNSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jb2xsYXBzZUl0ZW1zKCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuRm9ySXRlbUNoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fc2V0S2V5Ym9hcmRFdmVudHNNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAga2V5VXBIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1haW5JdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl9lbGVtZW50ID09PSBldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5zZXRBY3RpdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBwYXNzaW5nIHRoZSBldmVudCB0byBrZXkgbWFuYWdlciBzbyB3ZSBnZXQgYSBjaGFuZ2UgZmlyZWRcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0QWN0aXZlSXRlbShpdGVtOiBBdmF0YXJHcm91cEl0ZW1EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzZXQoKTtcbiAgICAgICAgdGhpcy5fY29sbGFwc2VJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxsSXRlbXNDb3VudCA9IHRoaXMubWFpbkl0ZW1zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zQ291bnQgPSAwO1xuXG4gICAgICAgIHRoaXMubWFpbkl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICBpdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxhcHNlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEl0ZW1zQ291bnRlciA9IHRoaXMubWFpbkl0ZW1zPy5sZW5ndGggfHwgMDtcbiAgICAgICAgbGV0IGNvbnRlbnRXaWR0aCA9IDA7XG4gICAgICAgIGxldCBpZHggPSAwO1xuICAgICAgICBjb25zdCBhdmF0YXJHcm91cEl0ZW1XaWR0aCA9IHRoaXMuX2F2YXRhckdyb3VwSXRlbVdpZHRoO1xuICAgICAgICBjb25zdCBhdmF0YXJHcm91cEl0ZW1XaXRoTWFyZ2luc1dpZHRoID0gdGhpcy5fYXZhdGFyR3JvdXBJdGVtV2l0aE1hcmdpbnNXaWR0aDtcblxuICAgICAgICB3aGlsZSAoaWR4IDwgYWxsSXRlbXNDb3VudGVyKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb250ZW50V2lkdGggPVxuICAgICAgICAgICAgICAgIGlkeCA9PT0gMCAmJiB0aGlzLmlzR3JvdXBUeXBlXG4gICAgICAgICAgICAgICAgICAgID8gY29udGVudFdpZHRoICsgYXZhdGFyR3JvdXBJdGVtV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgOiBjb250ZW50V2lkdGggKyBhdmF0YXJHcm91cEl0ZW1XaXRoTWFyZ2luc1dpZHRoO1xuXG4gICAgICAgICAgICBpZiAobmV3Q29udGVudFdpZHRoID49IHRoaXMuX2F2YXRhckdyb3VwV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAvLyAtMSBiZWNhdXNlIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGxvb3Agd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgb3ZlcmZsb3cgYnV0dG9uXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SWR4ID0gaWR4IC0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJmbG93SXRlbXNDb3VudCA9IGFsbEl0ZW1zQ291bnRlciAtIG5ld0lkeDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYWluSXRlbXNUb0hpZGUgPSB0aGlzLm1haW5JdGVtcy50b0FycmF5KCkuc2xpY2UobmV3SWR4KTtcbiAgICAgICAgICAgICAgICBtYWluSXRlbXNUb0hpZGUuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXQuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgaXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRlbnRXaWR0aCA9IG5ld0NvbnRlbnRXaWR0aDtcbiAgICAgICAgICAgIGlkeCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Gb3JJdGVtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLm1haW5JdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblJlc2l6ZSgpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hc3NpZ25Dc3NDbGFzc2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvb3RDbGFzc05hbWVzID0ge1xuICAgICAgICAgICAgJ2ZkLWF2YXRhci1ncm91cCc6IHRydWUsXG4gICAgICAgICAgICBbYGZkLWF2YXRhci1ncm91cC0tJHt0aGlzLnR5cGV9LXR5cGVgXTogISF0aGlzLnR5cGUsXG4gICAgICAgICAgICBbYGZkLWF2YXRhci1ncm91cC0tJHt0aGlzLnNpemV9YF06ICEhdGhpcy5zaXplLFxuICAgICAgICAgICAgW3RoaXMuY2xhc3NdOiAhIXRoaXMuY2xhc3NcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEtleWJvYXJkRXZlbnRzTWFuYWdlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkRXZlbnRzTWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5tYWluSXRlbXMpXG4gICAgICAgICAgICAud2l0aFdyYXAoKVxuICAgICAgICAgICAgLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJ0bFN1YiA9IHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgoaXNSdGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcblxuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyID0gdGhpcy5fa2V5Ym9hcmRFdmVudHNNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChydGxTdWIpO1xuICAgIH1cbn1cbiIsIjxkaXYgI2F2YXRhckdyb3VwQ29udGFpbmVyIFtjbGFzc109XCJyb290Q2xhc3NOYW1lc1wiIFtpZF09XCJpZFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -1,9 +1,9 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, isDevMode, Optional, Output, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, ElementRef, EventEmitter, Input, isDevMode, Optional, Output, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';
3
- import { DestroyedService } from '@fundamental-ngx/cdk/utils';
4
- import { BehaviorSubject, takeUntil } from 'rxjs';
3
+ import { BehaviorSubject } from 'rxjs';
5
4
  import { MenuComponent } from '@fundamental-ngx/core/menu';
6
5
  import { FD_BREADCRUMB_COMPONENT, FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@fundamental-ngx/cdk/utils";
9
9
  import * as i2 from "@angular/common";
@@ -38,9 +38,9 @@ export class BreadcrumbComponent {
38
38
  }
39
39
  }
40
40
  /** @hidden */
41
- constructor(elementRef, _onDestroy$, _rtlService, _cdr) {
41
+ constructor(elementRef, _destroyRef, _rtlService, _cdr) {
42
42
  this.elementRef = elementRef;
43
- this._onDestroy$ = _onDestroy$;
43
+ this._destroyRef = _destroyRef;
44
44
  this._rtlService = _rtlService;
45
45
  this._cdr = _cdr;
46
46
  /** Whether to append items to the overflow dropdown in reverse order. Default is true. */
@@ -66,7 +66,7 @@ export class BreadcrumbComponent {
66
66
  /** @hidden */
67
67
  ngOnInit() {
68
68
  this._rtlService?.rtl
69
- .pipe(takeUntil(this._onDestroy$))
69
+ .pipe(takeUntilDestroyed(this._destroyRef))
70
70
  .subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'));
71
71
  }
72
72
  /** @hidden */
@@ -116,9 +116,8 @@ export class BreadcrumbComponent {
116
116
  this._items = this._contentItems.toArray();
117
117
  this._cdr.detectChanges();
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i1.DestroyedService }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i0.DestroyRef }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
120
120
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { containerElement: "containerElement", reverse: "reverse", tabIndex: "tabIndex" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { attributes: { "role": "tree" }, classAttribute: "fd-breadcrumb" }, providers: [
121
- DestroyedService,
122
121
  {
123
122
  provide: FD_BREADCRUMB_COMPONENT,
124
123
  useExisting: BreadcrumbComponent
@@ -131,13 +130,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
131
130
  class: 'fd-breadcrumb',
132
131
  role: 'tree'
133
132
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
134
- DestroyedService,
135
133
  {
136
134
  provide: FD_BREADCRUMB_COMPONENT,
137
135
  useExisting: BreadcrumbComponent
138
136
  }
139
137
  ], template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"] }]
140
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DestroyedService }, { type: i1.RtlService, decorators: [{
138
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.DestroyRef }, { type: i1.RtlService, decorators: [{
141
139
  type: Optional
142
140
  }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerElement: [{
143
141
  type: Input
@@ -159,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
159
157
  type: ViewChild,
160
158
  args: [OverflowLayoutComponent]
161
159
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7OztBQUVqRjs7Ozs7Ozs7OztHQVVHO0FBbUJILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7OztPQU1HO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxDQUFjO1FBQy9CLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUNSLDBIQUEwSCxDQUM3SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBMkNELGNBQWM7SUFDZCxZQUNXLFVBQW1DLEVBQ2xDLFdBQTZCLEVBQ2pCLFdBQThCLEVBQzFDLElBQXVCO1FBSHhCLGVBQVUs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O2dCQUNoQyxXQUFXLEVBQUUsbUJBQW1CO2FBQ25DO1NBQ0osd0RBd0NnQiw0QkFBNEIsNkVBSWxDLGFBQWEsa0ZBSWIsdUJBQXVCLGdEQ3BHdEMsMjVIQWdGQTs7MkZEMUJhLG1CQUFtQjtrQkFsQi9CLFNBQVM7K0JBQ0ksZUFBZSxRQUNuQjt3QkFDRixLQUFLLEVBQUUsZUFBZTt3QkFDdEIsSUFBSSxFQUFFLE1BQU07cUJBQ2YsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxnQkFBZ0I7d0JBQ2hCOzRCQUNJLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFdBQVcscUJBQXFCO3lCQUNuQztxQkFDSjs7MEJBZ0VJLFFBQVE7NEVBckRULGdCQUFnQjtzQkFEbkIsS0FBSztnQkFXTixPQUFPO3NCQUROLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFPUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLVSxhQUFhO3NCQUQ3QixlQUFlO3VCQUFDLDRCQUE0QjtnQkFLNUIsY0FBYztzQkFEOUIsU0FBUzt1QkFBQyxhQUFhO2dCQUtQLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJmbG93TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULCBGRF9CUkVBRENSVU1CX0lURU1fQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEJyZWFkY3J1bWIgcGFyZW50IHdyYXBwZXIgZGlyZWN0aXZlLiBNdXN0IGhhdmUgYnJlYWRjcnVtYiBpdGVtIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogYGBgaHRtbFxuICogPGZkLWJyZWFkY3J1bWI+XG4gKiAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAqICAgICAgICAgPGEgZmQtbGluayBbcm91dGVyTGlua109XCInIydcIj5CcmVhZGNydW1iIExpbms8L2E+XG4gKiAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XG4gKiA8L2ZkLWJyZWFkY3J1bWI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1icmVhZGNydW1iJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtYnJlYWRjcnVtYicsXG4gICAgICAgIHJvbGU6ICd0cmVlJ1xuICAgIH0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9CUkVBRENSVU1CX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCcmVhZGNydW1iQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQnJlYWRjcnVtYnMgY29tcG9uZW50IG5vdyB1c2VzIG1vcmUgYWR2YW5jZWQgY2FsY3VsYXRpb24gbWVjaGFuaXNtIHdpdGhvdXQgdGhlIG5lZWQgb2Ygc3BlY2lmeWluZyB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBUaGUgZWxlbWVudCB0byBhY3QgYXMgdGhlIGJyZWFkY3J1bWIgY29udGFpbmVyLiBXaGVuIHByb3ZpZGVkLCB0aGUgYnJlYWRjcnVtYidzIHJlc3BvbnNpdmUgY29sbGFwc2luZyBiZWhhdmlvclxuICAgICAqIHBlcmZvcm1zIGJldHRlci4gV2hlbiBub3QgcHJvdmlkZWQsIHRoZSBpbW1lZGlhdGUgcGFyZW50IGVsZW1lbnQncyB3aWR0aCB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY29udGFpbmVyRWxlbWVudChfOiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnQnJlYWRjcnVtYnMgY29tcG9uZW50IG5vdyB1c2VzIG1vcmUgYWR2YW5jZWQgY2FsY3VsYXRpb24gbWVjaGFuaXNtIHdpdGhvdXQgdGhlIG5lZWQgb2Ygc3BlY2lmeWluZyB0aGUgY29udGFpbmVyIGVsZW1lbnQuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGVuZCBpdGVtcyB0byB0aGUgb3ZlcmZsb3cgZHJvcGRvd24gaW4gcmV2ZXJzZSBvcmRlci4gRGVmYXVsdCBpcyB0cnVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmV2ZXJzZSA9IGZhbHNlO1xuXG4gICAgLyoqIFRhYmluZGV4IG9mIHRoZSBicmVhZGNydW1iLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiSW5kZXggPSAnMCc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdmlzaWJsZSBpdGVtcyBjb3VudCBpcyBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHZpc2libGVJdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gaGlkZGVuIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgaGlkZGVuSXRlbXNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEZEX0JSRUFEQ1JVTUJfSVRFTV9DT01QT05FTlQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudEl0ZW1zOiBRdWVyeUxpc3Q8QnJlYWRjcnVtYkl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE1lbnVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVudUNvbXBvbmVudDogTWVudUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xheW91dENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vdmVyZmxvd0xheW91dDogT3ZlcmZsb3dMYXlvdXRDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQXJyYXkgb2YgYnJlYWRjcnVtYiBpdGVtcy5cbiAgICAgKi9cbiAgICBfaXRlbXM6IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BsYWNlbWVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBsYWNlbWVudD4oJ2JvdHRvbS1zdGFydCcpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIF9vbkRlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlIHwgbnVsbCxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMuX3BsYWNlbWVudCQubmV4dCh2YWx1ZSA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dMYXlvdXQudHJpZ2dlclJlY2FsY3VsYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXZSBjYXRjaCBpbnRlcmFjdGlvbnMgd2l0aCBpdGVtLCBFbnRlciwgU3BhY2UsIE1vdXNlIGNsaWNrIGFuZCBUb3VjaCBjbGljayxcbiAgICAgKiBpZiBvcmlnaW5hbCBlbGVtZW50IGhhZCByb3V0ZXIgbGluayB3ZSBhcmUgcHJveHlpbmcgY2xpY2sgdG8gdGhhdCBlbGVtZW50XG4gICAgICogKi9cbiAgICBpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbTogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQsICRldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChicmVhZGNydW1iSXRlbS5fbmVlZHNDbGlja1Byb3h5KSB7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtLmJyZWFkY3J1bWJMaW5rLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldEl0ZW1zKCk7XG5cbiAgICAgICAgdGhpcy5fY29udGVudEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NldEl0ZW1zKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleURvd25IYW5kbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDb21wb25lbnQudG9nZ2xlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25IaWRkZW5DaGFuZ2UoaXNIaWRkZW46IGJvb2xlYW4sIGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWIuX2RldGFjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWRjcnVtYi5fYXR0YWNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblZpc2libGVJdGVtc0NvdW50Q2hhbmdlKHZpc2libGVJdGVtc0NvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aXNpYmxlSXRlbXNDb3VudC5lbWl0KHZpc2libGVJdGVtc0NvdW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkhpZGRlbkl0ZW1zQ291bnRDaGFuZ2UoaGlkZGVuSXRlbXNDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZGVuSXRlbXNDb3VudC5lbWl0KGhpZGRlbkl0ZW1zQ291bnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnNldFBvcnRhbCgpKTtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLl9jb250ZW50SXRlbXMudG9BcnJheSgpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1vdmVyZmxvdy1sYXlvdXRcbiAgICBbcmV2ZXJzZUhpZGRlbkl0ZW1zXT1cIiFyZXZlcnNlXCJcbiAgICBzaG93TW9yZVBvc2l0aW9uPVwibGVmdFwiXG4gICAgW2VuYWJsZUtleWJvYXJkTmF2aWdhdGlvbl09XCJmYWxzZVwiXG4gICAgKHZpc2libGVJdGVtc0NvdW50KT1cIl9vblZpc2libGVJdGVtc0NvdW50Q2hhbmdlKCRldmVudClcIlxuICAgIChoaWRkZW5JdGVtc0NvdW50KT1cIl9vbkhpZGRlbkl0ZW1zQ291bnRDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJlYWRjcnVtYiBvZiBfaXRlbXNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKmZkT3ZlcmZsb3dJdGVtUmVmPVwiYnJlYWRjcnVtYjsgbGV0IGhpZGRlblwiXG4gICAgICAgICAgICBmZE92ZXJmbG93TGF5b3V0SXRlbVxuICAgICAgICAgICAgKGhpZGRlbkNoYW5nZSk9XCJfb25IaWRkZW5DaGFuZ2UoJGV2ZW50LCBicmVhZGNydW1iKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImJyZWFkY3J1bWIucG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqZmRPdmVyZmxvd0V4cGFuZD1cImxldCBicmVhZGNydW1iczsgaXRlbXM6IF9pdGVtc1wiPlxuICAgICAgICA8ZmQtbWVudSAjbWVudSBbY2xvc2VPbkVzY2FwZUtleV09XCJ0cnVlXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFtwbGFjZW1lbnRdPVwiX3BsYWNlbWVudCQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJlYWRjcnVtYkl0ZW0gb2YgYnJlYWRjcnVtYnNcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsgPyBicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLmRpc2FibGVkIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRjcnVtYkl0ZW0/Lml0ZW0uYnJlYWRjcnVtYkxpbms7IGVsc2UgcG9ydGFsQ29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wcmVmaXhJY29uTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3ByZWZpeEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5saW5rQ29udGVudFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcG9zdGZpeEljb25OYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcG9zdGZpeEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtbWVudS1hZGRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3J0YWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iSXRlbVBvcnRhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZkLW1lbnU+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtYnJlYWRjcnVtYl9faXRlbVwiICpuZ0lmPVwiYnJlYWRjcnVtYnMubGVuZ3RoID4gMFwiIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgZmQtbGlua1xuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJyZWFkY3J1bWJfX2NvbGxhcHNlZFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX2tleURvd25IYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiX2tleURvd25IYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWljb25cbiAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJvdmVyZmxvd1wiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mZC1vdmVyZmxvdy1sYXlvdXQ+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUVoRTs7Ozs7Ozs7OztHQVVHO0FBa0JILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7Ozs7OztPQU1HO0lBQ0gsSUFDSSxnQkFBZ0IsQ0FBQyxDQUFjO1FBQy9CLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUNSLDBIQUEwSCxDQUM3SCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBMkNELGNBQWM7SUFDZCxZQUNXLFVBQW1DLEVBQ2xDLFdBQXVCLEVBQ1gsV0FBOEIsRUFDMUMsSUFBdUI7UUFIeEIsZUFBVSxH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QUFFLG1CQUFtQjthQUNuQztTQUNKLHdEQXdDZ0IsNEJBQTRCLDZFQUlsQyxhQUFhLGtGQUliLHVCQUF1QixnRENyR3RDLDI1SEFnRkE7OzJGRHpCYSxtQkFBbUI7a0JBakIvQixTQUFTOytCQUNJLGVBQWUsUUFDbkI7d0JBQ0YsS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLElBQUksRUFBRSxNQUFNO3FCQUNmLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsV0FBVyxxQkFBcUI7eUJBQ25DO3FCQUNKOzswQkFnRUksUUFBUTs0RUFyRFQsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdOLE9BQU87c0JBRE4sS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixNQUFNO2dCQU9QLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtVLGFBQWE7c0JBRDdCLGVBQWU7dUJBQUMsNEJBQTRCO2dCQUs1QixjQUFjO3NCQUQ5QixTQUFTO3VCQUFDLGFBQWE7Z0JBS1AsZUFBZTtzQkFEL0IsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVyZmxvd0xheW91dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vdmVyZmxvdy1sYXlvdXQnO1xuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tZW51JztcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRkRfQlJFQURDUlVNQl9DT01QT05FTlQsIEZEX0JSRUFEQ1JVTUJfSVRFTV9DT01QT05FTlQgfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogQnJlYWRjcnVtYiBwYXJlbnQgd3JhcHBlciBkaXJlY3RpdmUuIE11c3QgaGF2ZSBicmVhZGNydW1iIGl0ZW0gY2hpbGQgZGlyZWN0aXZlcy5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZmQtYnJlYWRjcnVtYj5cbiAqICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtPlxuICogICAgICAgICA8YSBmZC1saW5rIFtyb3V0ZXJMaW5rXT1cIicjJ1wiPkJyZWFkY3J1bWIgTGluazwvYT5cbiAqICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAqIDwvZmQtYnJlYWRjcnVtYj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWJyZWFkY3J1bWInLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1icmVhZGNydW1iJyxcbiAgICAgICAgcm9sZTogJ3RyZWUnXG4gICAgfSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEJyZWFkY3J1bWJDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBCcmVhZGNydW1icyBjb21wb25lbnQgbm93IHVzZXMgbW9yZSBhZHZhbmNlZCBjYWxjdWxhdGlvbiBtZWNoYW5pc20gd2l0aG91dCB0aGUgbmVlZCBvZiBzcGVjaWZ5aW5nIHRoZSBjb250YWluZXIgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBlbGVtZW50IHRvIGFjdCBhcyB0aGUgYnJlYWRjcnVtYiBjb250YWluZXIuIFdoZW4gcHJvdmlkZWQsIHRoZSBicmVhZGNydW1iJ3MgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGJlaGF2aW9yXG4gICAgICogcGVyZm9ybXMgYmV0dGVyLiBXaGVuIG5vdCBwcm92aWRlZCwgdGhlIGltbWVkaWF0ZSBwYXJlbnQgZWxlbWVudCdzIHdpZHRoIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjb250YWluZXJFbGVtZW50KF86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdCcmVhZGNydW1icyBjb21wb25lbnQgbm93IHVzZXMgbW9yZSBhZHZhbmNlZCBjYWxjdWxhdGlvbiBtZWNoYW5pc20gd2l0aG91dCB0aGUgbmVlZCBvZiBzcGVjaWZ5aW5nIHRoZSBjb250YWluZXIgZWxlbWVudC4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwZW5kIGl0ZW1zIHRvIHRoZSBvdmVyZmxvdyBkcm9wZG93biBpbiByZXZlcnNlIG9yZGVyLiBEZWZhdWx0IGlzIHRydWUuICovXG4gICAgQElucHV0KClcbiAgICByZXZlcnNlID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIGJyZWFkY3J1bWIuICovXG4gICAgQElucHV0KClcbiAgICB0YWJJbmRleCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQlJFQURDUlVNQl9JVEVNX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50SXRlbXM6IFF1ZXJ5TGlzdDxCcmVhZGNydW1iSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51Q29tcG9uZW50OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGF5b3V0Q29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJmbG93TGF5b3V0OiBPdmVyZmxvd0xheW91dENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIF9pdGVtczogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2VtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UgfCBudWxsLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fcGxhY2VtZW50JC5uZXh0KHZhbHVlID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dC50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNhdGNoIGludGVyYWN0aW9ucyB3aXRoIGl0ZW0sIEVudGVyLCBTcGFjZSwgTW91c2UgY2xpY2sgYW5kIFRvdWNoIGNsaWNrLFxuICAgICAqIGlmIG9yaWdpbmFsIGVsZW1lbnQgaGFkIHJvdXRlciBsaW5rIHdlIGFyZSBwcm94eWluZyBjbGljayB0byB0aGF0IGVsZW1lbnRcbiAgICAgKiAqL1xuICAgIGl0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtOiBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCwgJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJJdGVtLl9uZWVkc0NsaWNrUHJveHkpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uYnJlYWRjcnVtYkxpbmsuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SXRlbXMoKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2V0SXRlbXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfa2V5RG93bkhhbmRsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNvbXBvbmVudC50b2dnbGUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkhpZGRlbkNoYW5nZShpc0hpZGRlbjogYm9vbGVhbiwgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0hpZGRlbikge1xuICAgICAgICAgICAgYnJlYWRjcnVtYi5fZGV0YWNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhZGNydW1iLl9hdHRhY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UodmlzaWJsZUl0ZW1zQ291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVJdGVtc0NvdW50LmVtaXQodmlzaWJsZUl0ZW1zQ291bnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZShoaWRkZW5JdGVtc0NvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRkZW5JdGVtc0NvdW50LmVtaXQoaGlkZGVuSXRlbXNDb3VudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGVudEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uc2V0UG9ydGFsKCkpO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX2NvbnRlbnRJdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLW92ZXJmbG93LWxheW91dFxuICAgIFtyZXZlcnNlSGlkZGVuSXRlbXNdPVwiIXJldmVyc2VcIlxuICAgIHNob3dNb3JlUG9zaXRpb249XCJsZWZ0XCJcbiAgICBbZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uXT1cImZhbHNlXCJcbiAgICAodmlzaWJsZUl0ZW1zQ291bnQpPVwiX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGhpZGRlbkl0ZW1zQ291bnQpPVwiX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIF9pdGVtc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqZmRPdmVyZmxvd0l0ZW1SZWY9XCJicmVhZGNydW1iOyBsZXQgaGlkZGVuXCJcbiAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtXG4gICAgICAgICAgICAoaGlkZGVuQ2hhbmdlKT1cIl9vbkhpZGRlbkNoYW5nZSgkZXZlbnQsIGJyZWFkY3J1bWIpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYi5wb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpmZE92ZXJmbG93RXhwYW5kPVwibGV0IGJyZWFkY3J1bWJzOyBpdGVtczogX2l0ZW1zXCI+XG4gICAgICAgIDxmZC1tZW51ICNtZW51IFtjbG9zZU9uRXNjYXBlS2V5XT1cInRydWVcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW3BsYWNlbWVudF09XCJfcGxhY2VtZW50JCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iSXRlbSBvZiBicmVhZGNydW1ic1wiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluayA/IGJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuZGlzYWJsZWQgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaW50ZXJhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbT8uaXRlbS5icmVhZGNydW1iTGluazsgZWxzZSBwb3J0YWxDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3ByZWZpeEljb25OYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcHJlZml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmxpbmtDb250ZW50UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcnRhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJJdGVtUG9ydGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1icmVhZGNydW1iX19pdGVtXCIgKm5nSWY9XCJicmVhZGNydW1icy5sZW5ndGggPiAwXCIgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBmZC1saW5rXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYnJlYWRjcnVtYl9fY29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2ZkLW92ZXJmbG93LWxheW91dD5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -1,9 +1,9 @@
1
- import { consumerProviderFactory, DestroyedService } from '@fundamental-ngx/cdk/utils';
1
+ import { consumerProviderFactory } from '@fundamental-ngx/cdk/utils';
2
2
  import { ContentDensityObserver } from '../services/content-density-observer.service';
3
3
  /**
4
- * Creates provider for ContentDensityObserver and adds DestroyedService provider
4
+ * Creates provider for ContentDensityObserver
5
5
  */
6
6
  export function contentDensityObserverProviders(params) {
7
- return [DestroyedService, consumerProviderFactory(ContentDensityObserver, params)];
7
+ return [consumerProviderFactory(ContentDensityObserver, params)];
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLXByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NvbnRlbnQtZGVuc2l0eS9wcm92aWRlcnMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLXByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUd0Rjs7R0FFRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxNQUF1QztJQUNuRixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnN1bWVyUHJvdmlkZXJGYWN0b3J5LCBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcblxuLyoqXG4gKiBDcmVhdGVzIHByb3ZpZGVyIGZvciBDb250ZW50RGVuc2l0eU9ic2VydmVyIGFuZCBhZGRzIERlc3Ryb3llZFNlcnZpY2UgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMocGFyYW1zPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtEZXN0cm95ZWRTZXJ2aWNlLCBjb25zdW1lclByb3ZpZGVyRmFjdG9yeShDb250ZW50RGVuc2l0eU9ic2VydmVyLCBwYXJhbXMpXTtcbn1cbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLXByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NvbnRlbnQtZGVuc2l0eS9wcm92aWRlcnMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLXByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUd0Rjs7R0FFRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxNQUF1QztJQUNuRixPQUFPLENBQUMsdUJBQXVCLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnN1bWVyUHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcblxuLyoqXG4gKiBDcmVhdGVzIHByb3ZpZGVyIGZvciBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHBhcmFtcz86IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbY29uc3VtZXJQcm92aWRlckZhY3RvcnkoQ29udGVudERlbnNpdHlPYnNlcnZlciwgcGFyYW1zKV07XG59XG4iXX0=
@@ -1,12 +1,12 @@
1
- import { ElementRef, inject, Injectable, InjectFlags, Injector, Renderer2 } from '@angular/core';
2
- import { DestroyedService } from '@fundamental-ngx/cdk/utils';
3
- import { BehaviorSubject, distinctUntilChanged, map, takeUntil } from 'rxjs';
1
+ import { DestroyRef, ElementRef, inject, Injectable, InjectFlags, Injector, Renderer2 } from '@angular/core';
2
+ import { BehaviorSubject, distinctUntilChanged, map } from 'rxjs';
4
3
  import { ContentDensityObserverSettings } from '../classes/content-density-observer.settings';
5
4
  import { getChangesSource$ } from '../helpers/get-changes-source.provider';
6
5
  import { GlobalContentDensityService } from '../services/global-content-density.service';
7
6
  import { CONTENT_DENSITY_DIRECTIVE } from '../tokens/content-density-directive';
8
7
  import { ContentDensityMode } from '../types/content-density.mode';
9
8
  import { defaultContentDensityObserverConfigs } from '../variables/default-content-density-consumer-config';
9
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "../classes/content-density-observer.settings";
12
12
  const isFactoryProvider = (obj) => !!(obj && obj.useFactory);
@@ -73,10 +73,13 @@ export class ContentDensityObserver extends BehaviorSubject {
73
73
  /** @hidden */
74
74
  this._isCondensed$ = new BehaviorSubject(false);
75
75
  /** @hidden */
76
+ // eslint-disable-next-line @typescript-eslint/member-ordering
76
77
  this.isCompact$ = this._isCompact$.asObservable();
77
78
  /** @hidden */
79
+ // eslint-disable-next-line @typescript-eslint/member-ordering
78
80
  this.isCozy$ = this._isCozy$.asObservable();
79
81
  /** @hidden */
82
+ // eslint-disable-next-line @typescript-eslint/member-ordering
80
83
  this.isCondensed$ = this._isCondensed$.asObservable();
81
84
  /** @hidden */
82
85
  this._globalContentDensityService = inject(GlobalContentDensityService, {
@@ -94,7 +97,7 @@ export class ContentDensityObserver extends BehaviorSubject {
94
97
  /** @hidden */
95
98
  this._renderer = inject(Renderer2);
96
99
  /** @hidden */
97
- this._destroy$ = inject(DestroyedService);
100
+ this._destroyRef = inject(DestroyRef);
98
101
  /** @hidden */
99
102
  this._elementRef = inject(ElementRef);
100
103
  /** @hidden */
@@ -105,13 +108,10 @@ export class ContentDensityObserver extends BehaviorSubject {
105
108
  [ContentDensityMode.CONDENSED]: () => this._isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,
106
109
  [ContentDensityMode.COZY]: () => ContentDensityMode.COZY // No alternative here, everyone should support it
107
110
  };
108
- const destroySub = this._destroy$.subscribe({
109
- complete: () => {
110
- destroySub.unsubscribe();
111
- this.complete();
112
- if (this.config.debug) {
113
- console.log('ContentDensityObserver: destroyed');
114
- }
111
+ this._destroyRef.onDestroy(() => {
112
+ this.complete();
113
+ if (this.config.debug) {
114
+ console.log('ContentDensityObserver: destroyed');
115
115
  }
116
116
  });
117
117
  this.config = {
@@ -143,7 +143,7 @@ export class ContentDensityObserver extends BehaviorSubject {
143
143
  }
144
144
  }
145
145
  return density;
146
- }), distinctUntilChanged(), takeUntil(this._destroy$))
146
+ }), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))
147
147
  .subscribe((density) => {
148
148
  this.next(density);
149
149
  this._applyClass();
@@ -203,4 +203,4 @@ export class ContentDensityObserver extends BehaviorSubject {
203
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentDensityObserver, decorators: [{
204
204
  type: Injectable
205
205
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.ContentDensityObserverSettings }]; } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7OztBQUU1RyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBUSxFQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFdkgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFrQixFQUFFLHFCQUEwQyxFQUFjLEVBQUUsQ0FDM0YsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFD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Q3pCLE9BQU87U0FDVjtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRXhDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUVILHdHQUF3RztZQUN4RyxJQUFJLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDOUQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsOENBQThDO0lBQ3RDLFlBQVksQ0FBQyxPQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMzRSxDQUFDOzhHQWhMUSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEZhY3RvcnlTYW5zUHJvdmlkZXIsIGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0RmxhZ3MsIEluamVjdG9yLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb250ZW50LWRlbnNpdHktb2JzZXJ2ZXIuc2V0dGluZ3MnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCB9IGZyb20gJy4uL2NvbnRlbnQtZGVuc2l0eS50eXBlcyc7XG5pbXBvcnQgeyBnZXRDaGFuZ2VzU291cmNlJCB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWNoYW5nZXMtc291cmNlLnByb3ZpZGVyJztcbmltcG9ydCB7IEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC1jb250ZW50LWRlbnNpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFIH0gZnJvbSAnLi4vdG9rZW5zL2NvbnRlbnQtZGVuc2l0eS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuaW1wb3J0IHsgZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzIH0gZnJvbSAnLi4vdmFyaWFibGVzL2RlZmF1bHQtY29udGVudC1kZW5zaXR5LWNvbnN1bWVyLWNvbmZpZyc7XG5cbmNvbnN0IGlzRmFjdG9yeVByb3ZpZGVyID0gKG9iajogYW55KTogb2JqIGlzIEZhY3RvcnlTYW5zUHJvdmlkZXIgPT4gISEob2JqICYmIChvYmogYXMgRmFjdG9yeVNhbnNQcm92aWRlcikudXNlRmFjdG9yeSk7XG5cbmNvbnN0IGdldERlcHMgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBkZWZhdWx0Q29udGVudERlbnNpdHk6IEZhY3RvcnlTYW5zUHJvdmlkZXIpOiBBcnJheTxhbnk+ID0+XG4gICAgKGRlZmF1bHRDb250ZW50RGVuc2l0eS5kZXBzIHx8IFtdKS5tYXAoKGRlcCk6IGFueSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlO1xuICAgICAgICAgICAgbGV0IGZsYWdzID0gSW5qZWN0RmxhZ3MuRGVmYXVsdDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkZXAubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IGRlcFtpbmRleF1bJ19fTkdfRElfRkxBR19fJ107XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbGFnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBmbGFnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBkZXBbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQodHlwZSwgdW5kZWZpbmVkLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluamVjdG9yLmdldChkZXAsIHVuZGVmaW5lZCwgSW5qZWN0RmxhZ3MuRGVmYXVsdCk7XG4gICAgfSk7XG5cbmNvbnN0IGdldERlZmF1bHRDb250ZW50RGVuc2l0eSA9IChcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgY29uZmlndXJhdGlvbjogUmVxdWlyZWQ8Q29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzPlxuKTogQ29udGVudERlbnNpdHlNb2RlID0+IHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkgYXMgQ29udGVudERlbnNpdHlNb2RlO1xuICAgIH1cbiAgICBpZiAoaXNGYWN0b3J5UHJvdmlkZXIoY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpKSB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBnZXREZXBzKGluamVjdG9yLCBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSk7XG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eS51c2VGYWN0b3J5KC4uLmRlcHMpO1xuICAgIH1cbiAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59O1xuXG5jb25zdCBpbml0aWFsQ29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb24/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3Ncbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgY29uc3Qgc2VydmljZVZhbHVlID0gaW5qZWN0b3IuZ2V0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwgbnVsbCwgSW5qZWN0RmxhZ3MuT3B0aW9uYWwpPy5jdXJyZW50Q29udGVudERlbnNpdHk7XG4gICAgaWYgKHNlcnZpY2VWYWx1ZSkge1xuICAgICAgICByZXR1cm4gc2VydmljZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGVmYXVsdENvbnRlbnREZW5zaXR5KGluamVjdG9yLCB7XG4gICAgICAgIC4uLmRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyxcbiAgICAgICAgLi4uKGNvbmZpZ3VyYXRpb24gfHwge30pXG4gICAgfSk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudERlbnNpdHlPYnNlcnZlciBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxDb250ZW50RGVuc2l0eU1vZGU+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29tcGFjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ296eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29uZGVuc2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY29uZmlnOiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvbXBhY3QkID0gdGhpcy5faXNDb21wYWN0JC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ296eSQgPSB0aGlzLl9pc0NvenkkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb25kZW5zZWQkID0gdGhpcy5faXNDb25kZW5zZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGFjdCQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ296eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ296eSQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29uZGVuc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25kZW5zZWQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gaW5qZWN0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA9IGluamVjdChDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiB8IG51bGwgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveWVkU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PiB8IG51bGwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRzID0gW3RoaXMuX2VsZW1lbnRSZWZdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbHRlcm5hdGl2ZVRvID0ge1xuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEKSA/IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRURdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCA6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZIC8vIE5vIGFsdGVybmF0aXZlIGhlcmUsIGV2ZXJ5b25lIHNob3VsZCBzdXBwb3J0IGl0XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIF9wcm92aWRlZENvbmZpZz86IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncykge1xuICAgICAgICBzdXBlcihpbml0aWFsQ29udGVudERlbnNpdHkoX2luamVjdG9yLCBfcHJvdmlkZWRDb25maWcpKTtcblxuICAgICAgICBjb25zdCBkZXN0cm95U3ViID0gdGhpcy5fZGVzdHJveSQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVzdHJveVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlc3Ryb3llZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgICAgICAuLi4odGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8uY29uZmlnID8/IHt9KSxcbiAgICAgICAgICAgIC4uLihfcHJvdmlkZWRDb25maWcgfHwge30pXG4gICAgICAgIH07XG5cbiAgICAgICAgZ2V0Q2hhbmdlc1NvdXJjZSQoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgY29udGVudERlbnNpdHlEaXJlY3RpdmU6IHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5U2VydmljZTogdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBhcmVudENvbnRlbnREZW5zaXR5U2VydmljZTogdGhpcy5jb25maWcucmVzdHJpY3RDaGlsZENvbnRlbnREZW5zaXR5XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy5hc09ic2VydmFibGUoKSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChkZW5zaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgY2hhbmdlZCB0byAke2RlbnNpdHl9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZChkZW5zaXR5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQ29udGVudERlbnNpdHlPYnNlcnZlcjogJHtkZW5zaXR5fSBpcyBub3Qgc3VwcG9ydGVkLiBGYWlsaW5nIGJhY2sgdG8gYWx0ZXJuYXRpdmUgb25lLmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FsdGVybmF0aXZlVG9bZGVuc2l0eV0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlbnNpdHkgJHtkZW5zaXR5fSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbnNpdHk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkZW5zaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGRlbnNpdHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvbXBhY3QkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ296eSQubmV4dChkZW5zaXR5ID09PSBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb25kZW5zZWQkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN1bWUoLi4uY29uc3VtZXJzOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMuY29uY2F0KC4uLmNvbnN1bWVycy5tYXAoKGMpID0+IGMuZWxlbWVudFJlZikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyB0aGUgc3RyZWFtIGFuZCBjbG9zZXMgYWxsIGludGVybmFsIHN1YnNjcmlwdGlvbnMuXG4gICAgICovXG4gICAgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvenkkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29tcGFjdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLnNwbGljZSh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGNvbnN1bWVyLmVsZW1lbnRSZWYpLCAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGx5Q2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWc/Lm1vZGlmaWVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IHRoaXMuY29uZmlnLm1vZGlmaWVycztcblxuICAgICAgICBjb25zdCBwYXJlbnRDb250ZW50RGVuc2l0eUVxdWFsID0gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8udmFsdWUgPT09IHRoaXMudmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhtb2RpZmllcnMpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyPy5yZW1vdmVDbGFzcyhlbGVtZW50Py5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFNpbXBseSByZW1vdmUgYWxsIG1vZGlmaWVycyBmcm9tIGN1cnJlbnQgZWxlbWVudC4gQ29udGVudCBkZW5zaXR5IHN0YXRlIGlzIGNvdmVyZWQgYnkgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAocGFyZW50Q29udGVudERlbnNpdHlFcXVhbCAmJiAhdGhpcy5jb25maWcuYWx3YXlzQWRkTW9kaWZpZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcj8uYWRkQ2xhc3MoZWxlbWVudD8ubmF0aXZlRWxlbWVudCwgbW9kaWZpZXJzW3RoaXMudmFsdWVdISk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZGVuc2l0eSBpcyBzdXBwb3J0ZWQgKi9cbiAgICBwcml2YXRlIF9pc1N1cHBvcnRlZChkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnN1cHBvcnRlZENvbnRlbnREZW5zaXR5Py5pbmNsdWRlcyhkZW5zaXR5KSA/PyBmYWxzZTtcbiAgICB9XG59XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jb250ZW50LWRlbnNpdHkvc2VydmljZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUU5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRWhFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFRLEVBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUssR0FBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUV2SCxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQWtCLEVBQUUscUJBQTBDLEVBQWMsRUFBRSxDQUMzRixDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMs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QUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRXhDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUVILHdHQUF3RztZQUN4RyxJQUFJLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDOUQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsOENBQThDO0lBQ3RDLFlBQVksQ0FBQyxPQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUMzRSxDQUFDOzhHQWhMUSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEZhY3RvcnlTYW5zUHJvdmlkZXIsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0RmxhZ3MsXG4gICAgSW5qZWN0b3IsXG4gICAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3MgfSBmcm9tICcuLi9jbGFzc2VzL2NvbnRlbnQtZGVuc2l0eS1vYnNlcnZlci5zZXR0aW5ncyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0IH0gZnJvbSAnLi4vY29udGVudC1kZW5zaXR5LnR5cGVzJztcbmltcG9ydCB7IGdldENoYW5nZXNTb3VyY2UkIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtY2hhbmdlcy1zb3VyY2UucHJvdmlkZXInO1xuaW1wb3J0IHsgR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ2xvYmFsLWNvbnRlbnQtZGVuc2l0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENPTlRFTlRfREVOU0lUWV9ESVJFQ1RJVkUgfSBmcm9tICcuLi90b2tlbnMvY29udGVudC1kZW5zaXR5LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICcuLi90eXBlcy9jb250ZW50LWRlbnNpdHkubW9kZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MgfSBmcm9tICcuLi92YXJpYWJsZXMvZGVmYXVsdC1jb250ZW50LWRlbnNpdHktY29uc3VtZXItY29uZmlnJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgaXNGYWN0b3J5UHJvdmlkZXIgPSAob2JqOiBhbnkpOiBvYmogaXMgRmFjdG9yeVNhbnNQcm92aWRlciA9PiAhIShvYmogJiYgKG9iaiBhcyBGYWN0b3J5U2Fuc1Byb3ZpZGVyKS51c2VGYWN0b3J5KTtcblxuY29uc3QgZ2V0RGVwcyA9IChpbmplY3RvcjogSW5qZWN0b3IsIGRlZmF1bHRDb250ZW50RGVuc2l0eTogRmFjdG9yeVNhbnNQcm92aWRlcik6IEFycmF5PGFueT4gPT5cbiAgICAoZGVmYXVsdENvbnRlbnREZW5zaXR5LmRlcHMgfHwgW10pLm1hcCgoZGVwKTogYW55ID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVwKSkge1xuICAgICAgICAgICAgbGV0IHR5cGU7XG4gICAgICAgICAgICBsZXQgZmxhZ3MgPSBJbmplY3RGbGFncy5EZWZhdWx0O1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlcC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmbGFnID0gZGVwW2luZGV4XVsnX19OR19ESV9GTEFHX18nXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZsYWcgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IGZsYWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGRlcFtpbmRleF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluamVjdG9yLmdldCh0eXBlLCB1bmRlZmluZWQsIGZsYWdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KGRlcCwgdW5kZWZpbmVkLCBJbmplY3RGbGFncy5EZWZhdWx0KTtcbiAgICB9KTtcblxuY29uc3QgZ2V0RGVmYXVsdENvbnRlbnREZW5zaXR5ID0gKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb25maWd1cmF0aW9uOiBSZXF1aXJlZDxDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M+XG4pOiBDb250ZW50RGVuc2l0eU1vZGUgPT4ge1xuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSBhcyBDb250ZW50RGVuc2l0eU1vZGU7XG4gICAgfVxuICAgIGlmIChpc0ZhY3RvcnlQcm92aWRlcihjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSkpIHtcbiAgICAgICAgY29uc3QgZGVwcyA9IGdldERlcHMoaW5qZWN0b3IsIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5KTtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5LnVzZUZhY3RvcnkoLi4uZGVwcyk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3Rvci5nZXQoY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHksIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbn07XG5cbmNvbnN0IGluaXRpYWxDb250ZW50RGVuc2l0eSA9IChcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgY29uZmlndXJhdGlvbj86IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5nc1xuKTogQ29udGVudERlbnNpdHlNb2RlID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlVmFsdWUgPSBpbmplY3Rvci5nZXQoR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlLCBudWxsLCBJbmplY3RGbGFncy5PcHRpb25hbCk/LmN1cnJlbnRDb250ZW50RGVuc2l0eTtcbiAgICBpZiAoc2VydmljZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBnZXREZWZhdWx0Q29udGVudERlbnNpdHkoaW5qZWN0b3IsIHtcbiAgICAgICAgLi4uZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzLFxuICAgICAgICAuLi4oY29uZmlndXJhdGlvbiB8fCB7fSlcbiAgICB9KTtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50RGVuc2l0eU9ic2VydmVyIGV4dGVuZHMgQmVoYXZpb3JTdWJqZWN0PENvbnRlbnREZW5zaXR5TW9kZT4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY29uZmlnOiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbXBhY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvenkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc0NvbmRlbnNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgcmVhZG9ubHkgaXNDb21wYWN0JCA9IHRoaXMuX2lzQ29tcGFjdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHJlYWRvbmx5IGlzQ296eSQgPSB0aGlzLl9pc0NvenkkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICByZWFkb25seSBpc0NvbmRlbnNlZCQgPSB0aGlzLl9pc0NvbmRlbnNlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNDb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb21wYWN0JC52YWx1ZTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNDb3p5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb3p5JC52YWx1ZTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNDb25kZW5zZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvbmRlbnNlZCQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgPSBpbmplY3QoR2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gaW5qZWN0KENPTlRFTlRfREVOU0lUWV9ESVJFQ1RJVkUsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IGluamVjdChDb250ZW50RGVuc2l0eU9ic2VydmVyLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBza2lwU2VsZjogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyIHwgbnVsbCA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPGFueT4gfCBudWxsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50cyA9IFt0aGlzLl9lbGVtZW50UmVmXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWx0ZXJuYXRpdmVUbyA9IHtcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEIDogQ29udGVudERlbnNpdHlNb2RlLkNPWlksXG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PlxuICAgICAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQoQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogKCk6IENvbnRlbnREZW5zaXR5TW9kZSA9PiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSAvLyBObyBhbHRlcm5hdGl2ZSBoZXJlLCBldmVyeW9uZSBzaG91bGQgc3VwcG9ydCBpdFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBfcHJvdmlkZWRDb25maWc/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoaW5pdGlhbENvbnRlbnREZW5zaXR5KF9pbmplY3RvciwgX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgdGhpcy5fZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlc3Ryb3llZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyxcbiAgICAgICAgICAgIC4uLih0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy5jb25maWcgPz8ge30pLFxuICAgICAgICAgICAgLi4uKF9wcm92aWRlZENvbmZpZyB8fCB7fSlcbiAgICAgICAgfTtcblxuICAgICAgICBnZXRDaGFuZ2VzU291cmNlJCh7XG4gICAgICAgICAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eURpcmVjdGl2ZTogdGhpcy5fY29udGVudERlbnNpdHlEaXJlY3RpdmUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudERlbnNpdHlTZXJ2aWNlOiB0aGlzLl9nbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFyZW50Q29udGVudERlbnNpdHlTZXJ2aWNlOiB0aGlzLmNvbmZpZy5yZXN0cmljdENoaWxkQ29udGVudERlbnNpdHlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LmFzT2JzZXJ2YWJsZSgpID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRlbnNpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ29udGVudERlbnNpdHlPYnNlcnZlcjogZGVuc2l0eSBjaGFuZ2VkIHRvICR7ZGVuc2l0eX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzU3VwcG9ydGVkKGRlbnNpdHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiAke2RlbnNpdHl9IGlzIG5vdCBzdXBwb3J0ZWQuIEZhaWxpbmcgYmFjayB0byBhbHRlcm5hdGl2ZSBvbmUuYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWx0ZXJuYXRpdmVUb1tkZW5zaXR5XSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGVudERlbnNpdHlPYnNlcnZlcjogZGVuc2l0eSAke2RlbnNpdHl9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVuc2l0eTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dChkZW5zaXR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb21wYWN0JC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvenkkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPWlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdW1lKC4uLmNvbnN1bWVyczogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmNvbmNhdCguLi5jb25zdW1lcnMubWFwKChjKSA9PiBjLmVsZW1lbnRSZWYpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZXMgdGhlIHN0cmVhbSBhbmQgY2xvc2VzIGFsbCBpbnRlcm5hbCBzdWJzY3JpcHRpb25zLlxuICAgICAqL1xuICAgIG92ZXJyaWRlIGNvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvbmRlbnNlZCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faXNDb3p5JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvbXBhY3QkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzID0gW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVDb25zdW1lcihjb25zdW1lcjogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbGVtZW50cy5zcGxpY2UodGhpcy5fZWxlbWVudHMuaW5kZXhPZihjb25zdW1lci5lbGVtZW50UmVmKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBseUNsYXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnPy5tb2RpZmllcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSB0aGlzLmNvbmZpZy5tb2RpZmllcnM7XG5cbiAgICAgICAgY29uc3QgcGFyZW50Q29udGVudERlbnNpdHlFcXVhbCA9IHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LnZhbHVlID09PSB0aGlzLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMobW9kaWZpZXJzKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlcj8ucmVtb3ZlQ2xhc3MoZWxlbWVudD8ubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBTaW1wbHkgcmVtb3ZlIGFsbCBtb2RpZmllcnMgZnJvbSBjdXJyZW50IGVsZW1lbnQuIENvbnRlbnQgZGVuc2l0eSBzdGF0ZSBpcyBjb3ZlcmVkIGJ5IHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgICAgaWYgKHBhcmVudENvbnRlbnREZW5zaXR5RXF1YWwgJiYgIXRoaXMuY29uZmlnLmFsd2F5c0FkZE1vZGlmaWVycykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXI/LmFkZENsYXNzKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQsIG1vZGlmaWVyc1t0aGlzLnZhbHVlXSEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgdGhlIGdpdmVuIGRlbnNpdHkgaXMgc3VwcG9ydGVkICovXG4gICAgcHJpdmF0ZSBfaXNTdXBwb3J0ZWQoZGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5zdXBwb3J0ZWRDb250ZW50RGVuc2l0eT8uaW5jbHVkZXMoZGVuc2l0eSkgPz8gZmFsc2U7XG4gICAgfVxufVxuIl19