@wemake4u/form-player-se 1.0.39 → 1.0.41

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 (86) hide show
  1. package/esm2022/lib/builtIn/builtIn.mjs +24 -0
  2. package/esm2022/lib/builtIn/console.json +253 -0
  3. package/esm2022/lib/builtIn/dialog.json +109 -0
  4. package/esm2022/lib/builtIn/feel.json +26 -0
  5. package/esm2022/lib/builtIn/form.json +172 -0
  6. package/esm2022/lib/builtIn/formGroup.json +218 -0
  7. package/esm2022/lib/builtIn/formatter.json +112 -0
  8. package/esm2022/lib/builtIn/function.json +53 -0
  9. package/esm2022/lib/builtIn/register.json +14 -0
  10. package/esm2022/lib/components/setFilter/setFilter.component.mjs +35 -5
  11. package/esm2022/lib/controls/accordion.mjs +50 -3
  12. package/esm2022/lib/controls/control.mjs +70 -25
  13. package/esm2022/lib/controls/factory.mjs +42 -42
  14. package/esm2022/lib/controls/tab.mjs +47 -25
  15. package/esm2022/lib/controls/table.mjs +89 -15
  16. package/esm2022/lib/controls/textfield.mjs +4 -3
  17. package/esm2022/lib/directives/accordionpanel.directive.mjs +10 -5
  18. package/esm2022/lib/directives/collapse.directive.mjs +22 -12
  19. package/esm2022/lib/directives/collapsepatch.directive.mjs +2 -1
  20. package/esm2022/lib/directives/datetime.directive.mjs +18 -21
  21. package/esm2022/lib/directives/dropdown.directive.mjs +31 -16
  22. package/esm2022/lib/directives/grid.directive.mjs +10 -8
  23. package/esm2022/lib/directives/readonly.directive.mjs +10 -9
  24. package/esm2022/lib/directives/register.directive.mjs +32 -15
  25. package/esm2022/lib/directives/required.directive.mjs +57 -0
  26. package/esm2022/lib/directives/tabcontrol.directive.mjs +10 -9
  27. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +28 -5
  28. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +46 -21
  29. package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +32 -10
  30. package/esm2022/lib/services/event.service.mjs +17 -6
  31. package/esm2022/lib/services/formatter.service.mjs +3 -1
  32. package/esm2022/lib/services/grid.service.mjs +4 -1
  33. package/esm2022/lib/services/listener.service.mjs +23 -0
  34. package/esm2022/lib/services/navigation.service.mjs +35 -0
  35. package/esm2022/lib/services/programmability.service.mjs +54 -38
  36. package/esm2022/lib/services/register.service.mjs +40 -2
  37. package/esm2022/lib/services/state.service.mjs +40 -0
  38. package/esm2022/lib/services/status.service.mjs +10 -5
  39. package/esm2022/lib/services/subscribe.service.mjs +54 -0
  40. package/esm2022/lib/services/validation.service.mjs +11 -2
  41. package/esm2022/lib/utils/deepEqual.mjs +46 -0
  42. package/esm2022/lib/utils/navigation.mjs +20 -0
  43. package/esm2022/lib/utils/observable.mjs +7 -0
  44. package/esm2022/lib/utils/patch.mjs +17 -0
  45. package/esm2022/lib/utils/proxy.mjs +28 -1
  46. package/esm2022/lib/utils/resolveRefs.mjs +67 -0
  47. package/esm2022/public-api.mjs +7 -1
  48. package/fesm2022/wemake4u-form-player-se.mjs +2027 -276
  49. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  50. package/lib/builtIn/builtIn.d.ts +32 -0
  51. package/lib/components/setFilter/setFilter.component.d.ts +1 -0
  52. package/lib/controls/accordion.d.ts +5 -1
  53. package/lib/controls/control.d.ts +31 -12
  54. package/lib/controls/factory.d.ts +2 -4
  55. package/lib/controls/tab.d.ts +9 -6
  56. package/lib/controls/table.d.ts +16 -5
  57. package/lib/controls/textfield.d.ts +1 -1
  58. package/lib/directives/accordionpanel.directive.d.ts +4 -2
  59. package/lib/directives/collapse.directive.d.ts +5 -3
  60. package/lib/directives/datetime.directive.d.ts +7 -8
  61. package/lib/directives/dropdown.directive.d.ts +6 -3
  62. package/lib/directives/grid.directive.d.ts +4 -3
  63. package/lib/directives/readonly.directive.d.ts +3 -4
  64. package/lib/directives/register.directive.d.ts +4 -3
  65. package/lib/directives/required.directive.d.ts +17 -0
  66. package/lib/directives/tabcontrol.directive.d.ts +5 -6
  67. package/lib/dynamic-fields/dynamic-fields.component.d.ts +4 -1
  68. package/lib/dynamic-form/dynamic-form.component.d.ts +4 -1
  69. package/lib/dynamic-host/dynamic-host.component.d.ts +6 -2
  70. package/lib/services/event.service.d.ts +8 -2
  71. package/lib/services/listener.service.d.ts +11 -0
  72. package/lib/services/navigation.service.d.ts +11 -0
  73. package/lib/services/programmability.service.d.ts +8 -9
  74. package/lib/services/register.service.d.ts +9 -0
  75. package/lib/services/state.service.d.ts +14 -0
  76. package/lib/services/status.service.d.ts +5 -1
  77. package/lib/services/subscribe.service.d.ts +14 -0
  78. package/lib/services/validation.service.d.ts +5 -2
  79. package/lib/utils/deepEqual.d.ts +1 -0
  80. package/lib/utils/navigation.d.ts +6 -0
  81. package/lib/utils/observable.d.ts +2 -0
  82. package/lib/utils/patch.d.ts +1 -0
  83. package/lib/utils/proxy.d.ts +2 -0
  84. package/lib/utils/resolveRefs.d.ts +12 -0
  85. package/package.json +1 -1
  86. package/public-api.d.ts +6 -0
@@ -1,9 +1,14 @@
1
1
  import { Directive, Host } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "ngx-sirio-lib";
4
5
  export class AccordionPanelDirective {
5
- constructor(panel) {
6
- panel.opened.subscribe((event) => {
6
+ destroyRef;
7
+ constructor(panel, destroyRef) {
8
+ this.destroyRef = destroyRef;
9
+ panel.opened
10
+ .pipe(takeUntilDestroyed(this.destroyRef))
11
+ .subscribe((event) => {
7
12
  const element = event.component.body.el.nativeElement;
8
13
  // delay height calculation to allow for DOM updates
9
14
  setTimeout(() => {
@@ -13,7 +18,7 @@ export class AccordionPanelDirective {
13
18
  }, 0);
14
19
  });
15
20
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionPanelDirective, deps: [{ token: i1.SirioAccordionPanelComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionPanelDirective, deps: [{ token: i1.SirioAccordionPanelComponent, host: true }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive });
17
22
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: AccordionPanelDirective, isStandalone: true, selector: "[accordionPanel]", ngImport: i0 });
18
23
  }
19
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccordionPanelDirective, decorators: [{
@@ -24,5 +29,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
24
29
  }]
25
30
  }], ctorParameters: () => [{ type: i1.SirioAccordionPanelComponent, decorators: [{
26
31
  type: Host
27
- }] }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9ucGFuZWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9hY2NvcmRpb25wYW5lbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9oRCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLFlBQ1UsS0FBbUM7UUFFM0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFrRCxFQUFFLEVBQUU7WUFDNUUsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFZLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUMvRCxvREFBb0Q7WUFDcEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCw0Q0FBNEM7Z0JBQzVDLDZDQUE2QztnQkFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FkVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUlJLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9BY2NvcmRpb25QYW5lbENvbXBvbmVudCwgTmd4U2lyaW9FdmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWNjb3JkaW9uUGFuZWxdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25QYW5lbERpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBwYW5lbDogU2lyaW9BY2NvcmRpb25QYW5lbENvbXBvbmVudFxyXG4gICkge1xyXG4gICAgcGFuZWwub3BlbmVkLnN1YnNjcmliZSgoZXZlbnQ6IE5neFNpcmlvRXZlbnQ8U2lyaW9BY2NvcmRpb25QYW5lbENvbXBvbmVudD4pID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IChldmVudC5jb21wb25lbnQuYm9keSBhcyBhbnkpLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIC8vIGRlbGF5IGhlaWdodCBjYWxjdWxhdGlvbiB0byBhbGxvdyBmb3IgRE9NIHVwZGF0ZXNcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy9jb25zdCBzY3JvbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodDtcclxuICAgICAgICAvL2VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7c2Nyb2xsSGVpZ2h0fXB4YDtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pOyAgICBcclxuICB9XHJcbn1cclxuIl19
32
+ }] }, { type: i0.DestroyRef }] });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9ucGFuZWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9hY2NvcmRpb25wYW5lbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU9oRSxNQUFNLE9BQU8sdUJBQXVCO0lBSXhCO0lBRlYsWUFDVSxLQUFtQyxFQUNuQyxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRTlCLEtBQUssQ0FBQyxNQUFNO2FBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxLQUFrRCxFQUFFLEVBQUU7WUFDbEUsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFZLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUMvRCxvREFBb0Q7WUFDcEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCw0Q0FBNEM7Z0JBQzVDLDZDQUE2QztnQkFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FqQlUsdUJBQXVCOzRGQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFJSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBIb3N0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgU2lyaW9BY2NvcmRpb25QYW5lbENvbXBvbmVudCwgTmd4U2lyaW9FdmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWNjb3JkaW9uUGFuZWxdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25QYW5lbERpcmVjdGl2ZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBwYW5lbDogU2lyaW9BY2NvcmRpb25QYW5lbENvbXBvbmVudCxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICkge1xyXG4gICAgcGFuZWwub3BlbmVkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmd4U2lyaW9FdmVudDxTaXJpb0FjY29yZGlvblBhbmVsQ29tcG9uZW50PikgPT4ge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gKGV2ZW50LmNvbXBvbmVudC5ib2R5IGFzIGFueSkuZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgLy8gZGVsYXkgaGVpZ2h0IGNhbGN1bGF0aW9uIHRvIGFsbG93IGZvciBET00gdXBkYXRlc1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvL2NvbnN0IHNjcm9sbEhlaWdodCA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgIC8vZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtzY3JvbGxIZWlnaHR9cHhgO1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7ICAgIFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,12 +1,16 @@
1
1
  import { Directive, Input } from '@angular/core';
2
- import { Subscription } from 'rxjs';
2
+ import { ListenerService } from '../services/listener.service';
3
3
  import { Texts } from '../locale/locale';
4
4
  import { localize } from '../locale/localize';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
6
  import * as i0 from "@angular/core";
6
- import * as i1 from "@wemake4u/interact";
7
+ import * as i1 from "../services/listener.service";
8
+ import * as i2 from "@wemake4u/interact";
7
9
  export class CollapseDirective {
8
10
  el;
9
11
  renderer;
12
+ destroyRef;
13
+ listenerService;
10
14
  languageService;
11
15
  maxHeight = null;
12
16
  currentHeight = null;
@@ -16,18 +20,19 @@ export class CollapseDirective {
16
20
  viewInitialized = false;
17
21
  timeoutFocusOut;
18
22
  unlistenFocusOut;
19
- subscription = new Subscription();
20
- constructor(el, renderer, languageService) {
23
+ constructor(el, renderer, destroyRef, listenerService, languageService) {
21
24
  this.el = el;
22
25
  this.renderer = renderer;
26
+ this.destroyRef = destroyRef;
27
+ this.listenerService = listenerService;
23
28
  this.languageService = languageService;
24
- this.subscription = languageService.onLanguageChanged()
29
+ languageService.onLanguageChanged()
30
+ .pipe(takeUntilDestroyed(this.destroyRef))
25
31
  .subscribe(() => this.applyCollapseLogic());
26
32
  }
27
33
  ngOnDestroy() {
28
34
  this.resetButton();
29
35
  this.resetFocusHandler();
30
- this.subscription.unsubscribe();
31
36
  }
32
37
  ngAfterViewInit() {
33
38
  this.viewInitialized = true;
@@ -84,7 +89,7 @@ export class CollapseDirective {
84
89
  this.renderer.addClass(this.iconSpan, 'fa-chevron-down');
85
90
  this.renderer.appendChild(this.button, text);
86
91
  this.renderer.appendChild(this.button, this.iconSpan);
87
- this.renderer.listen(this.button, 'click', () => this.toggleExpand());
92
+ this.listenerService.listen(this.button, 'click', () => this.toggleExpand());
88
93
  this.renderer.setStyle(this.button, 'margin-top', '8px');
89
94
  this.renderer.appendChild(element.parentNode, this.button);
90
95
  }
@@ -144,17 +149,22 @@ export class CollapseDirective {
144
149
  locale(component, key) {
145
150
  return localize(this.language, component, key);
146
151
  }
147
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LanguageService }], target: i0.ɵɵFactoryTarget.Directive });
148
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"] }, usesOnChanges: true, ngImport: i0 });
152
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.DestroyRef }, { token: i1.ListenerService }, { token: i2.LanguageService }], target: i0.ɵɵFactoryTarget.Directive });
153
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CollapseDirective, isStandalone: true, selector: "[collapse]", inputs: { maxHeight: ["collapse", "maxHeight"] }, providers: [
154
+ ListenerService
155
+ ], usesOnChanges: true, ngImport: i0 });
149
156
  }
150
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CollapseDirective, decorators: [{
151
158
  type: Directive,
152
159
  args: [{
153
160
  selector: '[collapse]',
154
- standalone: true
161
+ standalone: true,
162
+ providers: [
163
+ ListenerService
164
+ ]
155
165
  }]
156
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LanguageService }], propDecorators: { maxHeight: [{
166
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.DestroyRef }, { type: i1.ListenerService }, { type: i2.LanguageService }], propDecorators: { maxHeight: [{
157
167
  type: Input,
158
168
  args: ['collapse']
159
169
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9jb2xsYXBzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQU05QyxNQUFNLE9BQU8saUJBQWlCO0lBWVI7SUFDUjtJQUNBO0lBYk8sU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFM0MsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFDcEMsTUFBTSxHQUE2QixJQUFJLENBQUM7SUFDeEMsUUFBUSxHQUF1QixJQUFJLENBQUM7SUFDcEMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGVBQWUsQ0FBTTtJQUNyQixnQkFBZ0IsQ0FBYztJQUM5QixZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxQyxZQUFvQixFQUFjLEVBQ3RCLFFBQW1CLEVBQ25CLGVBQWdDO1FBRnhCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFFMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsaUJBQWlCLEVBQUU7YUFDcEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENB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QUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFjLEVBQUUsR0FBVztRQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO3dHQXZLVSxpQkFBaUI7NEZBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3FJQUVvQixTQUFTO3NCQUEzQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQHdlbWFrZTR1L2ludGVyYWN0JztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsYXBzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoJ2NvbGxhcHNlJykgbWF4SGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBcclxuICBwcml2YXRlIGN1cnJlbnRIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaWNvblNwYW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBleHBhbmRlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdmlld0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB0aW1lb3V0Rm9jdXNPdXQ6IGFueTtcclxuICBwcml2YXRlIHVubGlzdGVuRm9jdXNPdXQhOiAoKSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgICAsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICAgLCBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBsYW5ndWFnZVNlcnZpY2Uub25MYW5ndWFnZUNoYW5nZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2V0QnV0dG9uKCk7XHJcbiAgICB0aGlzLnJlc2V0Rm9jdXNIYW5kbGVyKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy5tYXhIZWlnaHQ7XHJcbiAgICB0aGlzLmFwcGx5Q29sbGFwc2VMb2dpYygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10gfHwgY2hhbmdlc1snbWF4SGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy5tYXhIZWlnaHQ7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdJbml0aWFsaXplZCkge1xyXG4gICAgICAgIHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0TGFuZ3VhZ2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDb2xsYXBzZUxvZ2ljKCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICB0aGlzLnJlc2V0U3R5bGVzKCk7XHJcbiAgICBcclxuICAgIHRoaXMucmVzZXRCdXR0b24oKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZXNldEZvY3VzSGFuZGxlcigpO1xyXG5cclxuICAgIGlmICh0aGlzLm1heEhlaWdodCA9PSBudWxsIHx8IHRoaXMubWF4SGVpZ2h0IDw9IDApIHtcclxuICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hcHBseVN0eWxlKCk7XHJcblxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5tYXhIZWlnaHQhKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUJ1dHRvbigpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlGb2N1c0hhbmRsZXIoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseVN0eWxlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke3RoaXMubWF4SGVpZ2h0fXB4YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0U3R5bGVzKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgbnVsbCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXgtaGVpZ2h0JywgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5QnV0dG9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5idXR0b24sICdzaXJpby1idG4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sICdwYWRkaW5nJywgJzBweCcpO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGhpcy5sb2NhbGUoVGV4dHMsICdSZWFkTW9yZScpKTtcclxuXHJcbiAgICB0aGlzLmljb25TcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaWNvblNwYW4sICdmYScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmljb25TcGFuLCAnZmEtY2hldnJvbi1kb3duJyk7XHJcbiAgICBcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5idXR0b24sIHRleHQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgdGhpcy5pY29uU3Bhbik7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMudG9nZ2xlRXhwYW5kKCkpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgJ21hcmdpbi10b3AnLCAnOHB4Jyk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChlbGVtZW50LnBhcmVudE5vZGUsIHRoaXMuYnV0dG9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRCdXR0b24oKSB7XHJcbiAgICBpZiAodGhpcy5idXR0b24gJiYgdGhpcy5idXR0b24ucGFyZW50Tm9kZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuYnV0dG9uLnBhcmVudE5vZGUsIHRoaXMuYnV0dG9uKTtcclxuICAgICAgdGhpcy5idXR0b24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUZvY3VzSGFuZGxlcigpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICB0aGlzLnVubGlzdGVuRm9jdXNPdXQgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAnZm9jdXNvdXQnLCAoKSA9PiB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRGb2N1c091dCk7XHJcbiAgICAgIHRoaXMudGltZW91dEZvY3VzT3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCdORVNTVU4gZWxlbWVudG8gaW50ZXJubyBoYSBwacO5IGlsIGZvY3VzJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEZvY3VzSGFuZGxlcigpIHtcclxuICAgIGlmICh0aGlzLnVubGlzdGVuRm9jdXNPdXQpIHtcclxuICAgICAgdGhpcy51bmxpc3RlbkZvY3VzT3V0KCk7XHJcbiAgICB9XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0Rm9jdXNPdXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVFeHBhbmQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xyXG4gICAgICB0aGlzLmV4cGFuZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBhbmQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnbWF4LWhlaWdodCcsICdub25lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdvdmVyZmxvdycsICd2aXNpYmxlJyk7XHJcbiAgICB0aGlzLmJ1dHRvbiEuY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCA9IHRoaXMubG9jYWxlKFRleHRzLCAnUmVhZExlc3MnKTtcclxuICAgIHRoaXMudXBkYXRlSWNvbignZmEtY2hldnJvbi11cCcsICdmYS1jaGV2cm9uLWRvd24nKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnbWF4LWhlaWdodCcsIGAke3RoaXMuY3VycmVudEhlaWdodH1weGApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLmJ1dHRvbiEuY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCA9IHRoaXMubG9jYWxlKFRleHRzLCAnUmVhZE1vcmUnKTtcclxuICAgIHRoaXMudXBkYXRlSWNvbignZmEtY2hldnJvbi1kb3duJywgJ2ZhLWNoZXZyb24tdXAnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSWNvbihhZGQ6IHN0cmluZywgcmVtb3ZlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmljb25TcGFuKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5pY29uU3BhbiwgcmVtb3ZlKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmljb25TcGFuLCBhZGQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBcclxufVxyXG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9jb2xsYXBzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsS0FBSyxFQUFtRCxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQVNoRSxNQUFNLE9BQU8saUJBQWlCO0lBV1I7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQWRPLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRTNDLGFBQWEsR0FBa0IsSUFBSSxDQUFDO0lBQ3BDLE1BQU0sR0FBNkIsSUFBSSxDQUFDO0lBQ3hDLFFBQVEsR0FBdUIsSUFBSSxDQUFDO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixlQUFlLENBQU07SUFDckIsZ0JBQWdCLENBQWM7SUFFdEMsWUFBb0IsRUFBYyxFQUN0QixRQUFtQixFQUNuQixVQUFzQixFQUN0QixlQUFnQyxFQUNoQyxlQUFnQztRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRTFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRTthQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFB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SUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLFNBQWMsRUFBRSxHQUFXO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7d0dBektVLGlCQUFpQjs0RkFBakIsaUJBQWlCLDJHQUpqQjtZQUNULGVBQWU7U0FDaEI7OzRGQUVVLGlCQUFpQjtrQkFQN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVCxlQUFlO3FCQUNoQjtpQkFDRjs0TEFFb0IsU0FBUztzQkFBM0IsS0FBSzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saXN0ZW5lci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCdjb2xsYXBzZScpIG1heEhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgcHJpdmF0ZSBjdXJyZW50SGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGljb25TcGFuOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgZXhwYW5kZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHZpZXdJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdGltZW91dEZvY3VzT3V0OiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmxpc3RlbkZvY3VzT3V0ITogKCkgPT4gdm9pZDtcclxuICBcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmXHJcbiAgICAsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICAgLCBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcclxuICAgICwgcHJpdmF0ZSBsaXN0ZW5lclNlcnZpY2U6IExpc3RlbmVyU2VydmljZSAgIFxyXG4gICAgLCBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcblxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLm9uTGFuZ3VhZ2VDaGFuZ2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hcHBseUNvbGxhcHNlTG9naWMoKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRCdXR0b24oKTtcclxuICAgIHRoaXMucmVzZXRGb2N1c0hhbmRsZXIoKTsgICAgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLm1heEhlaWdodDtcclxuICAgIHRoaXMuYXBwbHlDb2xsYXBzZUxvZ2ljKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snbGFuZ3VhZ2UnXSB8fCBjaGFuZ2VzWydtYXhIZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLm1heEhlaWdodDtcclxuICAgICAgaWYgKHRoaXMudmlld0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUNvbGxhcHNlTG9naWMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbGxhcHNlTG9naWMoKTogdm9pZCB7XHJcbiAgICBcclxuICAgIHRoaXMucmVzZXRTdHlsZXMoKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZXNldEJ1dHRvbigpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJlc2V0Rm9jdXNIYW5kbGVyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMubWF4SGVpZ2h0ID09IG51bGwgfHwgdGhpcy5tYXhIZWlnaHQgPD0gMCkge1xyXG4gICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmFwcGx5U3R5bGUoKTtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLm1heEhlaWdodCEpIHtcclxuICAgICAgICB0aGlzLmFwcGx5QnV0dG9uKCk7XHJcbiAgICAgICAgdGhpcy5hcHBseUZvY3VzSGFuZGxlcigpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5U3R5bGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdtYXgtaGVpZ2h0JywgYCR7dGhpcy5tYXhIZWlnaHR9cHhgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRTdHlsZXMoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCBudWxsKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCBudWxsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlCdXR0b24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy5idXR0b24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmJ1dHRvbiwgJ3NpcmlvLWJ0bicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmJ1dHRvbiwgJ3BhZGRpbmcnLCAnMHB4Jyk7XHJcblxyXG4gICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRNb3JlJykpO1xyXG5cclxuICAgIHRoaXMuaWNvblNwYW4gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5pY29uU3BhbiwgJ2ZhJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaWNvblNwYW4sICdmYS1jaGV2cm9uLWRvd24nKTtcclxuICAgIFxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbiwgdGV4dCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuYnV0dG9uLCB0aGlzLmljb25TcGFuKTtcclxuXHJcbiAgICB0aGlzLmxpc3RlbmVyU2VydmljZS5saXN0ZW4odGhpcy5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMudG9nZ2xlRXhwYW5kKCkpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5idXR0b24sICdtYXJnaW4tdG9wJywgJzhweCcpO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0QnV0dG9uKCkge1xyXG4gICAgaWYgKHRoaXMuYnV0dG9uICYmIHRoaXMuYnV0dG9uLnBhcmVudE5vZGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmJ1dHRvbi5wYXJlbnROb2RlLCB0aGlzLmJ1dHRvbik7XHJcbiAgICAgIHRoaXMuYnV0dG9uID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGb2N1c0hhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgdGhpcy51bmxpc3RlbkZvY3VzT3V0ID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ2ZvY3Vzb3V0JywgKCkgPT4ge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0Rm9jdXNPdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXRGb2N1c091dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICghZWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xyXG4gICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygnTkVTU1VOIGVsZW1lbnRvIGludGVybm8gaGEgcGnDuSBpbCBmb2N1cycpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRGb2N1c0hhbmRsZXIoKSB7XHJcbiAgICBpZiAodGhpcy51bmxpc3RlbkZvY3VzT3V0KSB7XHJcbiAgICAgIHRoaXMudW5saXN0ZW5Gb2N1c091dCgpO1xyXG4gICAgfVxyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZvY3VzT3V0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRXhwYW5kKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5leHBhbmQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnb3ZlcmZsb3cnLCAndmlzaWJsZScpO1xyXG4gICAgdGhpcy5idXR0b24hLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQgPSB0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRMZXNzJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUljb24oJ2ZhLWNoZXZyb24tdXAnLCAnZmEtY2hldnJvbi1kb3duJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ21heC1oZWlnaHQnLCBgJHt0aGlzLmN1cnJlbnRIZWlnaHR9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5idXR0b24hLmNoaWxkTm9kZXNbMF0udGV4dENvbnRlbnQgPSB0aGlzLmxvY2FsZShUZXh0cywgJ1JlYWRNb3JlJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUljb24oJ2ZhLWNoZXZyb24tZG93bicsICdmYS1jaGV2cm9uLXVwJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUljb24oYWRkOiBzdHJpbmcsIHJlbW92ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pY29uU3Bhbikge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuaWNvblNwYW4sIHJlbW92ZSk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5pY29uU3BhbiwgYWRkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgXHJcbn1cclxuIl19
@@ -19,6 +19,7 @@ export class CollapsePatchDirective {
19
19
  _closeCollapse();
20
20
  thisRef.renderer.removeClass(thisRef.element, 'is-open');
21
21
  };
22
+ host.activeState = true;
22
23
  }
23
24
  get isOpen() {
24
25
  return this.host._isOpen;
@@ -36,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
36
37
  }], ctorParameters: () => [{ type: i1.SirioCollapseComponent, decorators: [{
37
38
  type: Host
38
39
  }] }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2VwYXRjaC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2NvbGxhcHNlcGF0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRaEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNMO0lBQTVCLFlBQTRCLElBQTRCO1FBQTVCLFNBQUksR0FBSixJQUFJLENBQXdCO1FBRXRELE1BQU0sT0FBTyxHQUFHLElBQVcsQ0FBQztRQUU1QixPQUFPLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQTtRQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzNCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsY0FBYyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUM7SUFFSixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBWSxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO3dHQXpCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9Db2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VFeHRlbnNpb25dJyxcclxuICBleHBvcnRBczogJ2NvbGxhcHNlRXh0ZW5zaW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsYXBzZVBhdGNoRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgaG9zdDogU2lyaW9Db2xsYXBzZUNvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IHRoaXNSZWYgPSBob3N0IGFzIGFueTtcclxuXHJcbiAgICB0aGlzUmVmLl9zZXRDb2xsYXBzZUhlaWdodCA9ICgpID0+IHtcclxuICAgICAgdGhpc1JlZi5yZW5kZXJlci5zZXRTdHlsZSh0aGlzUmVmLmVsZW1lbnQsICdoZWlnaHQnLCAnYXV0bycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9vcGVuQ29sbGFwc2UgPSB0aGlzUmVmLl9vcGVuQ29sbGFwc2UuYmluZCh0aGlzUmVmKTtcclxuICAgIHRoaXNSZWYuX29wZW5Db2xsYXBzZSA9ICgpID0+IHtcclxuICAgICAgX29wZW5Db2xsYXBzZSgpO1xyXG4gICAgICB0aGlzUmVmLnJlbmRlcmVyLmFkZENsYXNzKHRoaXNSZWYuZWxlbWVudCwgJ2lzLW9wZW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgX2Nsb3NlQ29sbGFwc2UgPSB0aGlzUmVmLl9jbG9zZUNvbGxhcHNlLmJpbmQodGhpc1JlZik7XHJcbiAgICB0aGlzUmVmLl9jbG9zZUNvbGxhcHNlID0gKCkgPT4ge1xyXG4gICAgICBfY2xvc2VDb2xsYXBzZSgpO1xyXG4gICAgICB0aGlzUmVmLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXNSZWYuZWxlbWVudCwgJ2lzLW9wZW4nKTtcclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybih0aGlzLmhvc3QgYXMgYW55KS5faXNPcGVuO1xyXG4gIH1cclxufVxyXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2VwYXRjaC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2NvbGxhcHNlcGF0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRaEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNMO0lBQTVCLFlBQTRCLElBQTRCO1FBQTVCLFNBQUksR0FBSixJQUFJLENBQXdCO1FBRXRELE1BQU0sT0FBTyxHQUFHLElBQVcsQ0FBQztRQUU1QixPQUFPLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQTtRQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzNCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsY0FBYyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBWSxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO3dHQTFCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9Db2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VFeHRlbnNpb25dJyxcclxuICBleHBvcnRBczogJ2NvbGxhcHNlRXh0ZW5zaW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2xsYXBzZVBhdGNoRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgaG9zdDogU2lyaW9Db2xsYXBzZUNvbXBvbmVudCkge1xyXG5cclxuICAgIGNvbnN0IHRoaXNSZWYgPSBob3N0IGFzIGFueTtcclxuXHJcbiAgICB0aGlzUmVmLl9zZXRDb2xsYXBzZUhlaWdodCA9ICgpID0+IHtcclxuICAgICAgdGhpc1JlZi5yZW5kZXJlci5zZXRTdHlsZSh0aGlzUmVmLmVsZW1lbnQsICdoZWlnaHQnLCAnYXV0bycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9vcGVuQ29sbGFwc2UgPSB0aGlzUmVmLl9vcGVuQ29sbGFwc2UuYmluZCh0aGlzUmVmKTtcclxuICAgIHRoaXNSZWYuX29wZW5Db2xsYXBzZSA9ICgpID0+IHtcclxuICAgICAgX29wZW5Db2xsYXBzZSgpO1xyXG4gICAgICB0aGlzUmVmLnJlbmRlcmVyLmFkZENsYXNzKHRoaXNSZWYuZWxlbWVudCwgJ2lzLW9wZW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgX2Nsb3NlQ29sbGFwc2UgPSB0aGlzUmVmLl9jbG9zZUNvbGxhcHNlLmJpbmQodGhpc1JlZik7XHJcbiAgICB0aGlzUmVmLl9jbG9zZUNvbGxhcHNlID0gKCkgPT4ge1xyXG4gICAgICBfY2xvc2VDb2xsYXBzZSgpO1xyXG4gICAgICB0aGlzUmVmLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXNSZWYuZWxlbWVudCwgJ2lzLW9wZW4nKTtcclxuICAgIH07XHJcblxyXG4gICAgaG9zdC5hY3RpdmVTdGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuKHRoaXMuaG9zdCBhcyBhbnkpLl9pc09wZW47XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,32 +2,30 @@ import { Directive, Input, forwardRef } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { toLocalString, toLocalDateString, isValidTime, isValidDate } from '../utils/date';
4
4
  import { dateToStore } from '../directives/date.directive';
5
- import { Subject } from 'rxjs';
6
- import { takeUntil } from 'rxjs/operators';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@angular/forms";
9
8
  export class DateTimeCoordinatorDirective {
9
+ destroyRef;
10
+ constructor(destroyRef) {
11
+ this.destroyRef = destroyRef;
12
+ }
10
13
  datePicker;
11
14
  timePicker;
12
15
  onChange = (_) => { };
13
16
  onTouched = () => { };
14
17
  dateValue = null;
15
18
  timeValue = null;
16
- destroy$ = new Subject();
17
- ngOnDestroy() {
18
- this.destroy$.next();
19
- this.destroy$.complete();
20
- }
21
19
  ngAfterViewInit() {
22
20
  this.datePicker?.blurEvent
23
- .pipe(takeUntil(this.destroy$))
21
+ .pipe(takeUntilDestroyed(this.destroyRef))
24
22
  .subscribe((event) => {
25
23
  const value = dateToStore(event.component.value);
26
24
  this.dateValue = isValidDate(value ?? "") ? value : null;
27
25
  this.recalculate("date");
28
26
  });
29
27
  this.timePicker?.blurEvent
30
- .pipe(takeUntil(this.destroy$))
28
+ .pipe(takeUntilDestroyed(this.destroyRef))
31
29
  .subscribe((event) => {
32
30
  this.timeValue = isValidTime(event.component.value)
33
31
  ? event.component.value : null;
@@ -80,7 +78,7 @@ export class DateTimeCoordinatorDirective {
80
78
  let combined = `${this.dateValue}T${this.timeValue}:00`;
81
79
  this.onChange(combined);
82
80
  }
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateTimeCoordinatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateTimeCoordinatorDirective, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive });
84
82
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DateTimeCoordinatorDirective, isStandalone: true, selector: "[dateTimeCoordinator]", inputs: { datePicker: "datePicker", timePicker: "timePicker" }, providers: [
85
83
  {
86
84
  provide: NG_VALUE_ACCESSOR,
@@ -102,7 +100,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
102
100
  }
103
101
  ]
104
102
  }]
105
- }], propDecorators: { datePicker: [{
103
+ }], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { datePicker: [{
106
104
  type: Input
107
105
  }], timePicker: [{
108
106
  type: Input
@@ -110,22 +108,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
108
  const classNames = ['sirio-is-invalid', 'sirio-is-valid', 'sirio-is-warning', 'sirio-is-pending'];
111
109
  export class DateTimeValidationDirective {
112
110
  ngControl;
111
+ destroyRef;
113
112
  renderer;
114
113
  isWarning = false;
115
114
  showWhenValid = false;
116
- sub;
117
- constructor(ngControl, renderer) {
115
+ constructor(ngControl, destroyRef, renderer) {
118
116
  this.ngControl = ngControl;
117
+ this.destroyRef = destroyRef;
119
118
  this.renderer = renderer;
120
119
  }
121
- ngOnDestroy() {
122
- this.sub?.unsubscribe();
123
- }
124
120
  ngAfterViewInit() {
125
121
  if (!this.ngControl?.statusChanges) {
126
122
  return;
127
123
  }
128
- this.sub = this.ngControl.statusChanges.subscribe(status => {
124
+ this.ngControl.statusChanges
125
+ .pipe(takeUntilDestroyed(this.destroyRef))
126
+ .subscribe(status => {
129
127
  const coordinator = this.getCoordinator();
130
128
  if (coordinator) {
131
129
  this.checkValidation(coordinator.datePicker.validationTarget);
@@ -161,7 +159,6 @@ export class DateTimeValidationDirective {
161
159
  if (!isValid && !this.isWarning) {
162
160
  this.setInvalid(validationTarget);
163
161
  }
164
- //this.cd.detectChanges();
165
162
  }
166
163
  cleanupValidation(validationTarget) {
167
164
  classNames.forEach(c => this.renderer.removeClass(validationTarget, c));
@@ -182,7 +179,7 @@ export class DateTimeValidationDirective {
182
179
  this.cleanupValidation(validationTarget);
183
180
  this.renderer.addClass(validationTarget, className);
184
181
  }
185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateTimeValidationDirective, deps: [{ token: i1.NgControl }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateTimeValidationDirective, deps: [{ token: i1.NgControl }, { token: i0.DestroyRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
186
183
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DateTimeValidationDirective, isStandalone: true, selector: "[dateTimeValidator]", inputs: { isWarning: "isWarning", showWhenValid: "showWhenValid" }, ngImport: i0 });
187
184
  }
188
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateTimeValidationDirective, decorators: [{
@@ -191,9 +188,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
191
188
  selector: '[dateTimeValidator]',
192
189
  standalone: true
193
190
  }]
194
- }], ctorParameters: () => [{ type: i1.NgControl }, { type: i0.Renderer2 }], propDecorators: { isWarning: [{
191
+ }], ctorParameters: () => [{ type: i1.NgControl }, { type: i0.DestroyRef }, { type: i0.Renderer2 }], propDecorators: { isWarning: [{
195
192
  type: Input
196
193
  }], showWhenValid: [{
197
194
  type: Input
198
195
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRldGltZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsS0FBSyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUF3QixpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBYTNDLE1BQU0sT0FBTyw0QkFBNEI7SUFFOUIsVUFBVSxDQUE0QjtJQUN0QyxVQUFVLENBQTRCO0lBRXZDLFFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLFNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdEIsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFaEMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUViLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUzthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FB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LFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxRQUFRLENBQUMsZ0JBQXFCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sVUFBVSxDQUFDLGdCQUFxQjtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxnQkFBcUI7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxVQUFVLENBQUMsZ0JBQXFCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sVUFBVSxDQUFDLGdCQUFxQixFQUFFLFNBQWlCO1FBQ3pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7d0dBckZVLDJCQUEyQjs0RkFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtzR0FFVSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEFmdGVyVmlld0luaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4U2lyaW9FdmVudCwgU2lyaW9EYXRlcGlja2VyQ29tcG9uZW50LCBTaXJpb1RpbWVwaWNrZXJDb21wb25lbnQsIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IHRvTG9jYWxTdHJpbmcsIHRvTG9jYWxEYXRlU3RyaW5nLCBpc1ZhbGlkVGltZSwgaXNWYWxpZERhdGUsIGlzVmFsaWREYXRlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvZGF0ZSc7XHJcbmltcG9ydCB7IGRhdGVUb1N0b3JlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkYXRlVGltZUNvb3JkaW5hdG9yXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lQ29vcmRpbmF0b3JEaXJlY3RpdmUpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29vcmRpbmF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZGF0ZVBpY2tlciE6IFNpcmlvRGF0ZXBpY2tlckNvbXBvbmVudDtcclxuICBASW5wdXQoKSB0aW1lUGlja2VyITogU2lyaW9UaW1lcGlja2VyQ29tcG9uZW50O1xyXG4gIFxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7IH07XHJcblxyXG4gIHByaXZhdGUgZGF0ZVZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHRpbWVWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYmx1ckV2ZW50XHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5neFNpcmlvRXZlbnQ8U2lyaW9EYXRlcGlja2VyQ29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0ZVRvU3RvcmUoZXZlbnQuY29tcG9uZW50LnZhbHVlKTtcclxuICAgICAgICB0aGlzLmRhdGVWYWx1ZSA9IGlzVmFsaWREYXRlKHZhbHVlID8/IFwiXCIpID8gdmFsdWUgOiBudWxsO1xyXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGUoXCJkYXRlXCIpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRpbWVQaWNrZXI/LmJsdXJFdmVudFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOZ3hTaXJpb0V2ZW50PFNpcmlvVGltZXBpY2tlckNvbXBvbmVudD4pID0+IHtcclxuICAgICAgICB0aGlzLnRpbWVWYWx1ZSA9IGlzVmFsaWRUaW1lKGV2ZW50LmNvbXBvbmVudC52YWx1ZSlcclxuICAgICAgICAgID8gZXZlbnQuY29tcG9uZW50LnZhbHVlIDogbnVsbDtcclxuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlKFwidGltZVwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5kYXRlVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlcj8ud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy50aW1lUGlja2VyPy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xyXG4gICAgY29uc3QgbG9jYWwgPSB0b0xvY2FsU3RyaW5nKGRhdGUpO1xyXG4gICAgdGhpcy5kYXRlVmFsdWUgPSBsb2NhbCA/IGxvY2FsLnN1YnN0cmluZygwLCAxMCkgOiBudWxsO1xyXG4gICAgdGhpcy50aW1lVmFsdWUgPSBsb2NhbCA/IGxvY2FsLnN1YnN0cmluZygxMSwgMTYpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8ud3JpdGVWYWx1ZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICB0aGlzLnRpbWVQaWNrZXI/LndyaXRlVmFsdWUodGhpcy50aW1lVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXI/LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgICB0aGlzLnRpbWVQaWNrZXI/LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XHJcblxyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGUocGFydDogXCJkYXRlXCIgfCBcInRpbWVcIikge1xyXG4gICAgLy8gQ2FzZTogYm90aCBmaWVsZHMgY2xlYXJlZFxyXG4gICAgaWYgKCF0aGlzLmRhdGVWYWx1ZSAmJiAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhc2U6IGRhdGUgaXMgc2V0IGJ1dCB0aW1lIGlzIGVtcHR5IOKGkiBhcHBseSBkZWZhdWx0IHRpbWVcclxuICAgIGlmICh0aGlzLmRhdGVWYWx1ZSAmJiAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy50aW1lVmFsdWUgPSAnMDA6MDAnO1xyXG4gICAgICB0aGlzLnRpbWVQaWNrZXI/LndyaXRlVmFsdWUodGhpcy50aW1lVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhc2U6IHRpbWUgaXMgc2V0IGJ1dCBkYXRlIGlzIGVtcHR5IOKGkiBhcHBseSBkZWZhdWx0IGRhdGVcclxuICAgIGlmIChwYXJ0ID09PSBcInRpbWVcIiAmJiAhdGhpcy5kYXRlVmFsdWUgJiYgdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLmRhdGVWYWx1ZSA9IHRvTG9jYWxEYXRlU3RyaW5nKHRvZGF5KTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyPy53cml0ZVZhbHVlKHRoaXMuZGF0ZVZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBhZnRlciBhcHBseWluZyB0aGUgcnVsZXMgb25lIG9mIHRoZSB2YWx1ZXMgaXMgc3RpbGwgbWlzc2luZyDihpIgbnVsbFxyXG4gICAgaWYgKCF0aGlzLmRhdGVWYWx1ZSB8fCAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21iaW5lZCA9IGAke3RoaXMuZGF0ZVZhbHVlfVQke3RoaXMudGltZVZhbHVlfTowMGA7XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShjb21iaW5lZCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuY29uc3QgY2xhc3NOYW1lcyA9IFsnc2lyaW8taXMtaW52YWxpZCcsICdzaXJpby1pcy12YWxpZCcsICdzaXJpby1pcy13YXJuaW5nJywgJ3NpcmlvLWlzLXBlbmRpbmcnXTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2RhdGVUaW1lVmFsaWRhdG9yXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSAgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVZhbGlkYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGlzV2FybmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dXaGVuVmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpXHJcbiAgeyAgICBcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubmdDb250cm9sPy5zdGF0dXNDaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YiA9IHRoaXMubmdDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgIGNvbnN0IGNvb3JkaW5hdG9yID0gdGhpcy5nZXRDb29yZGluYXRvcigpO1xyXG4gICAgICBpZiAoY29vcmRpbmF0b3IpIHtcclxuICAgICAgICB0aGlzLmNoZWNrVmFsaWRhdGlvbihjb29yZGluYXRvci5kYXRlUGlja2VyLnZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tWYWxpZGF0aW9uKGNvb3JkaW5hdG9yLnRpbWVQaWNrZXIudmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb29yZGluYXRvcigpOiBEYXRlVGltZUNvb3JkaW5hdG9yRGlyZWN0aXZlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LnZhbHVlQWNjZXNzb3IgYXMgRGF0ZVRpbWVDb29yZGluYXRvckRpcmVjdGl2ZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1ZhbGlkYXRpb24odmFsaWRhdGlvblRhcmdldDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnN0YXR1cyA9PT0gXCJQRU5ESU5HXCIpIHtcclxuICAgICAgdGhpcy5zZXRQZW5kaW5nKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMubmdDb250cm9sPy5kaXNhYmxlZDtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY2xlYW51cFZhbGlkYXRpb24odmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLm5nQ29udHJvbD8udmFsaWQ7XHJcbiAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICBpZiAodGhpcy5zaG93V2hlblZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRWYWxpZCh2YWxpZGF0aW9uVGFyZ2V0KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNsZWFudXBWYWxpZGF0aW9uKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzVmFsaWQgJiYgdGhpcy5pc1dhcm5pbmcpIHtcclxuICAgICAgdGhpcy5zZXRXYXJuaW5nKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc1ZhbGlkICYmICF0aGlzLmlzV2FybmluZykge1xyXG4gICAgICB0aGlzLnNldEludmFsaWQodmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhbnVwVmFsaWRhdGlvbih2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIGNsYXNzTmFtZXMuZm9yRWFjaChjID0+IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModmFsaWRhdGlvblRhcmdldCwgYykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWxpZCh2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCAnc2lyaW8taXMtdmFsaWQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW52YWxpZCh2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCAnc2lyaW8taXMtaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXYXJuaW5nKHZhbGlkYXRpb25UYXJnZXQ6IGFueSkge1xyXG4gICAgdGhpcy5hcHBseUNsYXNzKHZhbGlkYXRpb25UYXJnZXQsICdzaXJpby1pcy13YXJuaW5nJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBlbmRpbmcodmFsaWRhdGlvblRhcmdldDogYW55KSB7XHJcbiAgICB0aGlzLmFwcGx5Q2xhc3ModmFsaWRhdGlvblRhcmdldCwgJ3NpcmlvLWlzLXBlbmRpbmcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0OiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsZWFudXBWYWxpZGF0aW9uKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRldGltZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsS0FBSyxFQUFFLFVBQVUsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUF3QixpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFhaEUsTUFBTSxPQUFPLDRCQUE0QjtJQUc3QjtJQURWLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUNoQyxDQUFDO0lBRVEsVUFBVSxDQUE0QjtJQUN0QyxVQUFVLENBQTRCO0lBRXZDLFFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLFNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdEIsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFeEMsZUFBZTtRQUViLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUzthQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLEtBQThDLEVBQUUsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVM7YUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxLQUE4QyxFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU8sSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsaUJBQWlCLENBQUMsRUFBTyxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVqRCxXQUFXLENBQUMsSUFBcUI7UUFDdkMsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsMkRBQTJEO1FBQzNELElBQUksSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQztRQUV4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7d0dBeEZVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLG9JQVI1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7NEZBRVUsNEJBQTRCO2tCQVh4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLENBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytFQU9VLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSzs7QUFxRlIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBTWxHLE1BQU0sT0FBTywyQkFBMkI7SUFJbEI7SUFDVjtJQUNBO0lBTEQsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixhQUFhLEdBQVksS0FBSyxDQUFDO0lBRXhDLFlBQW9CLFNBQW9CLEVBQzlCLFVBQXNCLEVBQ3RCLFFBQW1CO1FBRlQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7SUFFN0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTthQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUE2QyxJQUFJLElBQUksQ0FBQztJQUMvRSxDQUFDO0lBRU8sZUFBZSxDQUFDLGdCQUFxQjtRQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1FBQzVDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN6QyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO1FBQ3RDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUVILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxnQkFBcUI7UUFDN0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLFFBQVEsQ0FBQyxnQkFBcUI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxVQUFVLENBQUMsZ0JBQXFCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sVUFBVSxDQUFDLGdCQUFxQjtRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxnQkFBcUI7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxVQUFVLENBQUMsZ0JBQXFCLEVBQUUsU0FBaUI7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQzt3R0FsRlUsMkJBQTJCOzRGQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytIQUVVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIGZvcndhcmRSZWYsIFJlbmRlcmVyMiwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4U2lyaW9FdmVudCwgU2lyaW9EYXRlcGlja2VyQ29tcG9uZW50LCBTaXJpb1RpbWVwaWNrZXJDb21wb25lbnQsIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IHRvTG9jYWxTdHJpbmcsIHRvTG9jYWxEYXRlU3RyaW5nLCBpc1ZhbGlkVGltZSwgaXNWYWxpZERhdGUsIGlzVmFsaWREYXRlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvZGF0ZSc7XHJcbmltcG9ydCB7IGRhdGVUb1N0b3JlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2RhdGVUaW1lQ29vcmRpbmF0b3JdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVDb29yZGluYXRvckRpcmVjdGl2ZSksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb29yZGluYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYpIHtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVQaWNrZXIhOiBTaXJpb0RhdGVwaWNrZXJDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgdGltZVBpY2tlciE6IFNpcmlvVGltZXBpY2tlckNvbXBvbmVudDtcclxuICBcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG5cclxuICBwcml2YXRlIGRhdGVWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0aW1lVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5kYXRlUGlja2VyPy5ibHVyRXZlbnRcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOZ3hTaXJpb0V2ZW50PFNpcmlvRGF0ZXBpY2tlckNvbXBvbmVudD4pID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGVUb1N0b3JlKGV2ZW50LmNvbXBvbmVudC52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsdWUgPSBpc1ZhbGlkRGF0ZSh2YWx1ZSA/PyBcIlwiKSA/IHZhbHVlIDogbnVsbDtcclxuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlKFwiZGF0ZVwiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy50aW1lUGlja2VyPy5ibHVyRXZlbnRcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOZ3hTaXJpb0V2ZW50PFNpcmlvVGltZXBpY2tlckNvbXBvbmVudD4pID0+IHtcclxuICAgICAgICB0aGlzLnRpbWVWYWx1ZSA9IGlzVmFsaWRUaW1lKGV2ZW50LmNvbXBvbmVudC52YWx1ZSlcclxuICAgICAgICAgID8gZXZlbnQuY29tcG9uZW50LnZhbHVlIDogbnVsbDtcclxuICAgICAgICB0aGlzLnJlY2FsY3VsYXRlKFwidGltZVwiKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5kYXRlVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlcj8ud3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy50aW1lUGlja2VyPy53cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpO1xyXG4gICAgY29uc3QgbG9jYWwgPSB0b0xvY2FsU3RyaW5nKGRhdGUpO1xyXG4gICAgdGhpcy5kYXRlVmFsdWUgPSBsb2NhbCA/IGxvY2FsLnN1YnN0cmluZygwLCAxMCkgOiBudWxsO1xyXG4gICAgdGhpcy50aW1lVmFsdWUgPSBsb2NhbCA/IGxvY2FsLnN1YnN0cmluZygxMSwgMTYpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8ud3JpdGVWYWx1ZSh0aGlzLmRhdGVWYWx1ZSk7XHJcbiAgICB0aGlzLnRpbWVQaWNrZXI/LndyaXRlVmFsdWUodGhpcy50aW1lVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXI/LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgICB0aGlzLnRpbWVQaWNrZXI/LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XHJcblxyXG4gIHByaXZhdGUgcmVjYWxjdWxhdGUocGFydDogXCJkYXRlXCIgfCBcInRpbWVcIikge1xyXG4gICAgLy8gQ2FzZTogYm90aCBmaWVsZHMgY2xlYXJlZFxyXG4gICAgaWYgKCF0aGlzLmRhdGVWYWx1ZSAmJiAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhc2U6IGRhdGUgaXMgc2V0IGJ1dCB0aW1lIGlzIGVtcHR5IOKGkiBhcHBseSBkZWZhdWx0IHRpbWVcclxuICAgIGlmICh0aGlzLmRhdGVWYWx1ZSAmJiAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy50aW1lVmFsdWUgPSAnMDA6MDAnO1xyXG4gICAgICB0aGlzLnRpbWVQaWNrZXI/LndyaXRlVmFsdWUodGhpcy50aW1lVmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhc2U6IHRpbWUgaXMgc2V0IGJ1dCBkYXRlIGlzIGVtcHR5IOKGkiBhcHBseSBkZWZhdWx0IGRhdGVcclxuICAgIGlmIChwYXJ0ID09PSBcInRpbWVcIiAmJiAhdGhpcy5kYXRlVmFsdWUgJiYgdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLmRhdGVWYWx1ZSA9IHRvTG9jYWxEYXRlU3RyaW5nKHRvZGF5KTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyPy53cml0ZVZhbHVlKHRoaXMuZGF0ZVZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBhZnRlciBhcHBseWluZyB0aGUgcnVsZXMgb25lIG9mIHRoZSB2YWx1ZXMgaXMgc3RpbGwgbWlzc2luZyDihpIgbnVsbFxyXG4gICAgaWYgKCF0aGlzLmRhdGVWYWx1ZSB8fCAhdGhpcy50aW1lVmFsdWUpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21iaW5lZCA9IGAke3RoaXMuZGF0ZVZhbHVlfVQke3RoaXMudGltZVZhbHVlfTowMGA7XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShjb21iaW5lZCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuY29uc3QgY2xhc3NOYW1lcyA9IFsnc2lyaW8taXMtaW52YWxpZCcsICdzaXJpby1pcy12YWxpZCcsICdzaXJpby1pcy13YXJuaW5nJywgJ3NpcmlvLWlzLXBlbmRpbmcnXTtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2RhdGVUaW1lVmFsaWRhdG9yXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSAgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVZhbGlkYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBpc1dhcm5pbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93V2hlblZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpXHJcbiAgeyAgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmdDb250cm9sLnN0YXR1c0NoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoc3RhdHVzID0+IHtcclxuICAgICAgICBjb25zdCBjb29yZGluYXRvciA9IHRoaXMuZ2V0Q29vcmRpbmF0b3IoKTtcclxuICAgICAgICBpZiAoY29vcmRpbmF0b3IpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tWYWxpZGF0aW9uKGNvb3JkaW5hdG9yLmRhdGVQaWNrZXIudmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRhdGlvbihjb29yZGluYXRvci50aW1lUGlja2VyLnZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvb3JkaW5hdG9yKCk6IERhdGVUaW1lQ29vcmRpbmF0b3JEaXJlY3RpdmUgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8udmFsdWVBY2Nlc3NvciBhcyBEYXRlVGltZUNvb3JkaW5hdG9yRGlyZWN0aXZlID8/IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrVmFsaWRhdGlvbih2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uc3RhdHVzID09PSBcIlBFTkRJTkdcIikge1xyXG4gICAgICB0aGlzLnNldFBlbmRpbmcodmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5uZ0NvbnRyb2w/LmRpc2FibGVkO1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jbGVhbnVwVmFsaWRhdGlvbih2YWxpZGF0aW9uVGFyZ2V0KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMubmdDb250cm9sPy52YWxpZDtcclxuICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgIGlmICh0aGlzLnNob3dXaGVuVmFsaWQpIHtcclxuICAgICAgICB0aGlzLnNldFZhbGlkKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2xlYW51cFZhbGlkYXRpb24odmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghaXNWYWxpZCAmJiB0aGlzLmlzV2FybmluZykge1xyXG4gICAgICB0aGlzLnNldFdhcm5pbmcodmFsaWRhdGlvblRhcmdldCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzVmFsaWQgJiYgIXRoaXMuaXNXYXJuaW5nKSB7XHJcbiAgICAgIHRoaXMuc2V0SW52YWxpZCh2YWxpZGF0aW9uVGFyZ2V0KTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhbnVwVmFsaWRhdGlvbih2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIGNsYXNzTmFtZXMuZm9yRWFjaChjID0+IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModmFsaWRhdGlvblRhcmdldCwgYykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWxpZCh2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCAnc2lyaW8taXMtdmFsaWQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW52YWxpZCh2YWxpZGF0aW9uVGFyZ2V0OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCAnc2lyaW8taXMtaW52YWxpZCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXYXJuaW5nKHZhbGlkYXRpb25UYXJnZXQ6IGFueSkge1xyXG4gICAgdGhpcy5hcHBseUNsYXNzKHZhbGlkYXRpb25UYXJnZXQsICdzaXJpby1pcy13YXJuaW5nJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBlbmRpbmcodmFsaWRhdGlvblRhcmdldDogYW55KSB7XHJcbiAgICB0aGlzLmFwcGx5Q2xhc3ModmFsaWRhdGlvblRhcmdldCwgJ3NpcmlvLWlzLXBlbmRpbmcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0OiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsZWFudXBWYWxpZGF0aW9uKHZhbGlkYXRpb25UYXJnZXQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh2YWxpZGF0aW9uVGFyZ2V0LCBjbGFzc05hbWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,13 +1,20 @@
1
1
  import { Directive, Host } from '@angular/core';
2
+ import { ListenerService } from '../services/listener.service';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "ngx-sirio-lib";
5
+ import * as i1 from "../services/listener.service";
6
+ import * as i2 from "ngx-sirio-lib";
4
7
  export class DropdownDirective {
5
8
  el;
6
9
  renderer;
10
+ listenerService;
11
+ destroyRef;
7
12
  sirioSelect;
8
- constructor(el, renderer, sirioSelect) {
13
+ constructor(el, renderer, listenerService, destroyRef, sirioSelect) {
9
14
  this.el = el;
10
15
  this.renderer = renderer;
16
+ this.listenerService = listenerService;
17
+ this.destroyRef = destroyRef;
11
18
  this.sirioSelect = sirioSelect;
12
19
  }
13
20
  ngAfterViewInit() {
@@ -40,22 +47,25 @@ export class DropdownDirective {
40
47
  const dropMenu = dropDown.querySelector('.sirio-dropdown-menu');
41
48
  const input = searchable.querySelector('input');
42
49
  this.renderer.insertBefore(dropDown, searchable, dropMenu);
43
- this.renderer.listen(input, 'blur', (event) => {
50
+ this.listenerService.listen(input, 'focus', () => {
51
+ input.select();
52
+ });
53
+ this.listenerService.listen(input, 'blur', (event) => {
44
54
  if (event.relatedTarget !== dropMenu)
45
55
  this.sirioSelect.panel.close();
46
56
  });
47
- this.renderer.listen(input, 'keyup', (event) => {
57
+ this.listenerService.listen(input, 'keyup', (event) => {
48
58
  this.onKeyUp(event, input);
49
59
  });
50
- this.renderer.listen(input, 'keydown', (event) => {
60
+ this.listenerService.listen(input, 'keydown', (event) => {
51
61
  this.onKeyDown(event);
52
62
  });
53
- this.sirioSelect.panel.panelOpened.subscribe(() => {
54
- this.activate(searchable);
55
- });
56
- this.sirioSelect.panel.panelClosed.subscribe(() => {
57
- this.deactivate(searchable);
58
- });
63
+ this.sirioSelect.panel.panelOpened
64
+ .pipe(takeUntilDestroyed(this.destroyRef))
65
+ .subscribe(() => this.activate(searchable));
66
+ this.sirioSelect.panel.panelClosed
67
+ .pipe(takeUntilDestroyed(this.destroyRef))
68
+ .subscribe(() => this.deactivate(searchable));
59
69
  }
60
70
  }
61
71
  handleOptionsChanges() {
@@ -261,16 +271,21 @@ export class DropdownDirective {
261
271
  }
262
272
  return null;
263
273
  }
264
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.SirioSelectComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
265
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DropdownDirective, isStandalone: true, selector: "[dropdown]", ngImport: i0 });
274
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ListenerService }, { token: i0.DestroyRef }, { token: i2.SirioSelectComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });
275
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: DropdownDirective, isStandalone: true, selector: "[dropdown]", providers: [
276
+ ListenerService
277
+ ], ngImport: i0 });
266
278
  }
267
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DropdownDirective, decorators: [{
268
280
  type: Directive,
269
281
  args: [{
270
282
  selector: '[dropdown]',
271
- standalone: true
283
+ standalone: true,
284
+ providers: [
285
+ ListenerService
286
+ ]
272
287
  }]
273
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.SirioSelectComponent, decorators: [{
288
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ListenerService }, { type: i0.DestroyRef }, { type: i2.SirioSelectComponent, decorators: [{
274
289
  type: Host
275
290
  }] }] });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kcm9wZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0MsSUFBSSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7QUFTakcsTUFBTSxPQUFPLGlCQUFpQjtJQUdsQjtJQUNBO0lBQ1E7SUFIbEIsWUFDVSxFQUFjLEVBQ2QsUUFBbUIsRUFDWCxXQUFpQztRQUZ6QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNYLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtJQUVuRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxXQUFXO2VBQ2YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztlQUN2QyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQ2pELENBQUM7WUFDQyxNQUFNLFdBQVcsR0FB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LENBQUM7Z0JBQzNCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxVQUFrQixFQUFFLE9BQVk7UUFDNUQsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBblRVLGlCQUFpQjs0RkFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQU1JLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgSG9zdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tkcm9wZG93bl0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCAgICBcclxuICAgIEBIb3N0KCkgcHJpdmF0ZSBzaXJpb1NlbGVjdDogU2lyaW9TZWxlY3RDb21wb25lbnRcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlVmFsdWUoKTtcclxuICAgIHRoaXMuaGFuZGxlU2VhcmNoYWJsZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVPcHRpb25zQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJlbW92ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZhbHN5VmFsdWVzID0gW251bGwsIGZhbHNlLCAwLCBcIlwiXTtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdFxyXG4gICAgICAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucylcclxuICAgICAgJiYgZmFsc3lWYWx1ZXMuaW5jbHVkZXModGhpcy5zaXJpb1NlbGVjdC52YWx1ZSkpXHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHZhbHVlT3B0aW9uID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQoXHJcbiAgICAgICAgb3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5zaXJpb1NlbGVjdC52YWx1ZVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgICAgdmFsdWVPcHRpb24uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoYWJsZSgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2hhYmxlJyk7XHJcbiAgICBpZiAoc2VhcmNoYWJsZSkge1xyXG4gICAgICBjb25zdCBkcm9wRG93biA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24nKTtcclxuICAgICAgY29uc3QgZHJvcE1lbnUgPSBkcm9wRG93bi5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNlYXJjaGFibGUucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZHJvcERvd24sIHNlYXJjaGFibGUsIGRyb3BNZW51KTtcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0LCAnYmx1cicsIChldmVudDogRm9jdXNFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ICE9PSBkcm9wTWVudSlcclxuICAgICAgICAgIHRoaXMuc2lyaW9TZWxlY3QucGFuZWwuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2tleXVwJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbktleVVwKGV2ZW50LCBpbnB1dCk7ICAgICAgICBcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dCwgJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbE9wZW5lZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGUoc2VhcmNoYWJsZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbENsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZShzZWFyY2hhYmxlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT3B0aW9uc0NoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLm9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5jYW5WYWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVmFsaWRhdG9ycygpO1xyXG4gICAgICB9KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcHRpb25zU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGNhblZhbGlkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdG9yID0gdGhpcy52YWxpZGF0ZU9wdGlvbnMuYmluZCh0aGlzKTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRWYWxpZGF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LmFkZFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVWYWxpZGF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LnJlbW92ZVZhbGlkYXRvcnModGhpcy52YWxpZGF0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmNhblZhbGlkYXRlKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCB2YWx1ZU9wdGlvbiA9IHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5maW5kKFxyXG4gICAgICAgIG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdmFsdWVPcHRpb24pIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogYFwiJHt2YWx1ZX1cIiBub24gw6ggdW4gdmFsb3JlIHZhbGlkb2AgfTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoVmFsaWRhdG9ycygpIHtcclxuICAgIHRoaXMuc2lyaW9TZWxlY3QuY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWFjdGl2YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWUgPSBcIlwiO1xyXG5cclxuICAgIGlmICh0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnNTZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9uc1NlbGVjdGVkWzBdLnRleHRcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG5cclxuICAgIGlmICghaW5wdXQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpbnB1dC52YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICBjb25zdCBkcm9wTWVudSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgdGhpcy5zaG93KG9wdGlvbiwgdHJ1ZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPT0gb3B0aW9uLnRleHQpIHtcclxuICAgICAgICBkcm9wTWVudS5zY3JvbGxUb3AgPSB0aGlzLm5hdGl2ZShvcHRpb24pLm9mZnNldFRvcDtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5wdXQudmFsdWUubGVuZ3RoLCBpbnB1dC52YWx1ZS5sZW5ndGgpO1xyXG4gICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgY2FzZSAnU3BhY2UnOlxyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbXBhcmFibGUoaW5wdXQudmFsdWUpO1xyXG4gICAgbGV0IGZpcnN0TWF0Y2ggPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChvcHRpb24sIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5jb21wYXJhYmxlKG9wdGlvbi50ZXh0KS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIG1hdGNoKTtcclxuICAgICAgaWYgKG1hdGNoICYmIGZpcnN0TWF0Y2gpIHtcclxuICAgICAgICBvcHRpb24uc2V0Rm9jdXMoKTtcclxuICAgICAgICBmaXJzdE1hdGNoID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFuZWxJc09wZW4gPSBwYW5lbC5wYW5lbElzT3BlbjtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcbiAgICBpZiAocGFuZWxJc09wZW4pIHtcclxuICAgICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgICAgIGlmIChwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/Lm9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhbmVsLmNsb3NlKGV2ZW50KTtcclxuICAgICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XHJcbiAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xyXG4gICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgICAgcGFuZWwuY2xvc2UoZXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXBhbmVsSXNPcGVuKSB7XHJcbiAgICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICBjYXNlICdTcGFjZSc6XHJcbiAgICAgICAgICBwYW5lbC5vcGVuKGV2ZW50KTtcclxuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdGl2ZShvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNIaWRkZW4ob3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZShvcHRpb24pLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdyhvcHRpb246IGFueSwgdmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubmF0aXZlKG9wdGlvbikuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gJycgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmFibGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsRG93bigpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwub3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBwYW5lbC5zY3JvbGxCYXJUb3AoKTtcclxuICAgICAgcGFuZWwub3B0aW9ucy5maXJzdC5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXh0T3B0aW9uRm9jdXNlZCA9IHRoaXMuZmluZE5leHRWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCArIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyRG93bigpO1xyXG4gICAgcGFuZWwub3B0aW9uRm9jdXNlZD8ucmVtb3ZlRm9jdXMoKTtcclxuICAgIGlmIChuZXh0T3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBuZXh0T3B0aW9uRm9jdXNlZD8uc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcGFuZWwuc2Nyb2xsQmFyVG9wKCk7XHJcbiAgICBjb25zdCBmaXJzdFZpc2libGUgPSB0aGlzLmZpbmROZXh0VmlzaWJsZU9wdGlvbigwLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIGlmIChmaXJzdFZpc2libGUpIHtcclxuICAgICAgZmlyc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFVwKCkge1xyXG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsO1xyXG4gICAgaWYgKCFwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclRvcCgpO1xyXG4gICAgICBwYW5lbC5vcHRpb25zLmxhc3Quc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSAgICBcclxuICAgIGNvbnN0IG5leHRPcHRpb25Gb2N1c2VkID0gdGhpcy5maW5kUHJldmlvdXNWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKG5leHRPcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclVwKCk7XHJcbiAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/LnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIG5leHRPcHRpb25Gb2N1c2VkPy5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBwYW5lbC5vcHRpb25Gb2N1c2VkPy5yZW1vdmVGb2N1cygpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyQm90dG9tKCk7XHJcbiAgICBjb25zdCBsYXN0VmlzaWJsZSA9IHRoaXMuZmluZFByZXZpb3VzVmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25zLmxlbmd0aCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKGxhc3RWaXNpYmxlKSB7XHJcbiAgICAgIGxhc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRQcmV2aW91c1Zpc2libGVPcHRpb24oc3RhcnRJbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpOiBhbnkgfCBudWxsIHtcclxuICAgIGxldCBpID0gc3RhcnRJbmRleDtcclxuICAgIHdoaWxlIChpID49IDApIHtcclxuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9ucy5nZXQoaSk7XHJcbiAgICAgIGlmICghdGhpcy5pc0hpZGRlbihvcHRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBpLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZE5leHRWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogYW55IHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA8IG9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9kcm9wZG93bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0MsSUFBSSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFTaEUsTUFBTSxPQUFPLGlCQUFpQjtJQUdsQjtJQUNBO0lBQ0E7SUFDQTtJQUNRO0lBTGxCLFlBQ1UsRUFBYyxFQUNkLFFBQW1CLEVBQ25CLGVBQWdDLEVBQ2hDLFVBQXNCLEVBQ2QsV0FBaUM7UUFKekMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7SUFFbkQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFB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QUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULGVBQWU7cUJBQ2hCO2lCQUNGOzswQkFRSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYsIEhvc3QsIFJlbmRlcmVyMiwgRGVzdHJveVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9saXN0ZW5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2lyaW9TZWxlY3RDb21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZHJvcGRvd25dJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgTGlzdGVuZXJTZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGxpc3RlbmVyU2VydmljZTogTGlzdGVuZXJTZXJ2aWNlLCAgICBcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICAgIEBIb3N0KCkgcHJpdmF0ZSBzaXJpb1NlbGVjdDogU2lyaW9TZWxlY3RDb21wb25lbnRcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlVmFsdWUoKTtcclxuICAgIHRoaXMuaGFuZGxlU2VhcmNoYWJsZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVPcHRpb25zQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZFZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnJlbW92ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZhbHN5VmFsdWVzID0gW251bGwsIGZhbHNlLCAwLCBcIlwiXTtcclxuXHJcbiAgICBpZiAodGhpcy5zaXJpb1NlbGVjdFxyXG4gICAgICAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucylcclxuICAgICAgJiYgZmFsc3lWYWx1ZXMuaW5jbHVkZXModGhpcy5zaXJpb1NlbGVjdC52YWx1ZSkpXHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IHZhbHVlT3B0aW9uID0gdGhpcy5zaXJpb1NlbGVjdC5vcHRpb25zLmZpbmQoXHJcbiAgICAgICAgb3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5zaXJpb1NlbGVjdC52YWx1ZVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgICAgdmFsdWVPcHRpb24uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoYWJsZSgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hhYmxlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2hhYmxlJyk7XHJcbiAgICBpZiAoc2VhcmNoYWJsZSkge1xyXG4gICAgICBjb25zdCBkcm9wRG93biA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24nKTtcclxuICAgICAgY29uc3QgZHJvcE1lbnUgPSBkcm9wRG93bi5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG4gICAgICBjb25zdCBpbnB1dCA9IHNlYXJjaGFibGUucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoZHJvcERvd24sIHNlYXJjaGFibGUsIGRyb3BNZW51KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2ZvY3VzJywgKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2JsdXInLCAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPT0gZHJvcE1lbnUpXHJcbiAgICAgICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5saXN0ZW5lclNlcnZpY2UubGlzdGVuKGlucHV0LCAna2V5dXAnLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5VXAoZXZlbnQsIGlucHV0KTsgICAgICAgIFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGlzdGVuZXJTZXJ2aWNlLmxpc3RlbihpbnB1dCwgJ2tleWRvd24nLCAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zaXJpb1NlbGVjdC5wYW5lbC5wYW5lbE9wZW5lZFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hY3RpdmF0ZShzZWFyY2hhYmxlKSk7XHJcblxyXG4gICAgICB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLnBhbmVsQ2xvc2VkXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRlYWN0aXZhdGUoc2VhcmNoYWJsZSkpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT3B0aW9uc0NoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsLm9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5jYW5WYWxpZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVmFsaWRhdG9ycygpO1xyXG4gICAgICB9KTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcHRpb25zU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGNhblZhbGlkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdG9yID0gdGhpcy52YWxpZGF0ZU9wdGlvbnMuYmluZCh0aGlzKTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRWYWxpZGF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LmFkZFZhbGlkYXRvcnModGhpcy52YWxpZGF0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVWYWxpZGF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpcmlvU2VsZWN0LmNvbnRyb2w/LnJlbW92ZVZhbGlkYXRvcnModGhpcy52YWxpZGF0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmNhblZhbGlkYXRlKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCB2YWx1ZU9wdGlvbiA9IHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5maW5kKFxyXG4gICAgICAgIG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdmFsdWVPcHRpb24pIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogYFwiJHt2YWx1ZX1cIiBub24gw6ggdW4gdmFsb3JlIHZhbGlkb2AgfTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoVmFsaWRhdG9ycygpIHtcclxuICAgIHRoaXMuc2lyaW9TZWxlY3QuY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWFjdGl2YXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWUgPSBcIlwiO1xyXG5cclxuICAgIGlmICh0aGlzLnNpcmlvU2VsZWN0Lm9wdGlvbnNTZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9uc1NlbGVjdGVkWzBdLnRleHRcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG5cclxuICAgIGlmICghaW5wdXQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpbnB1dC52YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICBjb25zdCBkcm9wTWVudSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2lyaW8tZHJvcGRvd24tbWVudScpO1xyXG5cclxuICAgIHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgdGhpcy5zaG93KG9wdGlvbiwgdHJ1ZSk7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPT0gb3B0aW9uLnRleHQpIHtcclxuICAgICAgICBkcm9wTWVudS5zY3JvbGxUb3AgPSB0aGlzLm5hdGl2ZShvcHRpb24pLm9mZnNldFRvcDtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbGVtZW50LCAnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5wdXQudmFsdWUubGVuZ3RoLCBpbnB1dC52YWx1ZS5sZW5ndGgpO1xyXG4gICAgICBpbnB1dC5mb2N1cygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGlucHV0OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcblxyXG4gICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgY2FzZSAnU3BhY2UnOlxyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbXBhcmFibGUoaW5wdXQudmFsdWUpO1xyXG4gICAgbGV0IGZpcnN0TWF0Y2ggPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuc2lyaW9TZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChvcHRpb24sIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5jb21wYXJhYmxlKG9wdGlvbi50ZXh0KS5pbmNsdWRlcyh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2hvdyhvcHRpb24sIG1hdGNoKTtcclxuICAgICAgaWYgKG1hdGNoICYmIGZpcnN0TWF0Y2gpIHtcclxuICAgICAgICBvcHRpb24uc2V0Rm9jdXMoKTtcclxuICAgICAgICBmaXJzdE1hdGNoID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFuZWxJc09wZW4gPSBwYW5lbC5wYW5lbElzT3BlbjtcclxuICAgIGNvbnN0IHsgY29kZSB9ID0gZXZlbnQ7XHJcbiAgICBpZiAocGFuZWxJc09wZW4pIHtcclxuICAgICAgc3dpdGNoIChjb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICAgIGNhc2UgJ1NwYWNlJzpcclxuICAgICAgICAgIGlmIChwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgICAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/Lm9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBhbmVsLmNsb3NlKGV2ZW50KTtcclxuICAgICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XHJcbiAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xyXG4gICAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgICAgcGFuZWwuY2xvc2UoZXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXBhbmVsSXNPcGVuKSB7XHJcbiAgICAgIHN3aXRjaCAoY29kZSkge1xyXG4gICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICBjYXNlICdTcGFjZSc6XHJcbiAgICAgICAgICBwYW5lbC5vcGVuKGV2ZW50KTtcclxuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdGl2ZShvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNIaWRkZW4ob3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZShvcHRpb24pLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdyhvcHRpb246IGFueSwgdmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubmF0aXZlKG9wdGlvbikuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gJycgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmFibGUodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsRG93bigpIHtcclxuICAgIGNvbnN0IHBhbmVsID0gdGhpcy5zaXJpb1NlbGVjdC5wYW5lbDtcclxuICAgIGlmICghcGFuZWwub3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBwYW5lbC5zY3JvbGxCYXJUb3AoKTtcclxuICAgICAgcGFuZWwub3B0aW9ucy5maXJzdC5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXh0T3B0aW9uRm9jdXNlZCA9IHRoaXMuZmluZE5leHRWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCArIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyRG93bigpO1xyXG4gICAgcGFuZWwub3B0aW9uRm9jdXNlZD8ucmVtb3ZlRm9jdXMoKTtcclxuICAgIGlmIChuZXh0T3B0aW9uRm9jdXNlZCkge1xyXG4gICAgICBuZXh0T3B0aW9uRm9jdXNlZD8uc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcGFuZWwuc2Nyb2xsQmFyVG9wKCk7XHJcbiAgICBjb25zdCBmaXJzdFZpc2libGUgPSB0aGlzLmZpbmROZXh0VmlzaWJsZU9wdGlvbigwLCBwYW5lbC5vcHRpb25zKTtcclxuICAgIGlmIChmaXJzdFZpc2libGUpIHtcclxuICAgICAgZmlyc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbFVwKCkge1xyXG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnNpcmlvU2VsZWN0LnBhbmVsO1xyXG4gICAgaWYgKCFwYW5lbC5vcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclRvcCgpO1xyXG4gICAgICBwYW5lbC5vcHRpb25zLmxhc3Quc2V0Rm9jdXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSAgICBcclxuICAgIGNvbnN0IG5leHRPcHRpb25Gb2N1c2VkID0gdGhpcy5maW5kUHJldmlvdXNWaXNpYmxlT3B0aW9uKHBhbmVsLm9wdGlvbkZvY3VzZWRJbmRleCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKG5leHRPcHRpb25Gb2N1c2VkKSB7XHJcbiAgICAgIHBhbmVsLnNjcm9sbEJhclVwKCk7XHJcbiAgICAgIHBhbmVsLm9wdGlvbkZvY3VzZWQ/LnJlbW92ZUZvY3VzKCk7XHJcbiAgICAgIG5leHRPcHRpb25Gb2N1c2VkPy5zZXRGb2N1cygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBwYW5lbC5vcHRpb25Gb2N1c2VkPy5yZW1vdmVGb2N1cygpO1xyXG4gICAgcGFuZWwuc2Nyb2xsQmFyQm90dG9tKCk7XHJcbiAgICBjb25zdCBsYXN0VmlzaWJsZSA9IHRoaXMuZmluZFByZXZpb3VzVmlzaWJsZU9wdGlvbihwYW5lbC5vcHRpb25zLmxlbmd0aCAtIDEsIHBhbmVsLm9wdGlvbnMpO1xyXG4gICAgaWYgKGxhc3RWaXNpYmxlKSB7XHJcbiAgICAgIGxhc3RWaXNpYmxlLnNldEZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRQcmV2aW91c1Zpc2libGVPcHRpb24oc3RhcnRJbmRleDogbnVtYmVyLCBvcHRpb25zOiBhbnkpOiBhbnkgfCBudWxsIHtcclxuICAgIGxldCBpID0gc3RhcnRJbmRleDtcclxuICAgIHdoaWxlIChpID49IDApIHtcclxuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9ucy5nZXQoaSk7XHJcbiAgICAgIGlmICghdGhpcy5pc0hpZGRlbihvcHRpb24pKSB7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfVxyXG4gICAgICBpLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZE5leHRWaXNpYmxlT3B0aW9uKHN0YXJ0SW5kZXg6IG51bWJlciwgb3B0aW9uczogYW55KTogYW55IHwgbnVsbCB7XHJcbiAgICBsZXQgaSA9IHN0YXJ0SW5kZXg7XHJcbiAgICB3aGlsZSAoaSA8IG9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZ2V0KGkpO1xyXG4gICAgICBpZiAoIXRoaXMuaXNIaWRkZW4ob3B0aW9uKSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==