@wavemaker/app-ng-runtime 12.0.0-next.141134 → 12.0.0-next.141138

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 (202) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +407 -460
  2. app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  4. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -10
  6. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -3
  9. app-ng-runtime/build-task/fesm2022/index.mjs +408 -463
  10. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  11. app-ng-runtime/build-task/public_api.d.ts +0 -2
  12. app-ng-runtime/components/base/bundles/index.umd.js +16 -79
  13. app-ng-runtime/components/base/components.module.d.ts +11 -12
  14. app-ng-runtime/components/base/esm2022/components.module.mjs +1 -5
  15. app-ng-runtime/components/base/esm2022/public_api.mjs +1 -2
  16. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +17 -42
  17. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -2
  18. app-ng-runtime/components/base/fesm2022/index.mjs +18 -80
  19. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  20. app-ng-runtime/components/base/public_api.d.ts +0 -1
  21. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  22. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +5 -11
  23. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +2 -0
  24. app-ng-runtime/components/basic/default/bundles/index.umd.js +18 -7
  25. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +13 -5
  26. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +7 -4
  27. app-ng-runtime/components/basic/default/fesm2022/index.mjs +18 -7
  28. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  29. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  30. app-ng-runtime/components/basic/progress/bundles/index.umd.js +7 -3
  31. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +8 -4
  32. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +7 -3
  33. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  34. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
  35. app-ng-runtime/components/basic/search/bundles/index.umd.js +31 -38
  36. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +31 -35
  37. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -5
  38. app-ng-runtime/components/basic/search/fesm2022/index.mjs +31 -38
  39. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  40. app-ng-runtime/components/basic/search/search.component.d.ts +3 -5
  41. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  42. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  43. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  44. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  45. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  46. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  47. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +6 -14
  48. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +7 -14
  49. app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +2 -3
  50. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +6 -14
  51. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  52. app-ng-runtime/components/containers/tabs/tabs.component.d.ts +0 -1
  53. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  54. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  55. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  56. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  57. app-ng-runtime/components/data/form/bundles/index.umd.js +11 -23
  58. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +12 -24
  59. app-ng-runtime/components/data/form/fesm2022/index.mjs +11 -23
  60. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  61. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +0 -1
  62. app-ng-runtime/components/data/list/bundles/index.umd.js +12 -12
  63. app-ng-runtime/components/data/list/esm2022/list.component.mjs +13 -13
  64. app-ng-runtime/components/data/list/fesm2022/index.mjs +12 -12
  65. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  66. app-ng-runtime/components/data/table/bundles/index.umd.js +1 -1
  67. app-ng-runtime/components/data/table/esm2022/table-row/table-row.props.mjs +2 -2
  68. app-ng-runtime/components/data/table/fesm2022/index.mjs +1 -1
  69. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  70. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +0 -2
  71. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +6 -17
  72. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +1 -1
  73. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +2 -14
  74. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +7 -6
  75. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +7 -18
  76. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +3 -21
  78. app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -3
  79. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +4 -22
  80. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +3 -21
  81. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  82. app-ng-runtime/components/input/chips/bundles/index.umd.js +6 -3
  83. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +7 -4
  84. app-ng-runtime/components/input/chips/fesm2022/index.mjs +6 -3
  85. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  86. app-ng-runtime/components/input/default/base-form-custom.component.d.ts +1 -2
  87. app-ng-runtime/components/input/default/bundles/index.umd.js +62 -107
  88. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +0 -1
  89. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -2
  90. app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +1 -6
  91. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +5 -10
  92. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +5 -5
  93. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +5 -10
  94. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +38 -64
  95. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +1 -2
  96. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +1 -4
  97. app-ng-runtime/components/input/default/fesm2022/index.mjs +62 -107
  98. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +0 -1
  100. app-ng-runtime/components/input/default/switch/switch.component.d.ts +0 -2
  101. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  102. app-ng-runtime/components/input/epoch/bundles/index.umd.js +18 -14
  103. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  104. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +4 -4
  105. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +4 -4
  106. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -11
  107. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  108. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +80 -64
  109. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +80 -65
  110. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +3 -2
  111. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +81 -65
  112. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  113. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +7 -2
  114. app-ng-runtime/components/input/rating/bundles/index.umd.js +35 -26
  115. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +37 -26
  116. app-ng-runtime/components/input/rating/esm2022/rating.props.mjs +1 -3
  117. app-ng-runtime/components/input/rating/fesm2022/index.mjs +36 -27
  118. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  119. app-ng-runtime/components/input/rating/rating.component.d.ts +1 -3
  120. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  121. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  122. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  123. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -6
  125. app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +5 -9
  126. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +4 -8
  127. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  128. app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
  129. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -6
  130. app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +5 -9
  131. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +4 -8
  132. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  133. app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
  134. app-ng-runtime/core/bundles/index.umd.js +0 -23
  135. app-ng-runtime/core/enums/enums.d.ts +0 -1
  136. app-ng-runtime/core/esm2022/enums/enums.mjs +1 -2
  137. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  138. app-ng-runtime/core/esm2022/types/types.mjs +1 -4
  139. app-ng-runtime/core/esm2022/utils/build-utils.mjs +1 -6
  140. app-ng-runtime/core/esm2022/utils/utils.mjs +1 -10
  141. app-ng-runtime/core/fesm2022/index.mjs +1 -21
  142. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  143. app-ng-runtime/core/public_api.d.ts +1 -1
  144. app-ng-runtime/core/types/types.d.ts +1 -5
  145. app-ng-runtime/core/utils/utils.d.ts +0 -2
  146. app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
  147. app-ng-runtime/package.json +1 -1
  148. app-ng-runtime/runtime/base/bundles/index.umd.js +4 -304
  149. app-ng-runtime/runtime/base/esm2022/public_api.mjs +1 -2
  150. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +1 -6
  151. app-ng-runtime/runtime/base/esm2022/types/types.mjs +1 -4
  152. app-ng-runtime/runtime/base/fesm2022/index.mjs +3 -302
  153. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  154. app-ng-runtime/runtime/base/public_api.d.ts +0 -1
  155. app-ng-runtime/runtime/base/runtime-base.module.d.ts +8 -9
  156. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  157. app-ng-runtime/runtime/base/types/types.d.ts +1 -5
  158. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +13 -49
  159. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +3 -8
  160. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +7 -23
  161. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +11 -50
  162. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/scripts/datatable/datatable.js +23 -30
  164. app-ng-runtime/transpiler/bundles/index.umd.js +0 -5
  165. app-ng-runtime/transpiler/esm2022/build.mjs +1 -4
  166. app-ng-runtime/transpiler/esm2022/imports.mjs +1 -3
  167. app-ng-runtime/transpiler/fesm2022/index.mjs +0 -5
  168. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  169. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  170. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  171. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  172. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  173. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
  174. app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +0 -2
  175. app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +0 -2
  176. app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +0 -15
  177. app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +0 -26
  178. app-ng-runtime/components/advanced/custom/.npmignore +0 -2
  179. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +0 -272
  180. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +0 -26
  181. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +0 -2
  182. app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +0 -1
  183. app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +0 -19
  184. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +0 -10
  185. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +0 -145
  186. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +0 -12
  187. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +0 -8
  188. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +0 -68
  189. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  190. app-ng-runtime/components/advanced/custom/esm2022/index.mjs +0 -5
  191. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +0 -4
  192. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +0 -258
  193. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +0 -1
  194. app-ng-runtime/components/advanced/custom/index.d.ts +0 -5
  195. app-ng-runtime/components/advanced/custom/package.json +0 -23
  196. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -3
  197. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +0 -39
  198. app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +0 -14
  199. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +0 -75
  200. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +0 -303
  201. app-ng-runtime/runtime/dynamic/app/services/customwidget-config-provider.service.d.ts +0 -8
  202. app-ng-runtime/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +0 -22
@@ -91,7 +91,6 @@ import { PopoverModule } from "@wm/components/navigation/popover";
91
91
  import { CarouselModule } from "@wm/components/advanced/carousel";
92
92
  import { LoginModule } from "@wm/components/advanced/login";
93
93
  import { MarqueeModule } from "@wm/components/advanced/marquee";
94
- import { CustomModule } from "@wm/components/advanced/custom";
95
94
  import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
96
95
  import { TimepickerModule as ngxTimepickerModule } from "ngx-bootstrap/timepicker";
97
96
  import { BsDropdownModule } from "ngx-bootstrap/dropdown";
@@ -217,7 +216,6 @@ export const REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS = [
217
216
  CarouselModule,
218
217
  LoginModule,
219
218
  MarqueeModule,
220
- CustomModule,
221
219
  PageModule,
222
220
  FooterModule,
223
221
  HeaderModule,
@@ -412,7 +410,6 @@ export class RuntimeBaseModule {
412
410
  CarouselModule,
413
411
  LoginModule,
414
412
  MarqueeModule,
415
- CustomModule,
416
413
  PageModule,
417
414
  FooterModule,
418
415
  HeaderModule,
@@ -543,7 +540,6 @@ export class RuntimeBaseModule {
543
540
  CarouselModule,
544
541
  LoginModule,
545
542
  MarqueeModule,
546
- CustomModule,
547
543
  PageModule,
548
544
  FooterModule,
549
545
  HeaderModule,
@@ -628,7 +624,6 @@ export class RuntimeBaseModule {
628
624
  CarouselModule,
629
625
  LoginModule,
630
626
  MarqueeModule,
631
- CustomModule,
632
627
  PageModule,
633
628
  FooterModule,
634
629
  HeaderModule,
@@ -646,4 +641,4 @@ export const WM_MODULES_FOR_ROOT = [
646
641
  HttpServiceModule.forRoot(),
647
642
  RuntimeBaseModule.forRoot()
648
643
  ];
649
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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QUFVO1FBQ1YsWUFBWTtRQUVaLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFFbkIsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixVQUFVO1FBQ1YsWUFBWTtRQUNaLGFBQWE7UUFFYixXQUFXO1FBQ1gsY0FBYztRQUNkLFdBQVc7UUFDWCxhQUFhO1FBQ2IsWUFBWTtRQUVaLFVBQVU7UUFDVixZQUFZO1FBQ1osWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7QUF5SmhCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQy9CLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtJQUM1QixtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7SUFDN0IsVUFBVSxDQUFDLE9BQU8sRUFBRTtJQUNwQixjQUFjLENBQUMsT0FBTyxFQUFFO0lBQ3hCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7SUFDckIsZUFBZSxDQUFDLE9BQU8sRUFBRTtJQUN6QixpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7SUFDM0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0NBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FQUF9JTklUSUFMSVpFUiwgTE9DQUxFX0lELCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyDJtVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7ybVEb21SZW5kZXJlckZhY3RvcnkyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xuXG5pbXBvcnQge1xuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICAkcGFyc2VFeHByLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIENvcmVNb2R1bGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIGlzT2JqZWN0LFxuICAgIGlzSXBob25lLFxuICAgIGlzSXBvZCxcbiAgICBpc0lwYWQsXG4gICAgVmlld3BvcnQsXG4gICAgaGFzQ29yZG92YVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXbUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHsgRGVzaWduRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9kZXNpZ24tZGlhbG9nJztcbmltcG9ydCB7IFByZWZhYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBNb2JpbGVSdW50aW1lTW9kdWxlIH0gZnJvbSAnQHdtL21vYmlsZS9ydW50aW1lJztcbmltcG9ydCB7IFNlY3VyaXR5TW9kdWxlIH0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnQHdtL2h0dHAnO1xuaW1wb3J0IHsgVmFyaWFibGVzTW9kdWxlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZSB9IGZyb20gJ0B3bS9vQXV0aCc7XG5cbmltcG9ydCB7IEFjY2Vzc3JvbGVzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2FjY2Vzc3JvbGVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FwcC1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21Ub2FzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10b2FzdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVBhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wdHktY29tcG9uZW50L2VtcHR5LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFByZWZhYkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9wcmVmYWIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFwcFJlZiB9IGZyb20gJy4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGlwZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9waXBlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFwcERlZmF1bHRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWRlZmF1bHRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmFiTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByZWZhYi1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvYXV0aC5ndWFyZCc7XG5pbXBvcnQgeyBSb2xlR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9yb2xlLmd1YXJkJztcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcGFnZS1ub3QtZm91bmQuZ3VhcmQnO1xuaW1wb3J0IHsgQXBwSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtanMucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25KU1Jlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2FwcC1leHRlbnNpb24ucmVzb2x2ZSc7XG5pbXBvcnQgeyBJMThuUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvaTE4bi5yZXNvbHZlJztcbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENhbGxJbnRlcmNlcHRvciB9IGZyb20gJy4vc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcmVmYWJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ByZWZhYi1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWNvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvY2FuLWRlYWN0aXZhdGUtcGFnZS5ndWFyZCc7XG5pbXBvcnQgeyBNQVhfQ0FDSEVfQUdFLCBNQVhfQ0FDSEVfU0laRSB9IGZyb20gJy4vdXRpbC93bS1yb3V0ZS1yZXVzZS1zdHJhdGVneSc7XG5cbi8vYW5ndWxhciBvdmVycmlkZXNcbmltcG9ydCB7IFdNRG9tU2hhcmVkU3R5bGVzSG9zdCB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9zaGFyZWRfc3R5bGVzX2hvc3RcIjtcbmltcG9ydCB7IFdNRG9tUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9kb21fcmVuZGVyZXJcIjtcbmltcG9ydCB7UGFnZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2VcIjtcbmltcG9ydCB7Rm9vdGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9mb290ZXJcIjtcbmltcG9ydCB7SGVhZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9oZWFkZXJcIjtcbmltcG9ydCB7TGVmdFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9sZWZ0LXBhbmVsXCI7XG5pbXBvcnQge1JpZ2h0UGFuZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3JpZ2h0LXBhbmVsXCI7XG5pbXBvcnQge1RvcE5hdk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvdG9wLW5hdlwiO1xuaW1wb3J0IHtCYXNpY01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljXCI7XG5pbXBvcnQge1Byb2dyZXNzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcHJvZ3Jlc3NcIjtcbmltcG9ydCB7UmljaFRleHRFZGl0b3JNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9yaWNoLXRleHQtZWRpdG9yXCI7XG5pbXBvcnQge1NlYXJjaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3NlYXJjaFwiO1xuaW1wb3J0IHtUcmVlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvdHJlZVwiO1xuaW1wb3J0IHtDYWxlbmRhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NhbGVuZGFyXCI7XG5pbXBvcnQge0NoaXBzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY2hpcHNcIjtcbmltcG9ydCB7Q29sb3JQaWNrZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jb2xvci1waWNrZXJcIjtcbmltcG9ydCB7Q3VycmVuY3lNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeVwiO1xuaW1wb3J0IHtFcG9jaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2Vwb2NoXCI7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9maWxlLXVwbG9hZFwiO1xuaW1wb3J0IHtJbnB1dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0XCI7XG5pbXBvcnQge1JhdGluZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L3JhdGluZ1wiO1xuaW1wb3J0IHtTbGlkZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9zbGlkZXJcIjtcbmltcG9ydCB7Q2FyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvY2FyZFwiO1xuaW1wb3J0IHtGb3JtTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9mb3JtXCI7XG5pbXBvcnQge0xpc3RNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2xpc3RcIjtcbmltcG9ydCB7TGl2ZVRhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlXCI7XG5pbXBvcnQge1BhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3BhZ2luYXRpb25cIjtcbmltcG9ydCB7VGFibGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3RhYmxlXCI7XG5pbXBvcnQge0NoYXJ0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY2hhcnRcIjtcbmltcG9ydCB7QWNjb3JkaW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9hY2NvcmRpb25cIjtcbmltcG9ydCB7TGluZWFyTGF5b3V0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9saW5lYXItbGF5b3V0XCI7XG5pbXBvcnQge0xheW91dEdyaWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xheW91dC1ncmlkXCI7XG5pbXBvcnQge1BhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9wYW5lbFwiO1xuaW1wb3J0IHtUYWJzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90YWJzXCI7XG5pbXBvcnQge1RpbGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RpbGVcIjtcbmltcG9ydCB7V2l6YXJkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy93aXphcmRcIjtcbmltcG9ydCB7QWxlcnREaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZ1wiO1xuaW1wb3J0IHtJZnJhbWVEaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2lmcmFtZS1kaWFsb2dcIjtcbmltcG9ydCB7TG9naW5EaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2xvZ2luLWRpYWxvZ1wiO1xuaW1wb3J0IHtQYXJ0aWFsRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9wYXJ0aWFsLWRpYWxvZ1wiO1xuaW1wb3J0IHtCcmVhZGNydW1iTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1iXCI7XG5pbXBvcnQge01lbnVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL21lbnVcIjtcbmltcG9ydCB7TmF2YmFyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZiYXJcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vcG9wb3ZlclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2Nhcm91c2VsXCI7XG5pbXBvcnQge0xvZ2luTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvbG9naW5cIjtcbmltcG9ydCB7TWFycXVlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL21hcnF1ZWVcIjtcbmltcG9ydCB7Q3VzdG9tTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvY3VzdG9tXCI7XG5pbXBvcnQge0JzRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtUaW1lcGlja2VyTW9kdWxlIGFzIG5neFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXJcIjtcbmltcG9ydCB7QnNEcm9wZG93bk1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcbmltcG9ydCB7UGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1R5cGVhaGVhZE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdHlwZWFoZWFkXCI7XG5pbXBvcnQge1Byb2dyZXNzYmFyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZSBhcyBuZ3hDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvY2Fyb3VzZWxcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZSBhcyBuZ3hQb3BvdmVyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wb3BvdmVyXCI7XG5pbXBvcnQge05nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGV9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG5kZWNsYXJlIGNvbnN0IF9XTV9BUFBfUFJPUEVSVElFUztcblxuY29uc3QgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzID0gKCkgPT4ge1xuICAgIGxldCBjZG5VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImRlcGxveVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmNkblVybCA9IGNkblVybCB8fCAnbmctYnVuZGxlLyc7XG4gICAgX1dNX0FQUF9QUk9KRUNULm5nRGVzdCA9ICduZy1idW5kbGUvJztcbiAgICB0cnkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vZm9yIGFwcCBwcmV2aWV3IHRoZXJlIGlzIG5vIHdlYnBhY2suIERvbid0IGRvIGFueXRoaW5nLlxuICAgIH1cbn07XG5cbmVudW0gT1Mge1xuICAgIElPUyA9ICdpb3MnLFxuICAgIEFORFJPSUQgPSAnYW5kcm9pZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdQcm92aWRlcihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBrZXksXG4gICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEluaXRpYWxpemVBcHAoSTE4blNlcnZpY2UsIEFwcEpTUmVzb2x2ZSkge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgICAgICBhd2FpdCBBcHBKU1Jlc29sdmUucmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm4gSTE4blNlcnZpY2UubG9hZERlZmF1bHRMb2NhbGUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5ndWxhckxvY2FsZShJMThuU2VydmljZSkge1xuICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgIHJldHVybiBJMThuU2VydmljZS5kZWR1Y2VBcHBMb2NhbGUoKTtcbn1cblxuY29uc3QgZGVmaW5pdGlvbnMgPSBbXG4gICAgQWNjZXNzcm9sZXNEaXJlY3RpdmUsXG4gICAgQXBwU3Bpbm5lckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2FzdGVyQ29tcG9uZW50LFxuICAgIFByZWZhYkRpcmVjdGl2ZSxcbiAgICBBcHBDb21wb25lbnQsXG4gICAgUHJlZmFiUHJldmlld0NvbXBvbmVudCxcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcbl07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMgPSBbXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZSxcbiAgICBEZXNpZ25EaWFsb2dNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcbiAgICBDdXN0b21Nb2R1bGUsXG5cbiAgICBQYWdlTW9kdWxlLFxuICAgIEZvb3Rlck1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTGVmdFBhbmVsTW9kdWxlLFxuICAgIFJpZ2h0UGFuZWxNb2R1bGUsXG4gICAgVG9wTmF2TW9kdWxlLFxuICAgIFByZWZhYk1vZHVsZVxuXTtcblxuLy8gc2V0dGluZyBwYXJzZUV4cHIgYXMgZXhwckV2YWx1YXRvciBmb3Igc3dpcGVBbmltYXRpb25cbigkLmZuIGFzIGFueSkuc3dpcGVBbmltYXRpb24uZXhwcmVzc2lvbkV2YWx1YXRvciA9ICRwYXJzZUV4cHI7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbIC4uLmRlZmluaXRpb25zIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIC4uLmRlZmluaXRpb25zLFxuXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIFRvYXN0ck1vZHVsZSxcbiAgICAgICAgV21Db21wb25lbnRzTW9kdWxlLFxuICAgICAgICBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICBDb3JlTW9kdWxlLFxuICAgICAgICBTZWN1cml0eU1vZHVsZSxcbiAgICAgICAgT0F1dGhNb2R1bGUsXG4gICAgICAgIFZhcmlhYmxlc01vZHVsZSxcbiAgICAgICAgSHR0cFNlcnZpY2VNb2R1bGUsXG4gICAgICAgIC4uLlJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UU1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVNoYXJlZFN0eWxlc0hvc3QsIHVzZUNsYXNzOiBXTURvbVNoYXJlZFN0eWxlc0hvc3R9LFxuICAgICAgICB7cHJvdmlkZTogybVEb21SZW5kZXJlckZhY3RvcnkyLCB1c2VDbGFzczogV01Eb21SZW5kZXJlckZhY3RvcnkyfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUnVudGltZUJhc2VNb2R1bGUge1xuXG4gICAgLy8gdGhpcyBwb2x5ZmlsbCBpcyB0byBhZGQgc3VwcG9ydCBmb3IgQ3VzdG9tRXZlbnQgaW4gSUUxMVxuICAgIHN0YXRpYyBhZGRDdXN0b21FdmVudFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2Ygd2luZG93WydDdXN0b21FdmVudCddID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFkZGluZyB0eXBlIGFzIGFueSB0byBhdm9pZCBlcnJvciBUUzIzMjJcbiAgICAgICAgICAgIGNvbnN0IEN1c3RvbUV2ZW50OiBhbnkgPSAoZXZlbnQsIHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7IGJ1YmJsZXM6IGZhbHNlLCBjYW5jZWxhYmxlOiBmYWxzZSwgZGV0YWlsOiBudWxsIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoICdDdXN0b21FdmVudCcgKTtcbiAgICAgICAgICAgICAgICBldnQuaW5pdEN1c3RvbUV2ZW50KCBldmVudCwgcGFyYW1zLmJ1YmJsZXMsIHBhcmFtcy5jYW5jZWxhYmxlLCBwYXJhbXMuZGV0YWlsICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2dDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9IHdpbmRvd1snRXZlbnQnXS5wcm90b3R5cGU7XG4gICAgICAgICAgICAvLyAjIyMgQU5HVUxBUjlUT0RPICMjI1xuICAgICAgICAgICAgd2luZG93WydDdXN0b21FdmVudCddID0gQ3VzdG9tRXZlbnQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSdW50aW1lQmFzZU1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFJ1bnRpbWVCYXNlTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcCwgdXNlQ2xhc3M6IEFwcFJlZn0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHVzZUNsYXNzOiBUb2FzdGVyU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLCB1c2VDbGFzczogSTE4blNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSwgdXNlQ2xhc3M6IFNwaW5uZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZpZ2F0aW9uU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBcHBEZWZhdWx0cywgdXNlQ2xhc3M6IEFwcERlZmF1bHRzU2VydmljZX0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgdXNlQ2xhc3M6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2V9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBJbml0aWFsaXplQXBwLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlXSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTE9DQUxFX0lELFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBzZXRBbmd1bGFyTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBIdHRwQ2FsbEludGVyY2VwdG9yLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgUGlwZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgRGVjaW1hbFBpcGUsXG4gICAgICAgICAgICAgICAgRGF0ZVBpcGUsXG4gICAgICAgICAgICAgICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQXV0aEd1YXJkLFxuICAgICAgICAgICAgICAgIFJvbGVHdWFyZCxcbiAgICAgICAgICAgICAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICAgICAgICAgICAgICBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkLFxuICAgICAgICAgICAgICAgIEFwcEpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBBcHBFeHRlbnNpb25KU1Jlc29sdmUsXG4gICAgICAgICAgICAgICAgSTE4blJlc29sdmUsXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9TSVpFLCAxMCksXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9BR0UsIDMwICogNjApXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IobW9iaWxlUnVudGltZU1vZHVsZTogTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgICAgICAgICBhcHA6IEFwcCxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydDogVmlld3BvcnQpIHtcbiAgICAgICAgUnVudGltZUJhc2VNb2R1bGUuYWRkQ3VzdG9tRXZlbnRQb2x5ZmlsbCgpO1xuXG4gICAgICAgIHRoaXMuZ2V0RGV2aWNlRGV0YWlscygpLnRoZW4oZGV0YWlscyA9PiB7XG4gICAgICAgICAgICBhcHAuc2VsZWN0ZWRWaWV3UG9ydCA9IHtcbiAgICAgICAgICAgICAgICBvczogZGV0YWlscy5vcyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogZGV0YWlscy5zZWxlY3RlZERldmljZUNhdGVnb3J5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmlld3BvcnQudXBkYXRlKGRldGFpbHMpO1xuICAgICAgICAgICAgYXBwLm5vdGlmeSgnb24tdmlld3BvcnQtZGV0YWlscycsIGRldGFpbHMub3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0RGV2aWNlRGV0YWlscygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtc2dDb250ZW50ID0ge2tleTogJ29uLWxvYWQnfTtcbiAgICAgICAgICAgIC8vIE5vdGlmeSBwcmV2aWV3IHdpbmRvdyB0aGF0IGFwcGxpY2F0aW9uIGlzIHJlYWR5LiBPdGhlcndpc2UsIGlkZW50aWZ5IHRoZSBPUy5cbiAgICAgICAgICAgIGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKG1zZ0NvbnRlbnQsICcqJyk7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgcHJldmlldyBwYWdlXG4gICAgICAgICAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1zZy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZGF0YSkgJiYgZGF0YS5rZXkgPT09ICdzd2l0Y2gtZGV2aWNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhLmRldmljZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0lwaG9uZSgpIHx8IGlzSXBvZCgpIHx8IGlzSXBhZCgpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuSU9TfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeydvcyc6IE9TLkFORFJPSUR9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgV01fTU9EVUxFU19GT1JfUk9PVCA9IFtcbiAgICBXbUNvbXBvbmVudHNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIENvcmVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIFNlY3VyaXR5TW9kdWxlLmZvclJvb3QoKSxcbiAgICBPQXV0aE1vZHVsZS5mb3JSb290KCksXG4gICAgVmFyaWFibGVzTW9kdWxlLmZvclJvb3QoKSxcbiAgICBIdHRwU2VydmljZU1vZHVsZS5mb3JSb290KCksXG4gICAgUnVudGltZUJhc2VNb2R1bGUuZm9yUm9vdCgpXG5dO1xuIl19
644
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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QjtRQUVuQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixZQUFZO1FBQ1osYUFBYTtRQUViLFdBQVc7UUFDWCxjQUFjO1FBQ2QsV0FBVztRQUNYLGFBQWE7UUFFYixVQUFVO1FBQ1YsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO0FBeUpoQixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUMvQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7SUFDNUIsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0lBQzdCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7SUFDcEIsY0FBYyxDQUFDLE9BQU8sRUFBRTtJQUN4QixXQUFXLENBQUMsT0FBTyxFQUFFO0lBQ3JCLGVBQWUsQ0FBQyxPQUFPLEVBQUU7SUFDekIsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0lBQzNCLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgybVTaGFyZWRTdHlsZXNIb3N0IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge8m1RG9tUmVuZGVyZXJGYWN0b3J5Mn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUb2FzdHJNb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgJHBhcnNlRXhwcixcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBDb3JlTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBpc09iamVjdCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIFZpZXdwb3J0LFxuICAgIGhhc0NvcmRvdmFcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nJztcbmltcG9ydCB7IERlc2lnbkRpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQgeyBQcmVmYWJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuaW1wb3J0IHsgTW9iaWxlUnVudGltZU1vZHVsZSB9IGZyb20gJ0B3bS9tb2JpbGUvcnVudGltZSc7XG5pbXBvcnQgeyBTZWN1cml0eU1vZHVsZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZU1vZHVsZSB9IGZyb20gJ0B3bS9odHRwJztcbmltcG9ydCB7IFZhcmlhYmxlc01vZHVsZSB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGUgfSBmcm9tICdAd20vb0F1dGgnO1xuXG5pbXBvcnQgeyBBY2Nlc3Nyb2xlc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hY2Nlc3Nyb2xlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXBwU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tdG9hc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VtcHR5LWNvbXBvbmVudC9lbXB0eS1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVmYWJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcHJlZmFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBSZWYgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNwaW5uZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvcGlwZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBEZWZhdWx0c1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1kZWZhdWx0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZhYk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmVmYWItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2F1dGguZ3VhcmQnO1xuaW1wb3J0IHsgUm9sZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcm9sZS5ndWFyZCc7XG5pbXBvcnQgeyBQYWdlTm90Rm91bmRHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL3BhZ2Utbm90LWZvdW5kLmd1YXJkJztcbmltcG9ydCB7IEFwcEpTUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvYXBwLWpzLnJlc29sdmUnO1xuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtZXh0ZW5zaW9uLnJlc29sdmUnO1xuaW1wb3J0IHsgSTE4blJlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2kxOG4ucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDYWxsSW50ZXJjZXB0b3IgfSBmcm9tICcuL3NlcnZpY2VzL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZXMnO1xuaW1wb3J0IHsgUHJlZmFiUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcmVmYWItcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQtcmVmLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2Nhbi1kZWFjdGl2YXRlLXBhZ2UuZ3VhcmQnO1xuaW1wb3J0IHsgTUFYX0NBQ0hFX0FHRSwgTUFYX0NBQ0hFX1NJWkUgfSBmcm9tICcuL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuXG4vL2FuZ3VsYXIgb3ZlcnJpZGVzXG5pbXBvcnQgeyBXTURvbVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fc2hhcmVkX3N0eWxlc19ob3N0XCI7XG5pbXBvcnQgeyBXTURvbVJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fZG9tX3JlbmRlcmVyXCI7XG5pbXBvcnQge1BhZ2VNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlXCI7XG5pbXBvcnQge0Zvb3Rlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvZm9vdGVyXCI7XG5pbXBvcnQge0hlYWRlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvaGVhZGVyXCI7XG5pbXBvcnQge0xlZnRQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvbGVmdC1wYW5lbFwiO1xuaW1wb3J0IHtSaWdodFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9yaWdodC1wYW5lbFwiO1xuaW1wb3J0IHtUb3BOYXZNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3RvcC1uYXZcIjtcbmltcG9ydCB7QmFzaWNNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpY1wiO1xuaW1wb3J0IHtQcm9ncmVzc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3Byb2dyZXNzXCI7XG5pbXBvcnQge1JpY2hUZXh0RWRpdG9yTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcmljaC10ZXh0LWVkaXRvclwiO1xuaW1wb3J0IHtTZWFyY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9zZWFyY2hcIjtcbmltcG9ydCB7VHJlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3RyZWVcIjtcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jYWxlbmRhclwiO1xuaW1wb3J0IHtDaGlwc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NoaXBzXCI7XG5pbXBvcnQge0NvbG9yUGlja2VyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY29sb3ItcGlja2VyXCI7XG5pbXBvcnQge0N1cnJlbmN5TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY3VycmVuY3lcIjtcbmltcG9ydCB7RXBvY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9lcG9jaFwiO1xuaW1wb3J0IHtGaWxlVXBsb2FkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvZmlsZS11cGxvYWRcIjtcbmltcG9ydCB7SW5wdXRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dFwiO1xuaW1wb3J0IHtSYXRpbmdNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9yYXRpbmdcIjtcbmltcG9ydCB7U2xpZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvc2xpZGVyXCI7XG5pbXBvcnQge0NhcmRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2NhcmRcIjtcbmltcG9ydCB7Rm9ybU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvZm9ybVwiO1xuaW1wb3J0IHtMaXN0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0XCI7XG5pbXBvcnQge0xpdmVUYWJsZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZVwiO1xuaW1wb3J0IHtQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1RhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS90YWJsZVwiO1xuaW1wb3J0IHtDaGFydE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NoYXJ0XCI7XG5pbXBvcnQge0FjY29yZGlvbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uXCI7XG5pbXBvcnQge0xpbmVhckxheW91dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGluZWFyLWxheW91dFwiO1xuaW1wb3J0IHtMYXlvdXRHcmlkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9sYXlvdXQtZ3JpZFwiO1xuaW1wb3J0IHtQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvcGFuZWxcIjtcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvdGFic1wiO1xuaW1wb3J0IHtUaWxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90aWxlXCI7XG5pbXBvcnQge1dpemFyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvd2l6YXJkXCI7XG5pbXBvcnQge0FsZXJ0RGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7SWZyYW1lRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9pZnJhbWUtZGlhbG9nXCI7XG5pbXBvcnQge0xvZ2luRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9sb2dpbi1kaWFsb2dcIjtcbmltcG9ydCB7UGFydGlhbERpYWxvZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2dcIjtcbmltcG9ydCB7QnJlYWRjcnVtYk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYlwiO1xuaW1wb3J0IHtNZW51TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZW51XCI7XG5pbXBvcnQge05hdmJhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyXCI7XG5pbXBvcnQge1BvcG92ZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BvcG92ZXJcIjtcbmltcG9ydCB7Q2Fyb3VzZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jYXJvdXNlbFwiO1xuaW1wb3J0IHtMb2dpbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2xvZ2luXCI7XG5pbXBvcnQge01hcnF1ZWVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9tYXJxdWVlXCI7XG5pbXBvcnQge0JzRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtUaW1lcGlja2VyTW9kdWxlIGFzIG5neFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXJcIjtcbmltcG9ydCB7QnNEcm9wZG93bk1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcbmltcG9ydCB7UGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1R5cGVhaGVhZE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdHlwZWFoZWFkXCI7XG5pbXBvcnQge1Byb2dyZXNzYmFyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZSBhcyBuZ3hDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvY2Fyb3VzZWxcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZSBhcyBuZ3hQb3BvdmVyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wb3BvdmVyXCI7XG5pbXBvcnQge05nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGV9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG5kZWNsYXJlIGNvbnN0IF9XTV9BUFBfUFJPUEVSVElFUztcblxuY29uc3QgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzID0gKCkgPT4ge1xuICAgIGxldCBjZG5VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImRlcGxveVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmNkblVybCA9IGNkblVybCB8fCAnbmctYnVuZGxlLyc7XG4gICAgX1dNX0FQUF9QUk9KRUNULm5nRGVzdCA9ICduZy1idW5kbGUvJztcbiAgICB0cnkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vZm9yIGFwcCBwcmV2aWV3IHRoZXJlIGlzIG5vIHdlYnBhY2suIERvbid0IGRvIGFueXRoaW5nLlxuICAgIH1cbn07XG5cbmVudW0gT1Mge1xuICAgIElPUyA9ICdpb3MnLFxuICAgIEFORFJPSUQgPSAnYW5kcm9pZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdQcm92aWRlcihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBrZXksXG4gICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEluaXRpYWxpemVBcHAoSTE4blNlcnZpY2UsIEFwcEpTUmVzb2x2ZSkge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgICAgICBhd2FpdCBBcHBKU1Jlc29sdmUucmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm4gSTE4blNlcnZpY2UubG9hZERlZmF1bHRMb2NhbGUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5ndWxhckxvY2FsZShJMThuU2VydmljZSkge1xuICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgIHJldHVybiBJMThuU2VydmljZS5kZWR1Y2VBcHBMb2NhbGUoKTtcbn1cblxuY29uc3QgZGVmaW5pdGlvbnMgPSBbXG4gICAgQWNjZXNzcm9sZXNEaXJlY3RpdmUsXG4gICAgQXBwU3Bpbm5lckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2FzdGVyQ29tcG9uZW50LFxuICAgIFByZWZhYkRpcmVjdGl2ZSxcbiAgICBBcHBDb21wb25lbnQsXG4gICAgUHJlZmFiUHJldmlld0NvbXBvbmVudCxcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcbl07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMgPSBbXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZSxcbiAgICBEZXNpZ25EaWFsb2dNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcblxuICAgIFBhZ2VNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBMZWZ0UGFuZWxNb2R1bGUsXG4gICAgUmlnaHRQYW5lbE1vZHVsZSxcbiAgICBUb3BOYXZNb2R1bGUsXG4gICAgUHJlZmFiTW9kdWxlXG5dO1xuXG4vLyBzZXR0aW5nIHBhcnNlRXhwciBhcyBleHByRXZhbHVhdG9yIGZvciBzd2lwZUFuaW1hdGlvblxuKCQuZm4gYXMgYW55KS5zd2lwZUFuaW1hdGlvbi5leHByZXNzaW9uRXZhbHVhdG9yID0gJHBhcnNlRXhwcjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsgLi4uZGVmaW5pdGlvbnMgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICBUb2FzdHJNb2R1bGUsXG4gICAgICAgIFdtQ29tcG9uZW50c01vZHVsZSxcbiAgICAgICAgTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgQ29yZU1vZHVsZSxcbiAgICAgICAgU2VjdXJpdHlNb2R1bGUsXG4gICAgICAgIE9BdXRoTW9kdWxlLFxuICAgICAgICBWYXJpYWJsZXNNb2R1bGUsXG4gICAgICAgIEh0dHBTZXJ2aWNlTW9kdWxlLFxuICAgICAgICAuLi5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFNcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgLi4uZGVmaW5pdGlvbnMsXG5cbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IMm1U2hhcmVkU3R5bGVzSG9zdCwgdXNlQ2xhc3M6IFdNRG9tU2hhcmVkU3R5bGVzSG9zdH0sXG4gICAgICAgIHtwcm92aWRlOiDJtURvbVJlbmRlcmVyRmFjdG9yeTIsIHVzZUNsYXNzOiBXTURvbVJlbmRlcmVyRmFjdG9yeTJ9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lQmFzZU1vZHVsZSB7XG5cbiAgICAvLyB0aGlzIHBvbHlmaWxsIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBDdXN0b21FdmVudCBpbiBJRTExXG4gICAgc3RhdGljIGFkZEN1c3RvbUV2ZW50UG9seWZpbGwoKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWRkaW5nIHR5cGUgYXMgYW55IHRvIGF2b2lkIGVycm9yIFRTMjMyMlxuICAgICAgICAgICAgY29uc3QgQ3VzdG9tRXZlbnQ6IGFueSA9IChldmVudCwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IGZhbHNlLCBkZXRhaWw6IG51bGwgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCggJ0N1c3RvbUV2ZW50JyApO1xuICAgICAgICAgICAgICAgIGV2dC5pbml0Q3VzdG9tRXZlbnQoIGV2ZW50LCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUsIHBhcmFtcy5kZXRhaWwgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXZ0O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgQ3VzdG9tRXZlbnQucHJvdG90eXBlID0gd2luZG93WydFdmVudCddLnByb3RvdHlwZTtcbiAgICAgICAgICAgIC8vICMjIyBBTkdVTEFSOVRPRE8gIyMjXG4gICAgICAgICAgICB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPSBDdXN0b21FdmVudDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJ1bnRpbWVCYXNlTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogUnVudGltZUJhc2VNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQXBwLCB1c2VDbGFzczogQXBwUmVmfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RUb2FzdGVyU2VydmljZSwgdXNlQ2xhc3M6IFRvYXN0ZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0STE4blNlcnZpY2UsIHVzZUNsYXNzOiBJMThuU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCB1c2VDbGFzczogU3Bpbm5lclNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdmlnYXRpb25TZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcERlZmF1bHRzLCB1c2VDbGFzczogQXBwRGVmYXVsdHNTZXJ2aWNlfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZX0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IEluaXRpYWxpemVBcHAsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHBKU1Jlc29sdmVdLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBMT0NBTEVfSUQsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNldEFuZ3VsYXJMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IEh0dHBDYWxsSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBQaXBlU2VydmljZSxcbiAgICAgICAgICAgICAgICBEZWNpbWFsUGlwZSxcbiAgICAgICAgICAgICAgICBEYXRlUGlwZSxcbiAgICAgICAgICAgICAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBQcmVmYWJNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgICAgICAgICAgUm9sZUd1YXJkLFxuICAgICAgICAgICAgICAgIFBhZ2VOb3RGb3VuZEd1YXJkLFxuICAgICAgICAgICAgICAgIENhbkRlYWN0aXZhdGVQYWdlR3VhcmQsXG4gICAgICAgICAgICAgICAgQXBwSlNSZXNvbHZlLFxuICAgICAgICAgICAgICAgIEFwcEV4dGVuc2lvbkpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBJMThuUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX1NJWkUsIDEwKSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX0FHRSwgMzAgKiA2MClcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2JpbGVSdW50aW1lTW9kdWxlOiBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICAgICAgICAgIGFwcDogQXBwLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiBWaWV3cG9ydCkge1xuICAgICAgICBSdW50aW1lQmFzZU1vZHVsZS5hZGRDdXN0b21FdmVudFBvbHlmaWxsKCk7XG5cbiAgICAgICAgdGhpcy5nZXREZXZpY2VEZXRhaWxzKCkudGhlbihkZXRhaWxzID0+IHtcbiAgICAgICAgICAgIGFwcC5zZWxlY3RlZFZpZXdQb3J0ID0ge1xuICAgICAgICAgICAgICAgIG9zOiBkZXRhaWxzLm9zLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBkZXRhaWxzLnNlbGVjdGVkRGV2aWNlQ2F0ZWdvcnlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2aWV3cG9ydC51cGRhdGUoZGV0YWlscyk7XG4gICAgICAgICAgICBhcHAubm90aWZ5KCdvbi12aWV3cG9ydC1kZXRhaWxzJywgZGV0YWlscy5vcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBnZXREZXZpY2VEZXRhaWxzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZ0NvbnRlbnQgPSB7a2V5OiAnb24tbG9hZCd9O1xuICAgICAgICAgICAgLy8gTm90aWZ5IHByZXZpZXcgd2luZG93IHRoYXQgYXBwbGljYXRpb24gaXMgcmVhZHkuIE90aGVyd2lzZSwgaWRlbnRpZnkgdGhlIE9TLlxuICAgICAgICAgICAgaWYgKHdpbmRvdy50b3AgIT09IHdpbmRvdykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2UobXNnQ29udGVudCwgJyonKTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBwcmV2aWV3IHBhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbXNnLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhKSAmJiBkYXRhLmtleSA9PT0gJ3N3aXRjaC1kZXZpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEuZGV2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSXBob25lKCkgfHwgaXNJcG9kKCkgfHwgaXNJcGFkKCkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsnb3MnOiBPUy5JT1N9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuQU5EUk9JRH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBXTV9NT0RVTEVTX0ZPUl9ST09UID0gW1xuICAgIFdtQ29tcG9uZW50c01vZHVsZS5mb3JSb290KCksXG4gICAgTW9iaWxlUnVudGltZU1vZHVsZS5mb3JSb290KCksXG4gICAgQ29yZU1vZHVsZS5mb3JSb290KCksXG4gICAgU2VjdXJpdHlNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKSxcbiAgICBWYXJpYWJsZXNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIEh0dHBTZXJ2aWNlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBSdW50aW1lQmFzZU1vZHVsZS5mb3JSb290KClcbl07XG4iXX0=
@@ -3,7 +3,6 @@ export var ComponentType;
3
3
  ComponentType[ComponentType["PAGE"] = 0] = "PAGE";
4
4
  ComponentType[ComponentType["PREFAB"] = 1] = "PREFAB";
5
5
  ComponentType[ComponentType["PARTIAL"] = 2] = "PARTIAL";
6
- ComponentType[ComponentType["WIDGET"] = 3] = "WIDGET";
7
6
  })(ComponentType || (ComponentType = {}));
8
7
  export class ComponentRefProvider {
9
8
  clearComponentFactoryRefCache() { }
@@ -11,12 +10,10 @@ export class ComponentRefProvider {
11
10
  }
12
11
  export class PrefabConfigProvider {
13
12
  }
14
- export class CustomwidgetConfigProvider {
15
- }
16
13
  export class AppJSProvider {
17
14
  }
18
15
  export class AppVariablesProvider {
19
16
  }
20
17
  export class AppExtensionProvider {
21
18
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTix1REFBTyxDQUFBO0lBQ1AscURBQU0sQ0FBQTtBQUNWLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0lBRXRDLDZCQUE2QixLQUFVLENBQUM7SUFBQSxDQUFDO0NBQzVDO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7Q0FFekM7QUFFRCxNQUFNLE9BQWdCLDBCQUEwQjtDQUUvQztBQUVELE1BQU0sT0FBZ0IsYUFBYTtDQUVsQztBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0NBRXpDO0FBQ0QsTUFBTSxPQUFnQixvQkFBb0I7Q0FFekMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBQQUdFLFxuICAgIFBSRUZBQixcbiAgICBQQVJUSUFMLFxuICAgIFdJREdFVFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50UmVmUHJvdmlkZXIge1xuICAgIGFic3RyYWN0IGdldENvbXBvbmVudEZhY3RvcnlSZWYoY29tcG9uZW50TmFtZTogc3RyaW5nLCBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlKTogUHJvbWlzZTxhbnk+O1xuICAgIGNsZWFyQ29tcG9uZW50RmFjdG9yeVJlZkNhY2hlKCk6IHZvaWQge307XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcmVmYWJDb25maWdQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0Q29uZmlnKHByZWZhYk5hbWU6IHN0cmluZyk6IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1c3RvbXdpZGdldENvbmZpZ1Byb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb25maWcod2lkZ2V0bmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwSlNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwU2NyaXB0Rm4oKTogUHJvbWlzZTxGdW5jdGlvbj47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBWYXJpYWJsZXNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwVmFyaWFibGVzKCk6IFByb21pc2U8YW55Pjtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFeHRlbnNpb25Qcm92aWRlciB7XG4gICAgYWJzdHJhY3QgIGxvYWRGb3JtYXR0ZXJDb25maWdTY3JpcHQoY2FsbGJhY2s6RnVuY3Rpb24pOiB2b2lkO1xufVxuXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTix1REFBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7SUFFdEMsNkJBQTZCLEtBQVUsQ0FBQztJQUFBLENBQUM7Q0FDNUM7QUFFRCxNQUFNLE9BQWdCLG9CQUFvQjtDQUV6QztBQUVELE1BQU0sT0FBZ0IsYUFBYTtDQUVsQztBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0NBRXpDO0FBQ0QsTUFBTSxPQUFnQixvQkFBb0I7Q0FFekMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBQQUdFLFxuICAgIFBSRUZBQixcbiAgICBQQVJUSUFMXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnRSZWZQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUpOiBQcm9taXNlPGFueT47XG4gICAgY2xlYXJDb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUoKTogdm9pZCB7fTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByZWZhYkNvbmZpZ1Byb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb25maWcocHJlZmFiTmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwSlNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwU2NyaXB0Rm4oKTogUHJvbWlzZTxGdW5jdGlvbj47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBWYXJpYWJsZXNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwVmFyaWFibGVzKCk6IFByb21pc2U8YW55Pjtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFeHRlbnNpb25Qcm92aWRlciB7XG4gICAgYWJzdHJhY3QgIGxvYWRGb3JtYXR0ZXJDb25maWdTY3JpcHQoY2FsbGJhY2s6RnVuY3Rpb24pOiB2b2lkO1xufVxuXG4iXX0=
@@ -10,13 +10,12 @@ import * as i2 from '@wm/security';
10
10
  import { SecurityModule } from '@wm/security';
11
11
  import * as i4 from '@wm/variables';
12
12
  import { CONSTANTS, routerService, $rootScope, VariablesService, appManager, httpService, VariablesModule } from '@wm/variables';
13
- import { trim, isEmpty, forEach, extend, get, merge, isUndefined, isObject, endsWith, each, isNil, capitalize, startsWith, split, includes, isString, isNumber, find, intersection, toLower, map, values, keys, findKey, isEqual, filter } from 'lodash-es';
13
+ import { trim, isEmpty, forEach, extend, get, merge, isUndefined, isObject, endsWith, each, isNil, startsWith, split, includes, isString, isNumber, find, intersection, toLower, map, values, keys, findKey, isEqual, filter } from 'lodash-es';
14
14
  import { SpaPageDirective, PageDirective, LayoutDirective, PageModule } from '@wm/components/page';
15
15
  import { Subject } from 'rxjs';
16
16
  import * as i3 from '@wm/components/base';
17
17
  import { WidgetRef, PartialDirective, FileIconClassPipe, FileExtensionFromMimePipe, StateClassPipe, FileSizePipe, FilterPipe, ToDatePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, SuffixPipe, TimeFromNowPipe, NumberToStringPipe, StringToNumberPipe, CustomPipe, TrustAsPipe, SanitizePipe, WmComponentsModule } from '@wm/components/base';
18
18
  import { __param, __metadata, __decorate } from 'tslib';
19
- import { RadiosetComponent, CheckboxsetComponent, InputModule } from '@wm/components/input';
20
19
  import * as i2$3 from '@wm/components/prefab';
21
20
  import { PrefabContainerDirective, PrefabDirective as PrefabDirective$1, PrefabModule } from '@wm/components/prefab';
22
21
  import * as i1$5 from '@angular/common/http';
@@ -61,6 +60,7 @@ import { ColorPickerModule } from '@wm/components/input/color-picker';
61
60
  import { CurrencyModule } from '@wm/components/input/currency';
62
61
  import { EpochModule } from '@wm/components/input/epoch';
63
62
  import { FileUploadModule } from '@wm/components/input/file-upload';
63
+ import { InputModule } from '@wm/components/input';
64
64
  import { RatingModule } from '@wm/components/input/rating';
65
65
  import { SliderModule } from '@wm/components/input/slider';
66
66
  import { CardModule } from '@wm/components/data/card';
@@ -87,7 +87,6 @@ import { PopoverModule as PopoverModule$1 } from '@wm/components/navigation/popo
87
87
  import { CarouselModule as CarouselModule$1 } from '@wm/components/advanced/carousel';
88
88
  import { LoginModule } from '@wm/components/advanced/login';
89
89
  import { MarqueeModule } from '@wm/components/advanced/marquee';
90
- import { CustomModule } from '@wm/components/advanced/custom';
91
90
  import { TimepickerModule } from 'ngx-bootstrap/timepicker';
92
91
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
93
92
  import { PaginationModule } from 'ngx-bootstrap/pagination';
@@ -103,7 +102,6 @@ var ComponentType;
103
102
  ComponentType[ComponentType["PAGE"] = 0] = "PAGE";
104
103
  ComponentType[ComponentType["PREFAB"] = 1] = "PREFAB";
105
104
  ComponentType[ComponentType["PARTIAL"] = 2] = "PARTIAL";
106
- ComponentType[ComponentType["WIDGET"] = 3] = "WIDGET";
107
105
  })(ComponentType || (ComponentType = {}));
108
106
  class ComponentRefProvider {
109
107
  clearComponentFactoryRefCache() { }
@@ -111,8 +109,6 @@ class ComponentRefProvider {
111
109
  }
112
110
  class PrefabConfigProvider {
113
111
  }
114
- class CustomwidgetConfigProvider {
115
- }
116
112
  class AppJSProvider {
117
113
  }
118
114
  class AppVariablesProvider {
@@ -1445,297 +1441,6 @@ class BasePageComponent extends FragmentMonitor {
1445
1441
  args: ['window:beforeunload']
1446
1442
  }] }); })();
1447
1443
 
1448
- // export const commonPartialWidgets = {};
1449
- class BaseCustomWidgetComponent extends FragmentMonitor {
1450
- constructor() {
1451
- super(...arguments);
1452
- this.BaseWidget = {};
1453
- this.compileContent = false;
1454
- this.destroy$ = new Subject();
1455
- this.viewInit$ = new Subject();
1456
- this.invokeEvent = (eventName) => {
1457
- this.events[eventName]();
1458
- };
1459
- }
1460
- getContainerWidgetInjector() {
1461
- return this.containerWidget.inj || this.containerWidget.injector;
1462
- }
1463
- init() {
1464
- let resolveFn;
1465
- const promise = new Promise((res) => resolveFn = res);
1466
- this.App = this.injector ? this.injector.get(App) : inject(App);
1467
- //making the code compatible in both the JIT and AOT modes
1468
- this.containerWidget = this.injector ? this.injector.get(WidgetRef) : inject(WidgetRef);
1469
- this.i18nService = this.injector ? this.injector.get(AbstractI18nService) : inject(AbstractI18nService);
1470
- this.scriptLoaderService = this.injector ? this.injector.get(ScriptLoaderService) : inject(ScriptLoaderService);
1471
- this.Viewport = this.injector ? this.injector.get(Viewport) : inject(Viewport);
1472
- this.customwidgetConfigProvider = this.injector ? this.injector.get(CustomwidgetConfigProvider) : inject(CustomwidgetConfigProvider);
1473
- // this.viewContainerRef = this.getContainerWidgetInjector().get(ViewContainerRef);
1474
- // Replacing this.getContainerWidgetInjector().view.component as viewParent
1475
- // this.viewParent = (this.viewContainerRef as any).parentInjector._lView[8];
1476
- this.viewParent = this.containerWidget.viewParent;
1477
- if (this.viewParent.registerFragment) {
1478
- this.viewParent.registerFragment();
1479
- }
1480
- // register functions for binding evaluation
1481
- this.registerExpressions();
1482
- this.initUserScript();
1483
- this.registerPropsInContainerWidget(resolveFn);
1484
- // Using promise to make sure the props are registered in the container widget before registering events, Otherwise no events will be registered
1485
- promise.then(() => this.registerEvents());
1486
- this.registerWidgets();
1487
- this.initVariables();
1488
- this.activePageName = this.App.activePageName; // Todo: remove this
1489
- this.registerProps();
1490
- this.defineI18nProps();
1491
- this.viewInit$.subscribe(noop$1, noop$1, () => {
1492
- this.props = this.containerWidget.props;
1493
- });
1494
- if (this.spa) {
1495
- this.pageDirective = this.injector ? this.injector.get(SpaPageDirective) : inject(SpaPageDirective);
1496
- }
1497
- else {
1498
- this.pageDirective = this.injector ? this.injector.get(PageDirective) : inject(PageDirective);
1499
- }
1500
- if (this.pageDirective) {
1501
- this.registerDestroyListener(this.pageDirective.subscribe('attach', data => this.ngOnAttach(data.refreshData)));
1502
- this.registerDestroyListener(this.pageDirective.subscribe('detach', () => this.ngOnDetach()));
1503
- }
1504
- super.init();
1505
- }
1506
- registerWidgets() {
1507
- // common partial widgets should be accessible from page
1508
- this.Widgets = Object.create(commonPartialWidgets);
1509
- // expose current page widgets on app
1510
- this.App.Widgets = Object.create(this.Widgets);
1511
- }
1512
- initializeComponentData(children) {
1513
- Array.from(children).forEach((child) => {
1514
- if (!child.hasAttribute('wmcustomwidget'))
1515
- this.initializeComponentData(child.children);
1516
- else {
1517
- const asAttr = child.getAttribute('as') || '';
1518
- if (!asAttr) {
1519
- return;
1520
- }
1521
- let baseWidget, splitArr = asAttr.split('-'), modifiedArr = [];
1522
- modifiedArr = splitArr.map((item) => {
1523
- item = item !== 'wm' ? capitalize(item) : item;
1524
- return item;
1525
- });
1526
- baseWidget = modifiedArr.join('');
1527
- switch (baseWidget) {
1528
- case 'wmCheckboxset':
1529
- this[baseWidget] = new CheckboxsetComponent(this.injector, undefined);
1530
- this[baseWidget]["_select"] = (item, $event) => {
1531
- const keys = [];
1532
- forEach(this[baseWidget].datasetItems, (datasetItem) => {
1533
- if (datasetItem.key === item.key)
1534
- datasetItem.selected = !datasetItem.selected;
1535
- if (datasetItem.selected)
1536
- keys.push(datasetItem.key);
1537
- });
1538
- this[baseWidget].triggerInvokeOnChange(keys, $event);
1539
- };
1540
- break;
1541
- case 'wmRadioset':
1542
- this[baseWidget] = new RadiosetComponent(this.injector, undefined);
1543
- this[baseWidget]["_select"] = (item, $event) => {
1544
- this[baseWidget].triggerInvokeOnChange(item.key, $event);
1545
- };
1546
- break;
1547
- }
1548
- for (let [key, value] of this.containerWidget.$attrs) {
1549
- if (key.startsWith('base-')) {
1550
- let modifiedKey = key.replace('base-', '');
1551
- this[baseWidget][modifiedKey] = value;
1552
- if (modifiedKey === 'datavalue' && this.containerWidget.formControl)
1553
- this.containerWidget.updateDataValue(value);
1554
- }
1555
- }
1556
- this[baseWidget].initDatasetItems();
1557
- this.containerWidget[baseWidget] = this[baseWidget];
1558
- }
1559
- });
1560
- }
1561
- registerBaseWidget() {
1562
- this.initializeComponentData(this.containerWidget.nativeElement.children);
1563
- }
1564
- registerEvents() {
1565
- this.events = {};
1566
- this.containerWidget.eventHandlers.forEach((callback, key) => {
1567
- this.events[key] = (...args) => {
1568
- this.containerWidget.invokeEventCallback(key, { $event: args[0], $data: args[1] });
1569
- };
1570
- });
1571
- }
1572
- registerDestroyListener(fn) {
1573
- this.destroy$.subscribe(noop$1, noop$1, () => fn());
1574
- }
1575
- registerChangeListeners() {
1576
- this.containerWidget.registerPropertyChangeListener(this.onPropertyChange);
1577
- this.containerWidget.registerStyleChangeListener(this.onPropertyChange);
1578
- }
1579
- get datavalue() {
1580
- if (this['getDatavalue'])
1581
- return this['getDatavalue']();
1582
- }
1583
- set datavalue(value) {
1584
- this.datavalue = value;
1585
- }
1586
- initUserScript() {
1587
- try {
1588
- // partials inside prefab should have access to Prefab properties and events
1589
- if (this.viewParent.prefabName) {
1590
- // for partial within partial within prefabs, just assign the parent partial's prefab object
1591
- if (this.viewParent.Prefab) {
1592
- this.Prefab = this.viewParent.Prefab;
1593
- }
1594
- else {
1595
- this.Prefab = this.viewParent;
1596
- }
1597
- }
1598
- this.evalUserScript(this, this.App, this.injector ? this.injector.get(UtilsService) : inject(UtilsService));
1599
- }
1600
- catch (e) {
1601
- console.error(`Error in evaluating partial (${this.customWidgetName}) script\n`, e);
1602
- }
1603
- }
1604
- initVariables() {
1605
- const variablesService = this.injector ? this.injector.get(VariablesService) : inject(VariablesService);
1606
- // get variables and actions instances for the page
1607
- const variableCollection = variablesService.register(this.customWidgetName, this.getVariables(), this);
1608
- // create namespace for Variables nad Actions on page/partial, which inherits the Variables and Actions from App instance
1609
- this.Variables = Object.create(this.App.Variables);
1610
- this.Actions = Object.create(this.App.Actions);
1611
- this.containerWidget.Variables = this.Variables;
1612
- this.containerWidget.Actions = this.Actions;
1613
- // assign all the page variables to the pageInstance
1614
- Object.entries(variableCollection.Variables).forEach(([name, variable]) => this.Variables[name] = variable);
1615
- Object.entries(variableCollection.Actions).forEach(([name, action]) => this.Actions[name] = action);
1616
- this.viewInit$.subscribe(noop$1, noop$1, () => {
1617
- // TEMP: triggering watchers so variables watching over params are updated
1618
- $invokeWatchers(true, true);
1619
- variableCollection.callback(variableCollection.Variables).catch(noop$1);
1620
- variableCollection.callback(variableCollection.Actions);
1621
- });
1622
- }
1623
- /**
1624
- * function to register bind expressions generated in this partial instance
1625
- * getExpressions function is defined in the generated page.comp.ts file
1626
- * @param expressions, map of bind expression vs generated function
1627
- */
1628
- registerExpressions() {
1629
- // const expressions = this.getExpressions();
1630
- // _.each(expressions, (fn, expr)=>{
1631
- // registerFnByExpr(expr, fn[0], fn[1]);
1632
- // });
1633
- }
1634
- registerProps() {
1635
- this.props = this.containerWidget.props;
1636
- }
1637
- defineI18nProps() {
1638
- this.appLocale = this.i18nService.getAppLocale();
1639
- }
1640
- invokeOnReady() {
1641
- let params;
1642
- if (this.containerWidget.userComponentParams) {
1643
- params = this.containerWidget.userComponentParams;
1644
- }
1645
- this.onReady(params);
1646
- if (this.viewParent.resolveFragment) {
1647
- this.viewParent.resolveFragment();
1648
- }
1649
- }
1650
- loadScripts() {
1651
- // return new Promise<void>((resolve) => {
1652
- // const scriptsRequired = this.partialDirective.$element.attr('scripts-to-load');
1653
- // if (scriptsRequired) {
1654
- // this.scriptLoaderService
1655
- // .load(...scriptsRequired.split(','))
1656
- // .then(resolve);
1657
- // } else {
1658
- // resolve();
1659
- // }
1660
- // });
1661
- }
1662
- registerPropsInContainerWidget(resolveFn) {
1663
- this.customwidgetConfigProvider.getConfig(this.customWidgetName).then((config) => {
1664
- if (config) {
1665
- Object.entries((config.properties || {})).forEach(([key, prop]) => {
1666
- let expr;
1667
- const value = _.trim(prop.value);
1668
- if (_.startsWith(value, 'bind:')) {
1669
- expr = value.replace('bind:', '');
1670
- }
1671
- Object.defineProperty(this, key, {
1672
- get: () => this.containerWidget[key],
1673
- set: nv => this.containerWidget.widget[key] = nv
1674
- });
1675
- if (expr) {
1676
- //[Todo-CSP]: expr will be generated with prefab.comp.expr.ts
1677
- this.registerDestroyListener($watch(expr, this, {}, nv => this.containerWidget.widget[key] = nv));
1678
- }
1679
- });
1680
- }
1681
- this.containerWidget.setProps(config, resolveFn);
1682
- // Reassigning the proxy handler for prefab inbound properties as we
1683
- // will get them only after the prefab config call.
1684
- if (isIE()) {
1685
- this.containerWidget.widget = this.containerWidget.createProxy();
1686
- }
1687
- });
1688
- }
1689
- mute() {
1690
- const m = o => { o && o.mute && o.mute(); };
1691
- _.each(this.Widgets, m);
1692
- _.each(this.Variables, m);
1693
- _.each(this.Actions, m);
1694
- }
1695
- unmute() {
1696
- const um = o => { o && o.unmute && o.unmute(); };
1697
- _.each(this.Widgets, um);
1698
- _.each(this.Variables, um);
1699
- _.each(this.Actions, um);
1700
- }
1701
- // ngOnInit() {
1702
- // this.init();
1703
- // }
1704
- ngAfterViewInit() {
1705
- this.registerChangeListeners();
1706
- this.registerBaseWidget();
1707
- setTimeout(() => {
1708
- this.viewInit$.complete();
1709
- this.fragmentsLoaded$.subscribe(noop$1, noop$1, () => this.invokeOnReady());
1710
- }, 100);
1711
- }
1712
- ngOnDestroy() {
1713
- this.destroy$.complete();
1714
- }
1715
- ngOnAttach(refreshData) {
1716
- this.unmute();
1717
- if (refreshData) {
1718
- const refresh = v => { v && v.startUpdate && v.invoke && v.invoke(); };
1719
- _.each(this.Variables, refresh);
1720
- _.each(this.Actions, refresh);
1721
- }
1722
- _.each(this.Widgets, w => w && w.ngOnAttach && w.ngOnAttach());
1723
- }
1724
- ngOnDetach() {
1725
- this.mute();
1726
- _.each(this.Widgets, w => w && w.ngOnDetach && w.ngOnDetach());
1727
- }
1728
- // user overrides this
1729
- onPropertyChange() { }
1730
- onReady(params) {
1731
- }
1732
- static { this.ɵfac = /*@__PURE__*/ (() => { let ɵBaseCustomWidgetComponent_BaseFactory; return function BaseCustomWidgetComponent_Factory(t) { return (ɵBaseCustomWidgetComponent_BaseFactory || (ɵBaseCustomWidgetComponent_BaseFactory = i0.ɵɵgetInheritedFactory(BaseCustomWidgetComponent)))(t || BaseCustomWidgetComponent); }; })(); }
1733
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseCustomWidgetComponent, features: [i0.ɵɵInheritDefinitionFeature] }); }
1734
- }
1735
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseCustomWidgetComponent, [{
1736
- type: Directive
1737
- }], null, null); })();
1738
-
1739
1444
  class BasePrefabComponent extends FragmentMonitor {
1740
1445
  constructor() {
1741
1446
  super(...arguments);
@@ -5040,7 +4745,6 @@ const REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS = [
5040
4745
  CarouselModule$1,
5041
4746
  LoginModule,
5042
4747
  MarqueeModule,
5043
- CustomModule,
5044
4748
  PageModule,
5045
4749
  FooterModule,
5046
4750
  HeaderModule,
@@ -5235,7 +4939,6 @@ class RuntimeBaseModule {
5235
4939
  CarouselModule$1,
5236
4940
  LoginModule,
5237
4941
  MarqueeModule,
5238
- CustomModule,
5239
4942
  PageModule,
5240
4943
  FooterModule,
5241
4944
  HeaderModule,
@@ -5366,7 +5069,6 @@ class RuntimeBaseModule {
5366
5069
  CarouselModule$1,
5367
5070
  LoginModule,
5368
5071
  MarqueeModule,
5369
- CustomModule,
5370
5072
  PageModule,
5371
5073
  FooterModule,
5372
5074
  HeaderModule,
@@ -5451,7 +5153,6 @@ class RuntimeBaseModule {
5451
5153
  CarouselModule$1,
5452
5154
  LoginModule,
5453
5155
  MarqueeModule,
5454
- CustomModule,
5455
5156
  PageModule,
5456
5157
  FooterModule,
5457
5158
  HeaderModule,
@@ -5540,5 +5241,5 @@ class SecurityConfigResolve {
5540
5241
  * Generated bundle index. Do not edit.
5541
5242
  */
5542
5243
 
5543
- export { AccessrolesDirective, AppComponent, AppDefaultsService, AppExtensionJSResolve, AppExtensionProvider, AppJSProvider, AppJSResolve, AppManagerService, AppRef, AppSpinnerComponent, AppVariablesProvider, AppVariablesResolve, AuthGuard, BaseCustomWidgetComponent, BaseLayoutComponent, BasePageComponent, BasePartialComponent, BasePrefabComponent, BaseSpaPageComponent, CACHE_PAGE, CanDeactivateNgPageGuard, CanDeactivatePageGuard, ComponentRefProvider, ComponentType, CustomToasterComponent, CustomwidgetConfigProvider, DynamicComponentRefProviderService, EmptyPageComponent, FragmentMonitor, HttpCallInterceptor, I18nResolve, I18nServiceImpl, InitializeApp, MAX_CACHE_AGE, MAX_CACHE_SIZE, MetadataResolve, NavigationServiceImpl, PageNotFoundGuard, PipeProvider, PipeService, PrefabConfigProvider, PrefabDirective, PrefabManagerService, PrefabPreviewComponent, REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS, RoleGuard, RuntimeBaseModule, SecurityConfigResolve, SpinnerServiceImpl, ToasterServiceImpl, WM_MODULES_FOR_ROOT, WmDefaultRouteReuseStrategy, WmNgRouteReuseStrategy, WmRouteReuseStrategy, commonPartialWidgets, getPrefabBaseUrl, getPrefabConfigUrl, getPrefabMinJsonUrl, getPrefabPartialJsonUrl, isPrefabInPreview, setAngularLocale };
5244
+ export { AccessrolesDirective, AppComponent, AppDefaultsService, AppExtensionJSResolve, AppExtensionProvider, AppJSProvider, AppJSResolve, AppManagerService, AppRef, AppSpinnerComponent, AppVariablesProvider, AppVariablesResolve, AuthGuard, BaseLayoutComponent, BasePageComponent, BasePartialComponent, BasePrefabComponent, BaseSpaPageComponent, CACHE_PAGE, CanDeactivateNgPageGuard, CanDeactivatePageGuard, ComponentRefProvider, ComponentType, CustomToasterComponent, DynamicComponentRefProviderService, EmptyPageComponent, FragmentMonitor, HttpCallInterceptor, I18nResolve, I18nServiceImpl, InitializeApp, MAX_CACHE_AGE, MAX_CACHE_SIZE, MetadataResolve, NavigationServiceImpl, PageNotFoundGuard, PipeProvider, PipeService, PrefabConfigProvider, PrefabDirective, PrefabManagerService, PrefabPreviewComponent, REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS, RoleGuard, RuntimeBaseModule, SecurityConfigResolve, SpinnerServiceImpl, ToasterServiceImpl, WM_MODULES_FOR_ROOT, WmDefaultRouteReuseStrategy, WmNgRouteReuseStrategy, WmRouteReuseStrategy, commonPartialWidgets, getPrefabBaseUrl, getPrefabConfigUrl, getPrefabMinJsonUrl, getPrefabPartialJsonUrl, isPrefabInPreview, setAngularLocale };
5544
5245
  //# sourceMappingURL=index.mjs.map