mis-crystal-design-system 17.0.0 → 17.0.1

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 (164) hide show
  1. package/analytics/analytics.service.d.ts +5 -1
  2. package/assets/images/close.svg +5 -0
  3. package/async-search-dropdown/async-dropdown.component.d.ts +9 -1
  4. package/async-search-dropdown/async-dropdown.module.d.ts +2 -1
  5. package/datepicker_v2/datepicker.module.d.ts +2 -1
  6. package/datepicker_v2/tz-datepicker.directive.d.ts +2 -0
  7. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +18 -1
  8. package/daterangepicker_v2/daterangepicker.module.d.ts +2 -1
  9. package/daterangepicker_v2/models/drp-config.model.d.ts +6 -0
  10. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +2 -0
  11. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +5 -1
  12. package/dropdown/calculate-container-height.directive.d.ts +1 -1
  13. package/dropdown/dropdown.component.d.ts +4 -1
  14. package/dropdown/dropdown.module.d.ts +2 -1
  15. package/dynamic-form/dynamic-form.component.d.ts +14 -3
  16. package/dynamic-form/dynamic-form.namespace.d.ts +1 -0
  17. package/esm2022/action-list/action-list.component.mjs +1 -1
  18. package/esm2022/analytics/analytics.service.mjs +7 -6
  19. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +97 -46
  20. package/esm2022/async-search-dropdown/async-dropdown.module.mjs +5 -4
  21. package/esm2022/button/button.directive.mjs +1 -1
  22. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  23. package/esm2022/chip/chip.component.mjs +13 -13
  24. package/esm2022/datepicker_v2/datepicker.module.mjs +5 -4
  25. package/esm2022/datepicker_v2/public_api.mjs +1 -1
  26. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +21 -2
  27. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +259 -73
  28. package/esm2022/datepicker_v2/utils/index.mjs +1 -1
  29. package/esm2022/daterangepicker_v2/daterangepicker.module.mjs +5 -4
  30. package/esm2022/daterangepicker_v2/models/drp-config.model.mjs +1 -1
  31. package/esm2022/daterangepicker_v2/public_api.mjs +1 -1
  32. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +24 -3
  33. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +179 -78
  34. package/esm2022/daterangepicker_v2/utils/index.mjs +1 -1
  35. package/esm2022/dropdown/calculate-container-height.directive.mjs +5 -5
  36. package/esm2022/dropdown/dropdown.component.mjs +156 -96
  37. package/esm2022/dropdown/dropdown.module.mjs +5 -4
  38. package/esm2022/dynamic-form/dynamic-form.component.mjs +599 -216
  39. package/esm2022/dynamic-form/dynamic-form.namespace.mjs +1 -1
  40. package/esm2022/fab/fab.component.mjs +1 -1
  41. package/esm2022/filter/animations/slideFromRight.mjs +12 -0
  42. package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
  43. package/esm2022/filter/filters.module.mjs +66 -0
  44. package/esm2022/filter/has-value.pipe.mjs +31 -0
  45. package/esm2022/filter/index.mjs +2 -0
  46. package/esm2022/filter/mis-crystal-design-system-filter.mjs +5 -0
  47. package/esm2022/filter/public_api.mjs +4 -0
  48. package/esm2022/input/mis-input.component.mjs +1 -1
  49. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +4 -4
  50. package/esm2022/mobile-filter/mobile-filter.component.mjs +9 -7
  51. package/esm2022/modal/modal.service.mjs +1 -1
  52. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +26 -14
  53. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +14 -7
  54. package/esm2022/phone-input/phone-input.component.mjs +6 -50
  55. package/esm2022/radio-button/radio-button.component.mjs +4 -4
  56. package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
  57. package/esm2022/snackbar/snackbar.service.mjs +1 -1
  58. package/esm2022/specificdatepicker/public_api.mjs +3 -3
  59. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +39 -26
  60. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +1 -1
  61. package/esm2022/specificdatepicker/utils/index.mjs +1 -1
  62. package/esm2022/star-rating/star-rating.component.mjs +1 -1
  63. package/esm2022/table/custom-table-cell.directive.mjs +1 -1
  64. package/esm2022/table/filter/filter.component.mjs +12 -4
  65. package/esm2022/table/public_api.mjs +2 -3
  66. package/esm2022/table/sub-table/sub-table.component.mjs +1 -1
  67. package/esm2022/table/table.component.mjs +27 -11
  68. package/esm2022/timepicker/timepicker.component.mjs +16 -12
  69. package/esm2022/timerangepicker/public_api.mjs +1 -1
  70. package/esm2022/timerangepicker/timerangepicker.component.mjs +13 -7
  71. package/esm2022/toast/toast.service.mjs +1 -1
  72. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +10 -9
  73. package/esm2022/tooltip/tooltip.directive.mjs +9 -3
  74. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +1 -1
  75. package/esm2022/widgets/classes/async-widget.mjs +1 -1
  76. package/esm2022/widgets/classes/base-widget.mjs +1 -1
  77. package/esm2022/widgets/classes/sync-widget.mjs +1 -1
  78. package/fesm2022/mis-crystal-design-system-action-list.mjs +1 -1
  79. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  80. package/fesm2022/mis-crystal-design-system-analytics.mjs +6 -5
  81. package/fesm2022/mis-crystal-design-system-analytics.mjs.map +1 -1
  82. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +100 -48
  83. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  84. package/fesm2022/mis-crystal-design-system-button.mjs +1 -1
  85. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  86. package/fesm2022/mis-crystal-design-system-checkbox.mjs +4 -4
  87. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  88. package/fesm2022/mis-crystal-design-system-chip.mjs +13 -13
  89. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  90. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +282 -76
  91. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  92. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +205 -83
  93. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  94. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  95. package/fesm2022/mis-crystal-design-system-dropdown.mjs +163 -102
  96. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  97. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +598 -216
  98. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  99. package/fesm2022/mis-crystal-design-system-fab.mjs +1 -1
  100. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  101. package/fesm2022/mis-crystal-design-system-filter.mjs +503 -0
  102. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
  103. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +4 -4
  104. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  105. package/fesm2022/mis-crystal-design-system-input.mjs +1 -1
  106. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  107. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  108. package/fesm2022/mis-crystal-design-system-menu.mjs +1 -1
  109. package/fesm2022/mis-crystal-design-system-menu.mjs.map +1 -1
  110. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +9 -7
  111. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  112. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  113. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +26 -14
  114. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  115. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +14 -7
  116. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  117. package/fesm2022/mis-crystal-design-system-phone-input.mjs +5 -49
  118. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  119. package/fesm2022/mis-crystal-design-system-radio-button.mjs +4 -4
  120. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  121. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
  122. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  123. package/fesm2022/mis-crystal-design-system-slider.mjs +1 -1
  124. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  125. package/fesm2022/mis-crystal-design-system-snackbar.mjs +1 -1
  126. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  127. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +39 -26
  128. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  129. package/fesm2022/mis-crystal-design-system-star-rating.mjs +1 -1
  130. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  131. package/fesm2022/mis-crystal-design-system-switch.mjs +1 -1
  132. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  133. package/fesm2022/mis-crystal-design-system-table.mjs +41 -17
  134. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  135. package/fesm2022/mis-crystal-design-system-timepicker.mjs +16 -12
  136. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  137. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +13 -7
  138. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  139. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  140. package/fesm2022/mis-crystal-design-system-tooltip.mjs +18 -11
  141. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  142. package/fesm2022/mis-crystal-design-system-utils.mjs.map +1 -1
  143. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +1 -1
  144. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  145. package/fesm2022/mis-crystal-design-system-widgets.mjs.map +1 -1
  146. package/filter/animations/slideFromRight.d.ts +1 -0
  147. package/filter/filter-panel/filter-panel.component.d.ts +51 -0
  148. package/filter/filters.module.d.ts +18 -0
  149. package/filter/has-value.pipe.d.ts +12 -0
  150. package/filter/index.d.ts +1 -0
  151. package/filter/public_api.d.ts +4 -0
  152. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +3 -1
  153. package/package.json +24 -18
  154. package/phone-input/phone-input.component.d.ts +6 -15
  155. package/specificdatepicker/public_api.d.ts +2 -3
  156. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -0
  157. package/styles/mis-mixins.scss +46 -0
  158. package/styles/mis-old-icon-styles.scss +498 -0
  159. package/table/public_api.d.ts +1 -2
  160. package/timepicker/timepicker.component.d.ts +3 -2
  161. package/timerangepicker/public_api.d.ts +1 -0
  162. package/timerangepicker/timerangepicker.component.d.ts +3 -1
  163. package/tooltip/tooltip-container/tooltip.component.d.ts +2 -1
  164. package/tooltip/tooltip.directive.d.ts +3 -1
@@ -1,5 +1,8 @@
1
1
  import { Renderer2 } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
+ type TCustomParameters = {
4
+ [key: string]: string | number | boolean;
5
+ };
3
6
  export declare class AnalyticsService {
4
7
  private document;
5
8
  private scriptLoaded;
@@ -7,8 +10,9 @@ export declare class AnalyticsService {
7
10
  constructor(document: any);
8
11
  insertScript(measurementId: string, renderer: Renderer2): void;
9
12
  private handlePendingEvents;
10
- send(eventAction: string, event_category: string, event_label?: string, event_value?: string, force?: boolean): void;
13
+ send(eventAction: string, event_category: string, event_label?: string, event_value?: string, force?: boolean, customParameters?: TCustomParameters): void;
11
14
  setIdentity(identifier: string): void;
12
15
  static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsService, never>;
13
16
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsService>;
14
17
  }
18
+ export {};
@@ -0,0 +1,5 @@
1
+ <svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="ic-navigation-cancel-24">
3
+ <path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.6056 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.385 17.455 18.385 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.622 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z" fill="#181F33"/>
4
+ </g>
5
+ </svg>
@@ -10,6 +10,7 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
10
10
  private _ngZone;
11
11
  constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, _ngZone: NgZone);
12
12
  height: any;
13
+ width: any;
13
14
  size: 'md' | 'sm';
14
15
  httpStream: (searchKey: string) => Observable<IListData>;
15
16
  displayKey: string;
@@ -23,6 +24,8 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
23
24
  disabled: boolean;
24
25
  readonly: boolean;
25
26
  disableCopyPaste: boolean;
27
+ dropdownListWidth: any;
28
+ dropdownListPosition: "Left" | "Right";
26
29
  origin: ElementRef;
27
30
  input: ElementRef;
28
31
  dd: TemplateRef<Element>;
@@ -34,7 +37,9 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
34
37
  opened: boolean;
35
38
  loading: boolean;
36
39
  error: boolean;
40
+ openPopUpOnTab: boolean;
37
41
  selections: Map<string, any>;
42
+ private httpStreamTrigger;
38
43
  private searchSubscription;
39
44
  private defaultCallSubscription;
40
45
  private overlayRef;
@@ -45,6 +50,7 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
45
50
  itemSelected: EventEmitter<any>;
46
51
  itemRemoved: EventEmitter<any>;
47
52
  ngOnInit(): void;
53
+ refreshHttpStream(query: string): void;
48
54
  ngOnChanges(changes: SimpleChanges): void;
49
55
  ngOnDestroy(): void;
50
56
  private handleControlChanges;
@@ -53,6 +59,8 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
53
59
  * closes the dropdown
54
60
  */
55
61
  closeDropdown(): void;
62
+ enablePopUpOnTab(): void;
63
+ handleKeyDown(event: KeyboardEvent): void;
56
64
  /**
57
65
  *
58
66
  * @param item item to select
@@ -73,6 +81,6 @@ export declare class AsyncDropdownComponent implements OnInit, OnChanges, OnDest
73
81
  removeInputValue(): void;
74
82
  defaultCall(): void;
75
83
  static ɵfac: i0.ɵɵFactoryDeclaration<AsyncDropdownComponent, never>;
76
- static ɵcmp: i0.ɵɵComponentDeclaration<AsyncDropdownComponent, "mis-async-search-dropdown", never, { "height": { "alias": "height"; "required": false; }; "size": { "alias": "size"; "required": false; }; "httpStream": { "alias": "httpStream"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "secondaryDisplayKey": { "alias": "secondaryDisplayKey"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "minInputLength": { "alias": "minInputLength"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "uniqueKey": { "alias": "uniqueKey"; "required": false; }; "control": { "alias": "control"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disableCopyPaste": { "alias": "disableCopyPaste"; "required": false; }; "selections": { "alias": "selections"; "required": false; }; "searchValue": { "alias": "searchValue"; "required": false; }; }, { "onSelect": "onSelect"; "searchQueryChange": "searchQueryChange"; "clear": "clear"; "itemSelected": "itemSelected"; "itemRemoved": "itemRemoved"; }, ["customItem", "customLoader"], never, false, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<AsyncDropdownComponent, "mis-async-search-dropdown", never, { "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "size": { "alias": "size"; "required": false; }; "httpStream": { "alias": "httpStream"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "secondaryDisplayKey": { "alias": "secondaryDisplayKey"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "minInputLength": { "alias": "minInputLength"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "uniqueKey": { "alias": "uniqueKey"; "required": false; }; "control": { "alias": "control"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disableCopyPaste": { "alias": "disableCopyPaste"; "required": false; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; }; "selections": { "alias": "selections"; "required": false; }; "searchValue": { "alias": "searchValue"; "required": false; }; }, { "onSelect": "onSelect"; "searchQueryChange": "searchQueryChange"; "clear": "clear"; "itemSelected": "itemSelected"; "itemRemoved": "itemRemoved"; }, ["customItem", "customLoader"], never, false, never>;
77
85
  }
78
86
  export {};
@@ -4,8 +4,9 @@ import * as i2 from "@angular/common";
4
4
  import * as i3 from "@angular/cdk/overlay";
5
5
  import * as i4 from "@angular/forms";
6
6
  import * as i5 from "mis-crystal-design-system/loader";
7
+ import * as i6 from "@angular/cdk/a11y";
7
8
  export declare class AsyncDropdownModule {
8
9
  static ɵfac: i0.ɵɵFactoryDeclaration<AsyncDropdownModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AsyncDropdownModule, [typeof i1.AsyncDropdownComponent], [typeof i2.CommonModule, typeof i3.OverlayModule, typeof i4.ReactiveFormsModule, typeof i4.FormsModule, typeof i5.LoaderModule], [typeof i1.AsyncDropdownComponent]>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AsyncDropdownModule, [typeof i1.AsyncDropdownComponent], [typeof i2.CommonModule, typeof i3.OverlayModule, typeof i4.ReactiveFormsModule, typeof i4.FormsModule, typeof i5.LoaderModule, typeof i6.A11yModule], [typeof i1.AsyncDropdownComponent]>;
10
11
  static ɵinj: i0.ɵɵInjectorDeclaration<AsyncDropdownModule>;
11
12
  }
@@ -5,8 +5,9 @@ import * as i3 from "@angular/common";
5
5
  import * as i4 from "@angular/cdk/overlay";
6
6
  import * as i5 from "mis-crystal-design-system/toast";
7
7
  import * as i6 from "mis-crystal-design-system/button";
8
+ import * as i7 from "@angular/cdk/a11y";
8
9
  export declare class DatepickerModuleV2 {
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerModuleV2, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<DatepickerModuleV2, [typeof i1.TzDpContainerComponent, typeof i2.TzDatepickerDirective], [typeof i3.CommonModule, typeof i4.OverlayModule, typeof i5.ToastModule, typeof i6.ButtonModule], [typeof i1.TzDpContainerComponent, typeof i2.TzDatepickerDirective]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DatepickerModuleV2, [typeof i1.TzDpContainerComponent, typeof i2.TzDatepickerDirective], [typeof i3.CommonModule, typeof i4.OverlayModule, typeof i5.ToastModule, typeof i6.ButtonModule, typeof i7.A11yModule], [typeof i1.TzDpContainerComponent, typeof i2.TzDatepickerDirective]>;
11
12
  static ɵinj: i0.ɵɵInjectorDeclaration<DatepickerModuleV2>;
12
13
  }
@@ -29,6 +29,8 @@ export declare class TzDatepickerDirective implements OnInit {
29
29
  ngOnChanges(changes: SimpleChanges): void;
30
30
  ngOnInit(): void;
31
31
  toggleDatePicker(): void;
32
+ toggleDatePickerOnEnter(): void;
33
+ closeOnEsc(): void;
32
34
  private open;
33
35
  applyDate(date?: string): void;
34
36
  close(): void;
@@ -17,15 +17,32 @@ export declare class TzDpContainerComponent implements OnInit {
17
17
  localSelectedDate: ICurrentMonthDates;
18
18
  allowBookingOnDisabledDay: boolean;
19
19
  currentSelection: any;
20
+ isSelectingMonth: boolean;
21
+ isSelectingYear: boolean;
22
+ availableYears: number[];
23
+ availableMonths: string[];
24
+ disabledMonths: boolean[];
25
+ disabledYears: boolean[];
26
+ selectedYear: number;
27
+ isYearSelectionFlow: boolean;
20
28
  constructor(data: IDatePickerData, toast: ToastService);
29
+ retractDayMonth(day: any, month: any, year: any): any;
21
30
  ngOnInit(): void;
22
31
  private currentDateInstance;
23
32
  private calculateMinMaxDays;
24
- navigateMonth(direction: "NEXT" | "PREVIOUS"): void;
33
+ calculateDisabledMonthsAndYears(): void;
34
+ get yearRange(): string;
35
+ navigateView(direction: "NEXT" | "PREVIOUS"): void;
25
36
  private generateDates;
26
37
  selectDay(day: ICurrentMonthDates): void;
27
38
  applyDate(day?: ICurrentMonthDates): void;
39
+ closeOnEsc(): void;
28
40
  cancelDatePicker(): void;
41
+ toggleMonthSelector(): void;
42
+ toggleYearSelector(): void;
43
+ resetDateSelection(): void;
44
+ selectMonth(month: string): void;
45
+ selectYear(year: number): void;
29
46
  static ɵfac: i0.ɵɵFactoryDeclaration<TzDpContainerComponent, never>;
30
47
  static ɵcmp: i0.ɵɵComponentDeclaration<TzDpContainerComponent, "mis-tz-dp", never, {}, {}, never, never, false, never>;
31
48
  }
@@ -5,8 +5,9 @@ import * as i3 from "@angular/common";
5
5
  import * as i4 from "@angular/cdk/overlay";
6
6
  import * as i5 from "mis-crystal-design-system/toast";
7
7
  import * as i6 from "mis-crystal-design-system/button";
8
+ import * as i7 from "@angular/cdk/a11y";
8
9
  export declare class DateRangepickerModuleV2 {
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<DateRangepickerModuleV2, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<DateRangepickerModuleV2, [typeof i1.TzDrpContainerComponent, typeof i2.TzDaterangepickerDirective], [typeof i3.CommonModule, typeof i4.OverlayModule, typeof i5.ToastModule, typeof i6.ButtonModule], [typeof i1.TzDrpContainerComponent, typeof i2.TzDaterangepickerDirective]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DateRangepickerModuleV2, [typeof i1.TzDrpContainerComponent, typeof i2.TzDaterangepickerDirective], [typeof i3.CommonModule, typeof i4.OverlayModule, typeof i5.ToastModule, typeof i6.ButtonModule, typeof i7.A11yModule], [typeof i1.TzDrpContainerComponent, typeof i2.TzDaterangepickerDirective]>;
11
12
  static ɵinj: i0.ɵɵInjectorDeclaration<DateRangepickerModuleV2>;
12
13
  }
@@ -3,6 +3,12 @@ export interface IDatePickerConfig {
3
3
  minDate: string;
4
4
  maxDate: string;
5
5
  timezone: string;
6
+ maxAllowedRange?: number;
7
+ ranges?: RangeItem[];
8
+ }
9
+ export interface RangeItem {
10
+ label: string;
11
+ value: [Date, Date];
6
12
  }
7
13
  export interface IDatePickerData {
8
14
  dates: ISelectedDatesConfig;
@@ -23,6 +23,8 @@ export declare class TzDaterangepickerDirective {
23
23
  private dpDisabledDates;
24
24
  constructor(control: NgControl, element: ElementRef, overlay: Overlay, viewContainerRef: ViewContainerRef);
25
25
  toggleDatePicker(): void;
26
+ toggleDatePickerOnEnter(): void;
27
+ closeOnEsc(): void;
26
28
  private open;
27
29
  applyDate(dates: ISelectedDatesConfig): void;
28
30
  close(): void;
@@ -1,5 +1,5 @@
1
1
  import { OnInit } from "@angular/core";
2
- import { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISelectedDatesConfig } from "../models/drp-config.model";
2
+ import { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISelectedDatesConfig, RangeItem } from "../models/drp-config.model";
3
3
  import { ToastService } from "mis-crystal-design-system/toast";
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TzDrpContainerComponent implements OnInit {
@@ -21,13 +21,17 @@ export declare class TzDrpContainerComponent implements OnInit {
21
21
  selectionStarted: boolean;
22
22
  localSelectedDates: ISelectedDatesConfig;
23
23
  isDatesValid: boolean;
24
+ selectedItemLabel: string;
24
25
  constructor(data: IDatePickerData, toast: ToastService);
25
26
  ngOnInit(): void;
27
+ retractDayMonth(day: any, month: any, year: any): any;
28
+ closeOnEsc(): void;
26
29
  private currentDateInstance;
27
30
  private calculateMinMaxDays;
28
31
  navigateMonth(direction: "NEXT" | "PREVIOUS"): void;
29
32
  private generateDates;
30
33
  selectDay(from: "LEFT" | "RIGHT", day: ICurrentMonthDates): void;
34
+ selectRange(item: RangeItem): void;
31
35
  applyDates(): void;
32
36
  cancelDatePicker(): void;
33
37
  static ɵfac: i0.ɵɵFactoryDeclaration<TzDrpContainerComponent, never>;
@@ -8,5 +8,5 @@ export declare class CalculateContainerHeightDirective implements AfterViewInit
8
8
  ngAfterViewInit(): void;
9
9
  private setContainerHeight;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<CalculateContainerHeightDirective, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<CalculateContainerHeightDirective, "[appcalculateContainerHeight]", never, { "items": { "alias": "items"; "required": false; }; "visibleItems": { "alias": "visibleItems"; "required": false; }; }, {}, never, never, false, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CalculateContainerHeightDirective, "[calculateContainerHeight]", never, { "items": { "alias": "items"; "required": false; }; "visibleItems": { "alias": "visibleItems"; "required": false; }; }, {}, never, never, false, never>;
12
12
  }
@@ -14,6 +14,7 @@ export declare class DropdownComponent implements OnInit {
14
14
  visibleItems: number;
15
15
  data: DropdownItem[];
16
16
  height: string;
17
+ ariaLabel: string;
17
18
  width: string;
18
19
  label: string;
19
20
  itemSizeForCdk: number;
@@ -38,6 +39,7 @@ export declare class DropdownComponent implements OnInit {
38
39
  selectElement: ElementRef;
39
40
  popupContainer: TemplateRef<Element>;
40
41
  viewPort: CdkVirtualScrollViewport;
42
+ customItem: TemplateRef<Element>;
41
43
  private overlayRef;
42
44
  constructor(eRef: ElementRef, overlay: Overlay, viewContainerRef: ViewContainerRef);
43
45
  ngOnInit(): void;
@@ -54,8 +56,9 @@ export declare class DropdownComponent implements OnInit {
54
56
  private openDropdown;
55
57
  selectItem(item: any): void;
56
58
  onCancel(): void;
59
+ closeOnEsc(event: KeyboardEvent): void;
57
60
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "mis-dropdown", never, { "data": { "alias": "data"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "label": { "alias": "label"; "required": false; }; "itemSizeForCdk": { "alias": "itemSizeForCdk"; "required": false; }; "showOnlyIcon": { "alias": "showOnlyIcon"; "required": false; }; "higlightSelectedValue": { "alias": "higlightSelectedValue"; "required": false; }; "dropdownListHeight": { "alias": "dropdownListHeight"; "required": false; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; }; "config": { "alias": "config"; "required": false; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; }; "multiLine": { "alias": "multiLine"; "required": false; }; "additionalInfoMessage": { "alias": "additionalInfoMessage"; "required": false; }; "scrollIntoView": { "alias": "scrollIntoView"; "required": false; }; "searchLabel": { "alias": "searchLabel"; "required": false; }; "customStyles": { "alias": "customStyles"; "required": false; }; "activeItem": { "alias": "activeItem"; "required": false; }; }, { "onChange": "onChange"; }, never, never, false, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "mis-dropdown", never, { "data": { "alias": "data"; "required": false; }; "height": { "alias": "height"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "width": { "alias": "width"; "required": false; }; "label": { "alias": "label"; "required": false; }; "itemSizeForCdk": { "alias": "itemSizeForCdk"; "required": false; }; "showOnlyIcon": { "alias": "showOnlyIcon"; "required": false; }; "higlightSelectedValue": { "alias": "higlightSelectedValue"; "required": false; }; "dropdownListHeight": { "alias": "dropdownListHeight"; "required": false; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; }; "config": { "alias": "config"; "required": false; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; }; "selectedItem": { "alias": "selectedItem"; "required": false; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; }; "multiLine": { "alias": "multiLine"; "required": false; }; "additionalInfoMessage": { "alias": "additionalInfoMessage"; "required": false; }; "scrollIntoView": { "alias": "scrollIntoView"; "required": false; }; "searchLabel": { "alias": "searchLabel"; "required": false; }; "customStyles": { "alias": "customStyles"; "required": false; }; "activeItem": { "alias": "activeItem"; "required": false; }; }, { "onChange": "onChange"; }, ["customItem"], never, false, never>;
59
62
  }
60
63
  export interface DropdownItem {
61
64
  label: any;
@@ -7,9 +7,10 @@ import * as i4 from "@angular/forms";
7
7
  import * as i5 from "@angular/cdk/overlay";
8
8
  import * as i6 from "@angular/cdk-experimental/scrolling";
9
9
  import * as i7 from "mis-crystal-design-system/loader";
10
+ import * as i8 from "@angular/cdk/a11y";
10
11
  export declare class DropdownModule {
11
12
  static forRoot(): ModuleWithProviders<DropdownModule>;
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<DropdownModule, [typeof i1.DropdownComponent, typeof i2.CalculateContainerHeightDirective], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.OverlayModule, typeof i6.ScrollingModule, typeof i7.LoaderModule], [typeof i1.DropdownComponent]>;
14
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DropdownModule, [typeof i1.DropdownComponent, typeof i2.CalculateContainerHeightDirective], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.OverlayModule, typeof i6.ScrollingModule, typeof i7.LoaderModule, typeof i8.A11yModule], [typeof i1.DropdownComponent]>;
14
15
  static ɵinj: i0.ɵɵInjectorDeclaration<DropdownModule>;
15
16
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnDestroy, OnInit } from "@angular/core";
1
+ import { EventEmitter, OnDestroy, OnInit, TemplateRef } from "@angular/core";
2
2
  import { NsDynamicForm } from "./dynamic-form.namespace";
3
3
  import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidatorFn } from "@angular/forms";
4
4
  import "moment-timezone";
@@ -16,6 +16,8 @@ export declare class DynamicFormComponent implements OnInit, OnDestroy {
16
16
  };
17
17
  activeBtnIconUrl: string;
18
18
  calendarIconUrl: string;
19
+ removeIconUrl: string;
20
+ removeSepratorForSubFields: boolean;
19
21
  /**
20
22
  * dynamicForm: Constructed using formFields and formValues(in case of edit)
21
23
  */
@@ -34,6 +36,15 @@ export declare class DynamicFormComponent implements OnInit, OnDestroy {
34
36
  * formInitialized: Emits dynamic form API on form initilization
35
37
  */
36
38
  formInitialized: EventEmitter<any>;
39
+ fieldRemoved: EventEmitter<NsDynamicForm.IDynamicField>;
40
+ customInputTextNumber: TemplateRef<Element>;
41
+ customInputTextarea: TemplateRef<Element>;
42
+ customInputDate: TemplateRef<Element>;
43
+ customBooleanToggle: TemplateRef<Element>;
44
+ customSingleSelectDropdown: TemplateRef<Element>;
45
+ customSingleSelectRadio: TemplateRef<Element>;
46
+ customMultiSelectCheckbox: TemplateRef<Element>;
47
+ customMultiSelectDropdown: TemplateRef<Element>;
37
48
  dynamicFormAPI: NsDynamicForm.IDynamicFormAPI;
38
49
  valueChangesSubscription$: Subscription;
39
50
  constructor();
@@ -54,7 +65,7 @@ export declare class DynamicFormComponent implements OnInit, OnDestroy {
54
65
  label: string;
55
66
  value: string;
56
67
  }>): boolean;
57
- findSelectedIndex(subfields: any, value: any): any;
68
+ findSelectedSubFieldConfig(subfields: any, value: any, subFieldIndex: any): any;
58
69
  matchParentConfig(subfields: any, value: any): any;
59
70
  generateSubDynamicFields(formValues: any, parentField: NsDynamicForm.IDynamicField, parentValue: Array<{
60
71
  label: string;
@@ -66,6 +77,6 @@ export declare class DynamicFormComponent implements OnInit, OnDestroy {
66
77
  mapFormValueToFormField(formField: NsDynamicForm.IDynamicField, formValue: any): any;
67
78
  mapFormFieldToFormValue(formField: NsDynamicForm.IDynamicField, formValue: any): any;
68
79
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
69
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "mis-dynamic-form", never, { "formFields": { "alias": "formFields"; "required": false; }; "formValues": { "alias": "formValues"; "required": false; }; "activeBtnIconUrl": { "alias": "activeBtnIconUrl"; "required": false; }; "calendarIconUrl": { "alias": "calendarIconUrl"; "required": false; }; }, { "formUpdated": "formUpdated"; "formValid": "formValid"; "formInitialized": "formInitialized"; }, never, never, false, never>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "mis-dynamic-form", never, { "formFields": { "alias": "formFields"; "required": false; }; "formValues": { "alias": "formValues"; "required": false; }; "activeBtnIconUrl": { "alias": "activeBtnIconUrl"; "required": false; }; "calendarIconUrl": { "alias": "calendarIconUrl"; "required": false; }; "removeIconUrl": { "alias": "removeIconUrl"; "required": false; }; "removeSepratorForSubFields": { "alias": "removeSepratorForSubFields"; "required": false; }; }, { "formUpdated": "formUpdated"; "formValid": "formValid"; "formInitialized": "formInitialized"; "fieldRemoved": "fieldRemoved"; }, ["customInputTextNumber", "customInputTextarea", "customInputDate", "customBooleanToggle", "customSingleSelectDropdown", "customSingleSelectRadio", "customMultiSelectCheckbox", "customMultiSelectDropdown"], never, false, never>;
70
81
  }
71
82
  export declare const dynamicFieldValidator: (validators: Array<NsDynamicForm.IDynamicFieldValidator>) => ValidatorFn;
@@ -19,6 +19,7 @@ export declare namespace NsDynamicForm {
19
19
  value: any;
20
20
  }>;
21
21
  placeholderText?: string;
22
+ isRemoveable?: boolean;
22
23
  }
23
24
  interface IDynamicFieldValidator {
24
25
  message: string;
@@ -360,4 +360,4 @@ export class ActionListComponent {
360
360
  args: ["subPopupContainer", { static: false }]
361
361
  }] }); })();
362
362
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionListComponent, { className: "ActionListComponent" }); })();
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYWN0aW9uLWxpc3QvYWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYWN0aW9uLWxpc3QvYWN0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDaUIvSCw2QkFBbUQ7SUFBQSxZQUFnQztJQUFBLGlCQUFJOzs7SUFBcEMsY0FBZ0M7SUFBaEMsdUdBQWdDOzs7SUF5Q2pGLCtCQUErQztJQUM3QywwQkFBbUQ7SUFDckQsaUJBQU07OztJQURjLGNBQWlCO0lBQWpCLG9EQUFpQjs7OztJQVp2QyxrQ0FPQztJQUZDLHdRQUFjLHdCQUFjLElBQUksZ0JBQWEsS0FBQztJQUk1QyxBQURGLCtCQUFzRSxXQUM5RDtJQUFBLFlBQWlCO0lBQ3pCLEFBRHlCLGlCQUFPLEVBQzFCO0lBQ04seUZBQStDO0lBR2pELGlCQUFNOzs7SUFWSiwrRkFBK0M7SUFJNUIsZUFBa0Q7SUFBbEQsOEdBQWtEO0lBQzdELGVBQWlCO0lBQWpCLDREQUFpQjtJQUVJLGNBQWdCO0lBQWhCLDREQUFnQjs7O0lBSS9DLCtCQUE4QztJQUM1QyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxxRUFDRjs7O0lBbEJGLEFBUEYsK0JBTUMsY0FDb0I7SUFnQmpCLEFBZkEsbUZBT0Msc0VBUTZDO0lBSWxELEFBREUsaUJBQU0sRUFDRjs7O0lBekJKLHlHQUdFO0lBU21CLGVBQU87SUFBUCxxQ0FBTztJQVNMLGNBQXVCO0lBQXZCLCtDQUF1Qjs7O0lBdUIxQywrQkFBaUU7SUFDL0QsbUNBQWlGO0lBQ25GLGlCQUFNOzs7SUFEVSxjQUEwQjtJQUFDLEFBQTNCLDJDQUEwQiw0QkFBeUI7OztJQU1qRSwwQkFBeUU7OztJQUFqQyxvREFBaUI7OztJQUV2RCx3QkFBMEQ7OztJQUQ1RCw2QkFBNkQ7SUFDM0QsaUlBQTJDOzs7OztJQUE1QixjQUEwQjtJQUExQiw4Q0FBMEI7OztJQUg3QywrQkFBOEQ7SUFFNUQsQUFEQSxnR0FBeUUscUdBQ1o7SUFHL0QsaUJBQU07OztJQUpFLGNBQW1CO0lBQW5CLHVDQUFtQjtJQUNWLGNBQTRDO0lBQTVDLG1FQUE0Qzs7OztJQWYvRCwrQkFNQztJQUZDLDJPQUEyQiwwQkFBZ0IsS0FBQztJQUc1QywwRkFBaUU7SUFJL0QsQUFERiwrQkFBcUUsV0FDN0Q7SUFBQSxZQUFnQjtJQUN4QixBQUR3QixpQkFBTyxFQUN6QjtJQUNOLDBGQUE4RDtJQU1oRSxpQkFBTTs7O0lBaEJKLHNFQUE4QztJQUliLGNBQThCO0lBQTlCLGtEQUE4QjtJQUc1QyxjQUFpRDtJQUFqRCxtRkFBaUQ7SUFDNUQsZUFBZ0I7SUFBaEIsbUNBQWdCO0lBRUssY0FBK0I7SUFBL0Isc0RBQStCOzs7SUFPOUQsK0JBQThDO0lBQzVDLFlBQ0Y7SUFBQSxpQkFBTTs7O0lBREosY0FDRjtJQURFLHFFQUNGOzs7SUF2QkYsQUFQRiwrQkFNQyxjQUNvQjtJQXFCakIsQUFwQkEsb0ZBTUMsdUVBYzZDO0lBSWxELEFBREUsaUJBQU0sRUFDRjs7O0lBOUJKLHlHQUdFO0lBUW1CLGVBQVc7SUFBWCx5Q0FBVztJQWVULGNBQXVCO0lBQXZCLCtDQUF1Qjs7OztJQU9oRCwrQkFBK0Y7SUFDN0YsMkJBS0U7SUFDSixpQkFBTTs7QUR6R1IsTUFBTSxPQUFPLG1CQUFtQjtJQTBCOUIsWUFBb0IsSUFBZ0IsRUFBVSxPQUFnQixFQUFVLGdCQUFrQztRQUF0RixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6QjFHLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixhQUFRLEdBQWlCLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQWtCLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsVUFBSyxHQUFXLFFBQVEsQ0FBQztRQUV6Qix1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBQy9CLHlCQUFvQixHQUFxQixNQUFNLENBQUM7UUFFaEQsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsa0JBQWEsR0FBVyxTQUFTLENBQUM7UUFDM0Msa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBRXZCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVFrRCxDQUFDO0lBQzlHLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBbUIsRUFBRSxNQUFjO1FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUM1RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNPLFlBQVksQ0FBQyxRQUE4QixFQUFFLE1BQW1CLEVBQUUsU0FBa0I7UUFDMUYsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqSCxJQUFJLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzlHLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRztZQUNuQixJQUFJLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEgsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQy9HLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRztZQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDeEYsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ25GLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2xDLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzthQUMzQixhQUFhLENBQ1osU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDcEk7YUFDQSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDaEMsV0FBVyxFQUFFLENBQUMsU0FBUztZQUN2QixhQUFhLEVBQUUsa0NBQWtDO1lBQ2pELGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUMxRCxnQkFBZ0I7WUFDaEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxJQUFJLElBQUksQ0FBQyxpQkFBaUI7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztZQUM3RixJQUFJLElBQUksQ0FBQyxrQkFBa0I7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLElBQUksSUFBSSxDQUFDLGtCQUFrQjtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBZ0I7UUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkYsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixHQUFHLENBQUM7Z0JBQ0osUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0IsR0FBRyxDQUFDO29CQUNKLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUs7aUJBQzdDLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsR0FBRyxDQUFDO2dCQUNKLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQy9CLEdBQUcsQ0FBQztvQkFDSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDN0gsQ0FBQyxDQUFDO2FBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSztZQUNSLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25HLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQWdCLEVBQUUsU0FBUyxFQUFFLE9BQWE7UUFDaEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEtBQUssSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUM1RyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakgsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDO29GQXBJVSxtQkFBbUI7b0VBQW5CLG1CQUFtQjs7Ozs7Ozs7Ozs7WUNGOUIsQUFQRiw4QkFNQyxnQkFRRTtZQUZDLEFBREEsK0lBQWUsb0JBQWdCLEtBQUMsc0hBQ3ZCLG9CQUFnQixLQUFDO1lBSXhCLEFBREYsOEJBQW1CLFdBQ0Q7WUFDZCxZQUNGO1lBQUEsaUJBQUk7WUFDSixnRUFBbUQ7WUFDckQsaUJBQU07O1lBQ04sK0JBUUM7WUFDQywyQkFLRTtZQUdSLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7WUFvRU4sQUFuQ0EsQUEvQkEscUhBQTZCLDBHQStCRywwR0FtQ1Q7O1lBeEdyQixvSUFHRTtZQVFBLGNBQW1EO1lBQW5ELGlGQUFtRDtZQUkvQyxlQUNGO1lBREUsMENBQ0Y7WUFDSSxjQUErQjtZQUEvQix3RkFBK0I7WUFJbkMsY0FBcUU7WUFBckUscUdBQXFFOzs7aUZEZDlELG1CQUFtQjtjQUwvQixTQUFTOzJCQUNFLGlCQUFpQjtnR0FTbEIsSUFBSTtrQkFBWixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBRUcsa0JBQWtCO2tCQUExQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLO1lBRUcsYUFBYTtrQkFBckIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFHSSxRQUFRO2tCQUFqQixNQUFNO1lBRWlDLGFBQWE7a0JBQXBELFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNVLGNBQWM7a0JBQTdELFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0ssaUJBQWlCO2tCQUFuRSxTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBdEJ0QyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1hY3Rpb24tbGlzdFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2FjdGlvbi1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9hY3Rpb24tbGlzdC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgc3ViSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGRhdGE6IEFjdGlvbkl0ZW1zW10gPSBbXTtcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSBcIlwiO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiU2VsZWN0XCI7XG5cbiAgQElucHV0KCkgZHJvcGRvd25MaXN0SGVpZ2h0OiBzdHJpbmcgPSBcIlwiO1xuICBASW5wdXQoKSBkcm9wZG93bkxpc3RXaWR0aDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0UG9zaXRpb246IFwiTGVmdFwiIHwgXCJSaWdodFwiID0gXCJMZWZ0XCI7XG5cbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG5vRGF0YU1lc3NhZ2U6IHN0cmluZyA9IFwiTm8gRGF0YVwiO1xuICBzZWxlY3RlZEl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXTtcblxuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJzZWxlY3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHNlbGVjdEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJwb3B1cENvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wdXBDb250YWluZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFwic3ViUG9wdXBDb250YWluZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHN1YlBvcHVwQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIHN1Yk92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmRhdFwiLCB0aGlzLmRhdGEpO1xuICAgIFxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuZGF0YT8uZm9yRWFjaChxID0+XG4gICAgICBxPy5jaGlsZHJlbi5mb3JFYWNoKHcgPT4ge1xuICAgICAgICBpZiAody5jaGVja2VkKSB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh3KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmxhYmVsID0gdGhpcy5zZWxlY3RlZEl0ZW1zWzBdPy5sYWJlbCB8fCB0aGlzLmxhYmVsO1xuICB9XG5cbiAgZmlsdGVyQnlWYWx1ZShhcnJheTogQWN0aW9uSXRlbVtdLCBzdHJpbmc6IHN0cmluZykge1xuICAgIHJldHVybiBhcnJheS5maWx0ZXIobyA9PiBvLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyaW5nLnRvTG93ZXJDYXNlKCkpKTtcbiAgfVxuICB0b2dnbGVEcm9wZG93bigpIHtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgICBpZiAodGhpcy5pc09wZW4pIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMucG9wdXBDb250YWluZXIsIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBmYWxzZSk7XG4gICAgZWxzZSB0aGlzLm9uQ2FuY2VsKCk7XG4gIH1cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24odGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+LCBvcmlnaW46IEhUTUxFbGVtZW50LCBvcGVuUmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sIDAsIC00KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNCb3R0b20ucmV2ZXJzZSgpIDogcG9zaXRpb25zQm90dG9tKSxcbiAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNUb3AucmV2ZXJzZSgpIDogcG9zaXRpb25zVG9wKVxuICAgIF07XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFxuICAgICAgICBvcGVuUmlnaHQgPyBbbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcInRvcFwiIH0sIHsgb3ZlcmxheVg6IFwic3RhcnRcIiwgb3ZlcmxheVk6IFwidG9wXCIgfSwgOCldIDogcG9zaXRpb25zXG4gICAgICApXG4gICAgICAud2l0aFB1c2godHJ1ZSk7XG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiAhb3BlblJpZ2h0LFxuICAgICAgYmFja2Ryb3BDbGFzczogXCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogb3JpZ2luLmNsaWVudFdpZHRoIHx8IDE0MFxuICAgIH0pO1xuICAgIGlmIChvcGVuUmlnaHQpIHtcbiAgICAgIHRoaXMuc3ViT3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCkgdGhpcy5zdWJPdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCB9KTtcbiAgICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCkgdGhpcy5zdWJPdmVybGF5UmVmLnVwZGF0ZVNpemUoeyBoZWlnaHQ6IHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0IH0pO1xuICAgICAgdGhpcy5zdWJPdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgdGhpcy5zdWJPdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uQ2FuY2VsKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCkgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCB9KTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RIZWlnaHQpIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgaGVpZ2h0OiB0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgIH0pO1xuICB9XG4gIHNlbGVjdEl0ZW0oaXRlbTogQWN0aW9uSXRlbSkge1xuICAgIGlmICh0aGlzLmRhdGEuc29tZShxID0+IHEuY2hpbGRyZW4uc29tZSh3ID0+IHcudmFsdWUgPT09IGl0ZW0udmFsdWUgJiYgdy5jaGVja2VkKSkpIHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwiTVVMVElQTEVcIikgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihxID0+IHEudmFsdWUgIT09IGl0ZW0udmFsdWUpO1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcChxID0+ICh7XG4gICAgICAgIC4uLnEsXG4gICAgICAgIGNoaWxkcmVuOiBxPy5jaGlsZHJlbj8ubWFwKGUgPT4gKHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGNoZWNrZWQ6IGUuY2hlY2tlZCAmJiBlLnZhbHVlICE9PSBpdGVtLnZhbHVlXG4gICAgICAgIH0pKVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEubWFwKHEgPT4gKHtcbiAgICAgICAgLi4ucSxcbiAgICAgICAgY2hpbGRyZW46IHE/LmNoaWxkcmVuPy5tYXAoZSA9PiAoe1xuICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgY2hlY2tlZDogKGUudHlwZSA9PT0gXCJNVUxUSVBMRVwiICYmIChlLmNoZWNrZWQgfHwgZS52YWx1ZSA9PT0gaXRlbS52YWx1ZSkpIHx8IChlLnR5cGUgPT09IFwiU0lOR0xFXCIgJiYgZS52YWx1ZSA9PT0gaXRlbS52YWx1ZSlcbiAgICAgICAgfSkpXG4gICAgICB9KSk7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcIk1VTFRJUExFXCIpIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHsgLi4uaXRlbSwgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgICB9XG4gICAgdGhpcy5sYWJlbCA9XG4gICAgICBpdGVtLnR5cGUgPT09IFwiTVVMVElQTEVcIiA/ICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8ubGFiZWwgOiBcIlNlbGVjdFwiKSA6IGl0ZW0uY2hlY2tlZCA/IFwiU2VsZWN0XCIgOiBpdGVtLmxhYmVsO1xuICAgIHRoaXMuc3ViSXRlbXMgPSB0aGlzLmRhdGEuZmluZChxID0+IHEuY2hpbGRyZW4/LnNvbWUodyA9PiB3LnZhbHVlID09PSBpdGVtLnZhbHVlKSk/LmNoaWxkcmVuIHx8IFtdO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmRhdGEpO1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwiU0lOR0xFXCIpIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgfVxuICBvbkhvdmVyKGl0ZW06IEFjdGlvbkl0ZW0sIGlzSG92ZXJlZCwgZWxlbWVudD86IGFueSkge1xuICAgIGlmIChpc0hvdmVyZWQpIHtcbiAgICAgIHRoaXMuc3ViSXRlbXMubGVuZ3RoID4gMCAmJiB0aGlzLnN1Yk92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgdGhpcy5zdWJJdGVtcyA9IHRoaXMuZGF0YS5maW5kKHEgPT4gcT8uY2hpbGRyZW4/LnNvbWUodyA9PiB3Py5wYXJlbnRWYWx1ZSA9PT0gaXRlbT8udmFsdWUpKT8uY2hpbGRyZW4gfHwgW107XG4gICAgICB0aGlzLnN1Ykl0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5zdWJQb3B1cENvbnRhaW5lciwgZWxlbWVudD8ubmF0aXZlRWxlbWVudCB8fCBlbGVtZW50LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zdWJPdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB9XG4gIH1cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuc3ViT3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25JdGVtcyB7XG4gIGxhYmVsOiBBY3Rpb25JdGVtTGFiZWwgfCBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBBY3Rpb25JdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uSXRlbUxhYmVsIHtcbiAgcHJpbWFyeVRleHQgPzogc3RyaW5nO1xuICBzZWNvbmRhcnlUZXh0ID86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25JdGVtIHtcbiAgdHlwZTogXCJTSU5HTEVcIiB8IFwiTVVMVElQTEVcIjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgcGFyZW50VmFsdWU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgY2hlY2tlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuIiwiPGRpdlxuICBjbGFzcz1cIm1haW4tY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogaGVpZ2h0Lmxlbmd0aCA+IDAgPyBoZWlnaHQgOiAnJyxcbiAgICB3aWR0aDogd2lkdGgubGVuZ3RoID4gMCA/IHdpZHRoIDogJydcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICAjc2VsZWN0XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXNPcGVuID8gJyNFNkVCRjcnIDogJycgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dFwiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9wPlxuICAgICAgPHAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiPit7eyBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggLSAxIH19PC9wPlxuICAgIDwvZGl2PlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwiaGFuZGxlXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiBpc09wZW4gPyAncm90YXRlKDE4MGRlZyknIDogJ3JvdGF0ZSgwZGVnKScgfVwiXG4gICAgICB3aWR0aD1cIjIwXCJcbiAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEzLjgyNSA3LjE1ODQ1TDEwIDEwLjk3NTFMNi4xNzUgNy4xNTg0NUw1IDguMzMzNDVMMTAgMTMuMzMzNEwxNSA4LjMzMzQ1TDEzLjgyNSA3LjE1ODQ1WlwiXG4gICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBDb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgaGVpZ2h0OiBkcm9wZG93bkxpc3RIZWlnaHQsXG4gICAgICB3aWR0aDogZHJvcGRvd25MaXN0V2lkdGhcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgPGRpdlxuICAgICAgICAjc2luZ2xlSXRlbVxuICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpdGVtLWRpc2FibGVkJzogaXRlbT8uZGlzYWJsZWQgfVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uSG92ZXIoaXRlbSwgdHJ1ZSwgc2luZ2xlSXRlbSlcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgW25nU3R5bGVdPVwieyB3aWR0aDogaXRlbT8uaWNvbiA/ICc5MCUnIDogJzEwMCUnIH1cIj5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbT8uaWNvblwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgW3NyY109XCJpdGVtLmljb25cIiBhbHQ9XCJubyBpbWdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5vRGF0YVwiICpuZ0lmPVwiZGF0YS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAge3sgbm9EYXRhTWVzc2FnZSB8fCBcIk5vIHJlc3VsdHNcIiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdWJQb3B1cENvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBoZWlnaHQ6IGRyb3Bkb3duTGlzdEhlaWdodCxcbiAgICAgIHdpZHRoOiBkcm9wZG93bkxpc3RXaWR0aFxuICAgIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW1zXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2l0ZW0tZGlzYWJsZWQnOiBpdGVtLmRpc2FibGVkIH1cIlxuICAgICAgICAoY2xpY2spPVwiIWl0ZW0uZGlzYWJsZWQgJiYgc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN1Ykl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbS50eXBlID09PSAnTVVMVElQTEUnXCI+XG4gICAgICAgICAgPG1pcy1jaGVja2JveCBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiIFtjaGVja2VkXT1cIml0ZW0uY2hlY2tlZFwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgW25nU3R5bGVdPVwieyB3aWR0aDogaXRlbS5pY29uID8gJzkwJScgOiAnMTAwJScgfVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiAqbmdJZj1cIml0ZW0uaWNvbiB8fCBpdGVtLmNoZWNrZWRcIj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiIWl0ZW0uY2hlY2tlZFwiIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiaXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlID09PSAnU0lOR0xFJyAmJiBpdGVtLmNoZWNrZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5vRGF0YVwiICpuZ0lmPVwiZGF0YS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAge3sgbm9EYXRhTWVzc2FnZSB8fCBcIk5vIHJlc3VsdHNcIiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGlja0ljb24+XG4gIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxwYXRoXG4gICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgZD1cIk03LjQ3Njk3IDE0LjgyMzdMMy40OTkyMiAxMC41NTE5QzMuMjc3NiAxMC4zMTY5IDMuMjc3NiA5LjkzNDM3IDMuNDk5MjIgOS42OTY4NEw0LjMwMjczIDguODQyOThDNC41MjQzNCA4LjYwNzk1IDQuODg0NjIgOC42MDc5NSA1LjEwNjIzIDguODQyOThMNy44NzkyOSAxMS44MzM0TDE0LjA2MDcgNS4xNzYyN0MxNC4yODIzIDQuOTQxMjQgMTQuNjQyNiA0Ljk0MTI0IDE0Ljg2NDIgNS4xNzYyN0wxNS42Njc3IDYuMDMxMzhDMTUuODg5NCA2LjI2NjQxIDE1Ljg4OTQgNi42NTAyMSAxNS42Njc3IDYuODgzOTlMOC4yODA0OCAxNC44MjM3QzguMDU4ODYgMTUuMDU4OCA3LjY5ODU5IDE1LjA1ODggNy40NzY5NyAxNC44MjM3WlwiXG4gICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgLz5cbiAgPC9zdmc+XG48L25nLXRlbXBsYXRlPlxuIl19
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYWN0aW9uLWxpc3QvYWN0aW9uLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYWN0aW9uLWxpc3QvYWN0aW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0lDaUIvSCw2QkFBbUQ7SUFBQSxZQUFnQztJQUFBLGlCQUFJOzs7SUFBcEMsY0FBZ0M7SUFBaEMsdUdBQWdDOzs7SUF5Q2pGLCtCQUErQztJQUM3QywwQkFBbUQ7SUFDckQsaUJBQU07OztJQURjLGNBQWlCO0lBQWpCLG9EQUFpQjs7OztJQVp2QyxrQ0FPQztJQUZDLHdRQUFjLHdCQUFjLElBQUksZ0JBQWEsS0FBQztJQUk1QyxBQURGLCtCQUFzRSxXQUM5RDtJQUFBLFlBQWlCO0lBQ3pCLEFBRHlCLGlCQUFPLEVBQzFCO0lBQ04seUZBQStDO0lBR2pELGlCQUFNOzs7SUFWSiwrRkFBK0M7SUFJNUIsZUFBa0Q7SUFBbEQsOEdBQWtEO0lBQzdELGVBQWlCO0lBQWpCLDREQUFpQjtJQUVJLGNBQWdCO0lBQWhCLDREQUFnQjs7O0lBSS9DLCtCQUE4QztJQUM1QyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxxRUFDRjs7O0lBbEJGLEFBUEYsK0JBTUMsY0FDb0I7SUFnQmpCLEFBZkEsbUZBT0Msc0VBUTZDO0lBSWxELEFBREUsaUJBQU0sRUFDRjs7O0lBekJKLHlHQUdFO0lBU21CLGVBQU87SUFBUCxxQ0FBTztJQVNMLGNBQXVCO0lBQXZCLCtDQUF1Qjs7O0lBdUIxQywrQkFBaUU7SUFDL0QsbUNBQWlGO0lBQ25GLGlCQUFNOzs7SUFEVSxjQUEwQjtJQUFDLEFBQTNCLDJDQUEwQiw0QkFBeUI7OztJQU1qRSwwQkFBeUU7OztJQUFqQyxvREFBaUI7OztJQUV2RCx3QkFBMEQ7OztJQUQ1RCw2QkFBNkQ7SUFDM0QsaUlBQTJDOzs7OztJQUE1QixjQUEwQjtJQUExQiw4Q0FBMEI7OztJQUg3QywrQkFBOEQ7SUFFNUQsQUFEQSxnR0FBeUUscUdBQ1o7SUFHL0QsaUJBQU07OztJQUpFLGNBQW1CO0lBQW5CLHVDQUFtQjtJQUNWLGNBQTRDO0lBQTVDLG1FQUE0Qzs7OztJQWYvRCwrQkFNQztJQUZDLDJPQUEyQiwwQkFBZ0IsS0FBQztJQUc1QywwRkFBaUU7SUFJL0QsQUFERiwrQkFBcUUsV0FDN0Q7SUFBQSxZQUFnQjtJQUN4QixBQUR3QixpQkFBTyxFQUN6QjtJQUNOLDBGQUE4RDtJQU1oRSxpQkFBTTs7O0lBaEJKLHNFQUE4QztJQUliLGNBQThCO0lBQTlCLGtEQUE4QjtJQUc1QyxjQUFpRDtJQUFqRCxtRkFBaUQ7SUFDNUQsZUFBZ0I7SUFBaEIsbUNBQWdCO0lBRUssY0FBK0I7SUFBL0Isc0RBQStCOzs7SUFPOUQsK0JBQThDO0lBQzVDLFlBQ0Y7SUFBQSxpQkFBTTs7O0lBREosY0FDRjtJQURFLHFFQUNGOzs7SUF2QkYsQUFQRiwrQkFNQyxjQUNvQjtJQXFCakIsQUFwQkEsb0ZBTUMsdUVBYzZDO0lBSWxELEFBREUsaUJBQU0sRUFDRjs7O0lBOUJKLHlHQUdFO0lBUW1CLGVBQVc7SUFBWCx5Q0FBVztJQWVULGNBQXVCO0lBQXZCLCtDQUF1Qjs7OztJQU9oRCwrQkFBK0Y7SUFDN0YsMkJBS0U7SUFDSixpQkFBTTs7QUR6R1IsTUFBTSxPQUFPLG1CQUFtQjtJQTBCOUIsWUFBb0IsSUFBZ0IsRUFBVSxPQUFnQixFQUFVLGdCQUFrQztRQUF0RixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6QjFHLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixhQUFRLEdBQWlCLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQWtCLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsVUFBSyxHQUFXLFFBQVEsQ0FBQztRQUV6Qix1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBQy9CLHlCQUFvQixHQUFxQixNQUFNLENBQUM7UUFFaEQsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsa0JBQWEsR0FBVyxTQUFTLENBQUM7UUFDM0Msa0JBQWEsR0FBaUIsRUFBRSxDQUFDO1FBRXZCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVFrRCxDQUFDO0lBQzlHLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLENBQUMsT0FBTztnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBbUIsRUFBRSxNQUFjO1FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUM1RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNPLFlBQVksQ0FBQyxRQUE4QixFQUFFLE1BQW1CLEVBQUUsU0FBa0I7UUFDMUYsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqSCxJQUFJLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzlHLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRztZQUNuQixJQUFJLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEgsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQy9HLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRztZQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDeEYsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ25GLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2xDLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzthQUMzQixhQUFhLENBQ1osU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDcEk7YUFDQSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDaEMsV0FBVyxFQUFFLENBQUMsU0FBUztZQUN2QixhQUFhLEVBQUUsa0NBQWtDO1lBQ2pELGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUMxRCxnQkFBZ0I7WUFDaEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCO2dCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDN0YsSUFBSSxJQUFJLENBQUMsa0JBQWtCO2dCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDaEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFnQjtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDbEYsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixHQUFHLENBQUM7Z0JBQ0osUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0IsR0FBRyxDQUFDO29CQUNKLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUs7aUJBQzdDLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0w7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixHQUFHLENBQUM7Z0JBQ0osUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0IsR0FBRyxDQUFDO29CQUNKLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO2lCQUM3SCxDQUFDLENBQUM7YUFDSixDQUFDLENBQUMsQ0FBQztZQUNKLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO2dCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFDRCxJQUFJLENBQUMsS0FBSztZQUNSLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25HLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQWdCLEVBQUUsU0FBUyxFQUFFLE9BQWE7UUFDaEQsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxLQUFLLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDNUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hIO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDL0IsQ0FBQztvRkFwSVUsbUJBQW1CO29FQUFuQixtQkFBbUI7Ozs7Ozs7Ozs7O1lDRjlCLEFBUEYsOEJBTUMsZ0JBUUU7WUFGQyxBQURBLCtJQUFlLG9CQUFnQixLQUFDLHNIQUN2QixvQkFBZ0IsS0FBQztZQUl4QixBQURGLDhCQUFtQixXQUNEO1lBQ2QsWUFDRjtZQUFBLGlCQUFJO1lBQ0osZ0VBQW1EO1lBQ3JELGlCQUFNOztZQUNOLCtCQVFDO1lBQ0MsMkJBS0U7WUFHUixBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGO1lBb0VOLEFBbkNBLEFBL0JBLHFIQUE2QiwwR0ErQkcsMEdBbUNUOztZQXhHckIsb0lBR0U7WUFRQSxjQUFtRDtZQUFuRCxpRkFBbUQ7WUFJL0MsZUFDRjtZQURFLDBDQUNGO1lBQ0ksY0FBK0I7WUFBL0Isd0ZBQStCO1lBSW5DLGNBQXFFO1lBQXJFLHFHQUFxRTs7O2lGRGQ5RCxtQkFBbUI7Y0FML0IsU0FBUzsyQkFDRSxpQkFBaUI7Z0dBU2xCLElBQUk7a0JBQVosS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUVHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUVHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBR0ksUUFBUTtrQkFBakIsTUFBTTtZQUVpQyxhQUFhO2tCQUFwRCxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDVSxjQUFjO2tCQUE3RCxTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNLLGlCQUFpQjtrQkFBbkUsU0FBUzttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQXRCdEMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtYWN0aW9uLWxpc3RcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpb24tbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYWN0aW9uLWxpc3QuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHN1Ykl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXTtcblxuICBASW5wdXQoKSBkYXRhOiBBY3Rpb25JdGVtc1tdID0gW107XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlNlbGVjdFwiO1xuXG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdEhlaWdodDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0V2lkdGg6IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGlzdFBvc2l0aW9uOiBcIkxlZnRcIiB8IFwiUmlnaHRcIiA9IFwiTGVmdFwiO1xuXG4gIEBJbnB1dCgpIHNlYXJjaEVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBub0RhdGFNZXNzYWdlOiBzdHJpbmcgPSBcIk5vIERhdGFcIjtcbiAgc2VsZWN0ZWRJdGVtczogQWN0aW9uSXRlbVtdID0gW107XG5cbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKFwic2VsZWN0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3RFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwicG9wdXBDb250YWluZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcHVwQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChcInN1YlBvcHVwQ29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBzdWJQb3B1cENvbnRhaW5lcjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBzdWJPdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZVJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUubG9nKFwidGhpcy5kYXRcIiwgdGhpcy5kYXRhKTtcbiAgICBcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLmRhdGE/LmZvckVhY2gocSA9PlxuICAgICAgcT8uY2hpbGRyZW4uZm9yRWFjaCh3ID0+IHtcbiAgICAgICAgaWYgKHcuY2hlY2tlZCkgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2godyk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5sYWJlbCA9IHRoaXMuc2VsZWN0ZWRJdGVtc1swXT8ubGFiZWwgfHwgdGhpcy5sYWJlbDtcbiAgfVxuXG4gIGZpbHRlckJ5VmFsdWUoYXJyYXk6IEFjdGlvbkl0ZW1bXSwgc3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXJyYXkuZmlsdGVyKG8gPT4gby5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0cmluZy50b0xvd2VyQ2FzZSgpKSk7XG4gIH1cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLnBvcHVwQ29udGFpbmVyLCB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgZmFsc2UpO1xuICAgIGVsc2UgdGhpcy5vbkNhbmNlbCgpO1xuICB9XG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50Piwgb3JpZ2luOiBIVE1MRWxlbWVudCwgb3BlblJpZ2h0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25zQm90dG9tID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSwgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KVxuICAgIF07XG4gICAgY29uc3QgcG9zaXRpb25zVG9wID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwidG9wXCIgfSwgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwiZW5kXCIsIG9yaWdpblk6IFwidG9wXCIgfSwgeyBvdmVybGF5WDogXCJlbmRcIiwgb3ZlcmxheVk6IFwiYm90dG9tXCIgfSwgMCwgLTQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBbXG4gICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbiA9PT0gXCJSaWdodFwiID8gcG9zaXRpb25zQm90dG9tLnJldmVyc2UoKSA6IHBvc2l0aW9uc0JvdHRvbSksXG4gICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbiA9PT0gXCJSaWdodFwiID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyhcbiAgICAgICAgb3BlblJpZ2h0ID8gW25ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDgpXSA6IHBvc2l0aW9uc1xuICAgICAgKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuICAgIGNvbnN0IGNvbmZpZ3MgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogIW9wZW5SaWdodCxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIixcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aCB8fCAxNDBcbiAgICB9KTtcbiAgICBpZiAob3BlblJpZ2h0KSB7XG4gICAgICB0aGlzLnN1Yk92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZ3MpO1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgpIHRoaXMuc3ViT3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGggfSk7XG4gICAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RIZWlnaHQpIHRoaXMuc3ViT3ZlcmxheVJlZi51cGRhdGVTaXplKHsgaGVpZ2h0OiB0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCB9KTtcbiAgICAgIHRoaXMuc3ViT3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHRoaXMuc3ViT3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgpIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGggfSk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0KSB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IGhlaWdodDogdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub25DYW5jZWwoKTtcbiAgICB9KTtcbiAgfVxuICBzZWxlY3RJdGVtKGl0ZW06IEFjdGlvbkl0ZW0pIHtcbiAgICBpZiAodGhpcy5kYXRhLnNvbWUocSA9PiBxLmNoaWxkcmVuLnNvbWUodyA9PiB3LnZhbHVlID09PSBpdGVtLnZhbHVlICYmIHcuY2hlY2tlZCkpKSB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcIk1VTFRJUExFXCIpIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIocSA9PiBxLnZhbHVlICE9PSBpdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5tYXAocSA9PiAoe1xuICAgICAgICAuLi5xLFxuICAgICAgICBjaGlsZHJlbjogcT8uY2hpbGRyZW4/Lm1hcChlID0+ICh7XG4gICAgICAgICAgLi4uZSxcbiAgICAgICAgICBjaGVja2VkOiBlLmNoZWNrZWQgJiYgZS52YWx1ZSAhPT0gaXRlbS52YWx1ZVxuICAgICAgICB9KSlcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLm1hcChxID0+ICh7XG4gICAgICAgIC4uLnEsXG4gICAgICAgIGNoaWxkcmVuOiBxPy5jaGlsZHJlbj8ubWFwKGUgPT4gKHtcbiAgICAgICAgICAuLi5lLFxuICAgICAgICAgIGNoZWNrZWQ6IChlLnR5cGUgPT09IFwiTVVMVElQTEVcIiAmJiAoZS5jaGVja2VkIHx8IGUudmFsdWUgPT09IGl0ZW0udmFsdWUpKSB8fCAoZS50eXBlID09PSBcIlNJTkdMRVwiICYmIGUudmFsdWUgPT09IGl0ZW0udmFsdWUpXG4gICAgICAgIH0pKVxuICAgICAgfSkpO1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJNVUxUSVBMRVwiKSB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh7IC4uLml0ZW0sIGNoZWNrZWQ6IHRydWUgfSk7XG4gICAgfVxuICAgIHRoaXMubGFiZWwgPVxuICAgICAgaXRlbS50eXBlID09PSBcIk1VTFRJUExFXCIgPyAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkSXRlbXNbMF0/LmxhYmVsIDogXCJTZWxlY3RcIikgOiBpdGVtLmNoZWNrZWQgPyBcIlNlbGVjdFwiIDogaXRlbS5sYWJlbDtcbiAgICB0aGlzLnN1Ykl0ZW1zID0gdGhpcy5kYXRhLmZpbmQocSA9PiBxLmNoaWxkcmVuPy5zb21lKHcgPT4gdy52YWx1ZSA9PT0gaXRlbS52YWx1ZSkpPy5jaGlsZHJlbiB8fCBbXTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5kYXRhKTtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcIlNJTkdMRVwiKSB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gIH1cbiAgb25Ib3ZlcihpdGVtOiBBY3Rpb25JdGVtLCBpc0hvdmVyZWQsIGVsZW1lbnQ/OiBhbnkpIHtcbiAgICBpZiAoaXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLnN1Ykl0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5zdWJPdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgIHRoaXMuc3ViSXRlbXMgPSB0aGlzLmRhdGEuZmluZChxID0+IHE/LmNoaWxkcmVuPy5zb21lKHcgPT4gdz8ucGFyZW50VmFsdWUgPT09IGl0ZW0/LnZhbHVlKSk/LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgdGhpcy5zdWJJdGVtcy5sZW5ndGggPiAwICYmIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuc3ViUG9wdXBDb250YWluZXIsIGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgfHwgZWxlbWVudCwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3ViSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc3ViT3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgfVxuICB9XG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLnN1Yk92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uSXRlbXMge1xuICBsYWJlbDogQWN0aW9uSXRlbUxhYmVsIHwgc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogQWN0aW9uSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkl0ZW1MYWJlbCB7XG4gIHByaW1hcnlUZXh0ID86IHN0cmluZztcbiAgc2Vjb25kYXJ5VGV4dCA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uSXRlbSB7XG4gIHR5cGU6IFwiU0lOR0xFXCIgfCBcIk1VTFRJUExFXCI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHBhcmVudFZhbHVlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNoZWNrZWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGhlaWdodC5sZW5ndGggPiAwID8gaGVpZ2h0IDogJycsXG4gICAgd2lkdGg6IHdpZHRoLmxlbmd0aCA+IDAgPyB3aWR0aCA6ICcnXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgI3NlbGVjdFxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCJcbiAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGlzT3BlbiA/ICcjRTZFQkY3JyA6ICcnIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHRcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwICpuZ0lmPVwic2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIj4re3sgc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoIC0gMSB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cImhhbmRsZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7IHRyYW5zZm9ybTogaXNPcGVuID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICdyb3RhdGUoMGRlZyknIH1cIlxuICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMy44MjUgNy4xNTg0NUwxMCAxMC45NzUxTDYuMTc1IDcuMTU4NDVMNSA4LjMzMzQ1TDEwIDEzLjMzMzRMMTUgOC4zMzM0NUwxMy44MjUgNy4xNTg0NVpcIlxuICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BvcHVwQ29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGhlaWdodDogZHJvcGRvd25MaXN0SGVpZ2h0LFxuICAgICAgd2lkdGg6IGRyb3Bkb3duTGlzdFdpZHRoXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3NpbmdsZUl0ZW1cbiAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXRlbS1kaXNhYmxlZCc6IGl0ZW0/LmRpc2FibGVkIH1cIlxuICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyKGl0ZW0sIHRydWUsIHNpbmdsZUl0ZW0pXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGl0ZW0/Lmljb24gPyAnOTAlJyA6ICcxMDAlJyB9XCI+XG4gICAgICAgICAgPHNwYW4+e3sgaXRlbT8ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiAqbmdJZj1cIml0ZW0/Lmljb25cIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiaXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImRhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIHt7IG5vRGF0YU1lc3NhZ2UgfHwgXCJObyByZXN1bHRzXCIgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3ViUG9wdXBDb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgaGVpZ2h0OiBkcm9wZG93bkxpc3RIZWlnaHQsXG4gICAgICB3aWR0aDogZHJvcGRvd25MaXN0V2lkdGhcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpdGVtLWRpc2FibGVkJzogaXRlbS5kaXNhYmxlZCB9XCJcbiAgICAgICAgKGNsaWNrKT1cIiFpdGVtLmRpc2FibGVkICYmIHNlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWJJdGVtc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ01VTFRJUExFJ1wiPlxuICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIiBbY2hlY2tlZF09XCJpdGVtLmNoZWNrZWRcIj48L21pcy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGl0ZW0uaWNvbiA/ICc5MCUnIDogJzEwMCUnIH1cIj5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgKm5nSWY9XCJpdGVtLmljb24gfHwgaXRlbS5jaGVja2VkXCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cIiFpdGVtLmNoZWNrZWRcIiBjbGFzcz1cImljb25cIiBbc3JjXT1cIml0ZW0uaWNvblwiIGFsdD1cIm5vIGltZ1wiIC8+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ1NJTkdMRScgJiYgaXRlbS5jaGVja2VkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGlja0ljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImRhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIHt7IG5vRGF0YU1lc3NhZ2UgfHwgXCJObyByZXN1bHRzXCIgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RpY2tJY29uPlxuICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICA8cGF0aFxuICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgIGQ9XCJNNy40NzY5NyAxNC44MjM3TDMuNDk5MjIgMTAuNTUxOUMzLjI3NzYgMTAuMzE2OSAzLjI3NzYgOS45MzQzNyAzLjQ5OTIyIDkuNjk2ODRMNC4zMDI3MyA4Ljg0Mjk4QzQuNTI0MzQgOC42MDc5NSA0Ljg4NDYyIDguNjA3OTUgNS4xMDYyMyA4Ljg0Mjk4TDcuODc5MjkgMTEuODMzNEwxNC4wNjA3IDUuMTc2MjdDMTQuMjgyMyA0Ljk0MTI0IDE0LjY0MjYgNC45NDEyNCAxNC44NjQyIDUuMTc2MjdMMTUuNjY3NyA2LjAzMTM4QzE1Ljg4OTQgNi4yNjY0MSAxNS44ODk0IDYuNjUwMjEgMTUuNjY3NyA2Ljg4Mzk5TDguMjgwNDggMTQuODIzN0M4LjA1ODg2IDE1LjA1ODggNy42OTg1OSAxNS4wNTg4IDcuNDc2OTcgMTQuODIzN1pcIlxuICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgIC8+XG4gIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -30,15 +30,16 @@ export class AnalyticsService {
30
30
  }
31
31
  });
32
32
  }
33
- send(eventAction, event_category, event_label, event_value, force = false) {
33
+ send(eventAction, event_category, event_label, event_value, force = false, customParameters) {
34
34
  if (!this.scriptLoaded && !force) {
35
- this.pendingEvents.push(["event", eventAction, event_category, event_label, event_value]);
35
+ this.pendingEvents.push(["event", eventAction, event_category, event_label, event_value, customParameters]);
36
36
  return;
37
37
  }
38
38
  gtag?.("event", eventAction, {
39
- event_category,
40
- event_label,
41
- event_value
39
+ event_category: event_category,
40
+ event_label: event_label,
41
+ event_value: event_value,
42
+ ...customParameters
42
43
  });
43
44
  }
44
45
  setIdentity(identifier) {
@@ -60,4 +61,4 @@ export class AnalyticsService {
60
61
  type: Inject,
61
62
  args: [DOCUMENT]
62
63
  }] }], null); })();
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9hbmFseXRpY3MvYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQU05RCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQXNDLFFBQWE7UUFBYixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBSDNDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGtCQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUVLLENBQUM7SUFFdkQsWUFBWSxDQUFDLGFBQXFCLEVBQUUsUUFBbUI7UUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSwrQ0FBK0MsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUUvRixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxTQUFTLEdBQUcsb0lBQW9JLGFBQWEsTUFBTSxDQUFDO1FBQy9LLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQXlCO1FBQ25ELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsQ0FBQztxQkFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBbUIsRUFBRSxjQUFzQixFQUFFLFdBQW9CLEVBQUUsV0FBb0IsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN6RyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDMUYsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO1lBQzNCLGNBQWM7WUFDZCxXQUFXO1lBQ1gsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBa0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztpRkFqRFUsZ0JBQWdCLGNBSVAsUUFBUTt1RUFKakIsZ0JBQWdCLFdBQWhCLGdCQUFnQixtQkFGZixNQUFNOztpRkFFUCxnQkFBZ0I7Y0FINUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COztzQkFLYyxNQUFNO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmRlY2xhcmUgY29uc3QgZ3RhZzogRnVuY3Rpb247XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIHByaXZhdGUgc2NyaXB0TG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcGVuZGluZ0V2ZW50czogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnkpIHt9XG5cbiAgaW5zZXJ0U2NyaXB0KG1lYXN1cmVtZW50SWQ6IHN0cmluZywgcmVuZGVyZXI6IFJlbmRlcmVyMik6IHZvaWQge1xuICAgIGNvbnN0IGxvYWRTY3JpcHQgPSByZW5kZXJlci5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIGxvYWRTY3JpcHQuc2V0QXR0cmlidXRlKFwiYXN5bmNcIiwgdHJ1ZSk7XG4gICAgbG9hZFNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYGh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9JHttZWFzdXJlbWVudElkfWApO1xuXG4gICAgY29uc3QgaW5pdFNjcmlwdCA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgaW5pdFNjcmlwdC5pbm5lclRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fWd0YWcoXFwnanNcXCcsIG5ldyBEYXRlKCkpO2d0YWcoXFwnY29uZmlnXFwnLCBcXCcke21lYXN1cmVtZW50SWR9XFwnKTtgO1xuICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgbG9hZFNjcmlwdCk7XG4gICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBpbml0U2NyaXB0KTtcbiAgICB0aGlzLmhhbmRsZVBlbmRpbmdFdmVudHMobG9hZFNjcmlwdCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBlbmRpbmdFdmVudHMoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCk6IHZvaWQge1xuICAgIHNjcmlwdC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICBmb3IgKGNvbnN0IGV2ZW50RGV0YWlscyBvZiB0aGlzLnBlbmRpbmdFdmVudHMpIHtcbiAgICAgICAgaWYgKGV2ZW50RGV0YWlsc1swXSA9PT0gXCJldmVudFwiKSB7XG4gICAgICAgICAgdGhpcy5zZW5kKGV2ZW50RGV0YWlsc1sxXSwgZXZlbnREZXRhaWxzWzJdLCBldmVudERldGFpbHNbM10sIGV2ZW50RGV0YWlsc1s0XSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnREZXRhaWxzWzBdID09PSBcInNldFwiKSB7XG4gICAgICAgICAgdGhpcy5zZXRJZGVudGl0eShldmVudERldGFpbHNbMV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZW5kKGV2ZW50QWN0aW9uOiBzdHJpbmcsIGV2ZW50X2NhdGVnb3J5OiBzdHJpbmcsIGV2ZW50X2xhYmVsPzogc3RyaW5nLCBldmVudF92YWx1ZT86IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zY3JpcHRMb2FkZWQgJiYgIWZvcmNlKSB7XG4gICAgICB0aGlzLnBlbmRpbmdFdmVudHMucHVzaChbXCJldmVudFwiLCBldmVudEFjdGlvbiwgZXZlbnRfY2F0ZWdvcnksIGV2ZW50X2xhYmVsLCBldmVudF92YWx1ZV0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBndGFnPy4oXCJldmVudFwiLCBldmVudEFjdGlvbiwge1xuICAgICAgZXZlbnRfY2F0ZWdvcnksXG4gICAgICBldmVudF9sYWJlbCxcbiAgICAgIGV2ZW50X3ZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBzZXRJZGVudGl0eShpZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2NyaXB0TG9hZGVkKSB7XG4gICAgICB0aGlzLnBlbmRpbmdFdmVudHMucHVzaChbXCJzZXRcIiwgaWRlbnRpZmllcl0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBndGFnPy4oXCJzZXRcIiwgeyB1c2VyX2lkOiBpZGVudGlmaWVyIH0pO1xuICB9XG59XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9hbmFseXRpY3MvYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQVE5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQXNDLFFBQWE7UUFBYixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBSDNDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUVXLENBQUM7SUFFdkQsWUFBWSxDQUFDLGFBQXFCLEVBQUUsUUFBbUI7UUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSwrQ0FBK0MsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUUvRixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELFVBQVUsQ0FBQyxTQUFTLEdBQUcsb0lBQW9JLGFBQWEsTUFBTSxDQUFDO1FBQy9LLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDckQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQXlCO1FBQ25ELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDN0MsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFO29CQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMvRTtxQkFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ25DO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQ0YsV0FBbUIsRUFDbkIsY0FBc0IsRUFDdEIsV0FBb0IsRUFDcEIsV0FBb0IsRUFDcEIsS0FBSyxHQUFHLEtBQUssRUFDYixnQkFBb0M7UUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUM1RyxPQUFPO1NBQ1I7UUFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO1lBQzNCLGNBQWMsRUFBRSxjQUFjO1lBQzlCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLEdBQUcsZ0JBQWdCO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBa0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM3QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO2lGQXpEVSxnQkFBZ0IsY0FJUCxRQUFRO3VFQUpqQixnQkFBZ0IsV0FBaEIsZ0JBQWdCLG1CQUZmLE1BQU07O2lGQUVQLGdCQUFnQjtjQUg1QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O3NCQUtjLE1BQU07dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuZGVjbGFyZSBjb25zdCBndGFnOiBGdW5jdGlvbjtcbnR5cGUgVEN1c3RvbVBhcmFtZXRlcnMgPSB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfTtcbnR5cGUgVFBlbmRpbmdFdmVudHMgPSAoW1wiZXZlbnRcIiwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZz8sIHN0cmluZz8sIFRDdXN0b21QYXJhbWV0ZXJzP10gfCBbXCJzZXRcIiwgc3RyaW5nXSlbXTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwZW5kaW5nRXZlbnRzOiBUUGVuZGluZ0V2ZW50cyA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSkge31cblxuICBpbnNlcnRTY3JpcHQobWVhc3VyZW1lbnRJZDogc3RyaW5nLCByZW5kZXJlcjogUmVuZGVyZXIyKTogdm9pZCB7XG4gICAgY29uc3QgbG9hZFNjcmlwdCA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgbG9hZFNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJhc3luY1wiLCB0cnVlKTtcbiAgICBsb2FkU2NyaXB0LnNldEF0dHJpYnV0ZShcInNyY1wiLCBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke21lYXN1cmVtZW50SWR9YCk7XG5cbiAgICBjb25zdCBpbml0U2NyaXB0ID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBpbml0U2NyaXB0LmlubmVyVGV4dCA9IGB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTtmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9Z3RhZyhcXCdqc1xcJywgbmV3IERhdGUoKSk7Z3RhZyhcXCdjb25maWdcXCcsIFxcJyR7bWVhc3VyZW1lbnRJZH1cXCcpO2A7XG4gICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBsb2FkU2NyaXB0KTtcbiAgICByZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIGluaXRTY3JpcHQpO1xuICAgIHRoaXMuaGFuZGxlUGVuZGluZ0V2ZW50cyhsb2FkU2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGVuZGluZ0V2ZW50cyhzY3JpcHQ6IEhUTUxTY3JpcHRFbGVtZW50KTogdm9pZCB7XG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsICgpID0+IHtcbiAgICAgIHRoaXMuc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnREZXRhaWxzIG9mIHRoaXMucGVuZGluZ0V2ZW50cykge1xuICAgICAgICBpZiAoZXZlbnREZXRhaWxzWzBdID09PSBcImV2ZW50XCIpIHtcbiAgICAgICAgICB0aGlzLnNlbmQoZXZlbnREZXRhaWxzWzFdLCBldmVudERldGFpbHNbMl0sIGV2ZW50RGV0YWlsc1szXSwgZXZlbnREZXRhaWxzWzRdKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudERldGFpbHNbMF0gPT09IFwic2V0XCIpIHtcbiAgICAgICAgICB0aGlzLnNldElkZW50aXR5KGV2ZW50RGV0YWlsc1sxXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlbmQoXG4gICAgZXZlbnRBY3Rpb246IHN0cmluZywgXG4gICAgZXZlbnRfY2F0ZWdvcnk6IHN0cmluZywgXG4gICAgZXZlbnRfbGFiZWw/OiBzdHJpbmcsIFxuICAgIGV2ZW50X3ZhbHVlPzogc3RyaW5nLCBcbiAgICBmb3JjZSA9IGZhbHNlLCBcbiAgICBjdXN0b21QYXJhbWV0ZXJzPzogVEN1c3RvbVBhcmFtZXRlcnNcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNjcmlwdExvYWRlZCAmJiAhZm9yY2UpIHtcbiAgICAgIHRoaXMucGVuZGluZ0V2ZW50cy5wdXNoKFtcImV2ZW50XCIsIGV2ZW50QWN0aW9uLCBldmVudF9jYXRlZ29yeSwgZXZlbnRfbGFiZWwsIGV2ZW50X3ZhbHVlLCBjdXN0b21QYXJhbWV0ZXJzXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGd0YWc/LihcImV2ZW50XCIsIGV2ZW50QWN0aW9uLCB7XG4gICAgICBldmVudF9jYXRlZ29yeTogZXZlbnRfY2F0ZWdvcnksXG4gICAgICBldmVudF9sYWJlbDogZXZlbnRfbGFiZWwsXG4gICAgICBldmVudF92YWx1ZTogZXZlbnRfdmFsdWUsXG4gICAgICAuLi5jdXN0b21QYXJhbWV0ZXJzXG4gICAgfSk7XG4gIH1cblxuICBzZXRJZGVudGl0eShpZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2NyaXB0TG9hZGVkKSB7XG4gICAgICB0aGlzLnBlbmRpbmdFdmVudHMucHVzaChbXCJzZXRcIiwgaWRlbnRpZmllcl0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBndGFnPy4oXCJzZXRcIiwgeyB1c2VyX2lkOiBpZGVudGlmaWVyIH0pO1xuICB9XG59XG4iXX0=