@mediusinc/mng-commons 4.0.0-rc.1 → 4.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/esm2022/index.mjs +12 -2
  2. package/esm2022/lib/api/utils/medius-rest.util.mjs +15 -7
  3. package/esm2022/lib/api/utils/object-serializer.util.mjs +8 -4
  4. package/esm2022/lib/components/action/action.component.mjs +16 -45
  5. package/esm2022/lib/components/action/editor/action-editor.component.mjs +60 -434
  6. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +394 -0
  7. package/esm2022/lib/components/action/index.mjs +2 -1
  8. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +6 -7
  9. package/esm2022/lib/components/action/models/action-component.model.mjs +1 -1
  10. package/esm2022/lib/components/action/models/action-execution.model.mjs +3 -6
  11. package/esm2022/lib/components/action/models/index.mjs +1 -2
  12. package/esm2022/lib/components/action/route/action-route.component.mjs +14 -30
  13. package/esm2022/lib/components/action/table/action-table.component.mjs +154 -0
  14. package/esm2022/lib/components/form/editor/form-editor.component.mjs +5 -11
  15. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +1 -1
  16. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +5 -5
  17. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +6 -7
  18. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +5 -5
  19. package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +1 -1
  20. package/esm2022/lib/components/layout/main-layout.component.mjs +21 -25
  21. package/esm2022/lib/components/layout/topbar.component.mjs +8 -8
  22. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +13 -10
  23. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +48 -5
  24. package/esm2022/lib/components/layoutV2/menu.component.mjs +13 -4
  25. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +11 -2
  26. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +5 -5
  27. package/esm2022/lib/components/layoutV2/topbar.component.mjs +7 -12
  28. package/esm2022/lib/components/notification/notification-wrapper.component.mjs +50 -0
  29. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +466 -0
  30. package/esm2022/lib/components/table/column-value/column-value.component.mjs +87 -0
  31. package/esm2022/lib/components/table/models/table.event.mjs +16 -0
  32. package/esm2022/lib/components/table/models/table.interface.mjs +2 -0
  33. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +25 -0
  34. package/esm2022/lib/components/table/table.component.mjs +717 -0
  35. package/esm2022/lib/components/tableview/index.mjs +1 -4
  36. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
  37. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +3 -9
  38. package/esm2022/lib/components/tableview/tableview.component.mjs +18 -78
  39. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +1 -1
  40. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +1 -2
  41. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +20 -20
  42. package/esm2022/lib/descriptors/table/table.descriptor.mjs +16 -17
  43. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +1 -1
  44. package/esm2022/lib/directives/component.directive.mjs +8 -4
  45. package/esm2022/lib/helpers/coercion.mjs +8 -1
  46. package/esm2022/lib/models/action-editor.model.mjs +1 -1
  47. package/esm2022/lib/models/config.model.mjs +1 -1
  48. package/esm2022/lib/models/index.mjs +2 -2
  49. package/esm2022/lib/models/layout-config.model.mjs +2 -0
  50. package/esm2022/lib/models/view-container.model.mjs +1 -1
  51. package/esm2022/lib/provide-commons.mjs +7 -1
  52. package/esm2022/lib/registry/type.registry.mjs +2 -3
  53. package/esm2022/lib/router/route-builder.mjs +1 -1
  54. package/esm2022/lib/services/action/action-executor.service.mjs +725 -0
  55. package/esm2022/lib/services/action/component-action-executor.service.mjs +19 -0
  56. package/esm2022/lib/services/action/index.mjs +5 -0
  57. package/esm2022/lib/services/action/provide-action-executor.mjs +9 -0
  58. package/esm2022/lib/services/action/root-action-executor.service.mjs +18 -0
  59. package/esm2022/lib/services/commons.service.mjs +5 -5
  60. package/esm2022/lib/services/index.mjs +1 -3
  61. package/esm2022/lib/services/logger.service.mjs +2 -2
  62. package/esm2022/lib/services/view/index.mjs +3 -0
  63. package/esm2022/lib/services/view/provide-view-container.mjs +17 -0
  64. package/esm2022/lib/services/view/view-container.service.mjs +59 -0
  65. package/esm2022/lib/utils/date.util.mjs +33 -23
  66. package/esm2022/lib/utils/notification.util.mjs +9 -16
  67. package/esm2022/lib/utils/string.util.mjs +2 -2
  68. package/esm2022/lib/utils/tableview.util.mjs +2 -2
  69. package/fesm2022/mediusinc-mng-commons.mjs +4305 -4121
  70. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  71. package/index.d.ts +10 -1
  72. package/lib/components/action/action.component.d.ts +11 -17
  73. package/lib/components/action/editor/action-editor.component.d.ts +20 -80
  74. package/lib/components/action/editor/injector-context/action-editor-injector-context.component.d.ts +80 -0
  75. package/lib/components/action/index.d.ts +1 -0
  76. package/lib/components/action/localization/data-language-dropdown.component.d.ts +2 -3
  77. package/lib/components/action/models/action-component.model.d.ts +0 -2
  78. package/lib/components/action/models/action-execution.model.d.ts +6 -6
  79. package/lib/components/action/models/index.d.ts +0 -1
  80. package/lib/components/action/route/action-route.component.d.ts +6 -12
  81. package/lib/components/action/table/action-table.component.d.ts +50 -0
  82. package/lib/components/form/editor/form-editor.component.d.ts +4 -7
  83. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +2 -4
  84. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -2
  85. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +1 -3
  86. package/lib/components/layout/main-layout.component.d.ts +4 -7
  87. package/lib/components/layoutV2/main-layout.component.d.ts +4 -3
  88. package/lib/components/layoutV2/menu-item.component.d.ts +7 -3
  89. package/lib/components/layoutV2/menu.component.d.ts +2 -0
  90. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +3 -0
  91. package/lib/components/layoutV2/sidebar.component.d.ts +1 -1
  92. package/lib/components/layoutV2/topbar.component.d.ts +2 -3
  93. package/lib/components/notification/notification-wrapper.component.d.ts +12 -0
  94. package/lib/components/{tableview/table → table}/column-filter-full/column-filter-full.component.d.ts +2 -2
  95. package/lib/components/{tableview/table → table}/column-value/column-value.component.d.ts +3 -3
  96. package/lib/components/{tableview/table → table}/models/table.interface.d.ts +3 -1
  97. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +8 -0
  98. package/lib/components/table/table.component.d.ts +122 -0
  99. package/lib/components/tableview/index.d.ts +0 -3
  100. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +2 -3
  101. package/lib/components/tableview/route/tableview-route.component.d.ts +0 -3
  102. package/lib/components/tableview/tableview.component.d.ts +4 -20
  103. package/lib/descriptors/editor/editor.descriptor.d.ts +1 -1
  104. package/lib/descriptors/filter/filter.descriptor.d.ts +7 -7
  105. package/lib/descriptors/table/table.descriptor.d.ts +15 -12
  106. package/lib/descriptors/tableview/tableview.descriptor.d.ts +1 -1
  107. package/lib/directives/component.directive.d.ts +3 -2
  108. package/lib/models/action-editor.model.d.ts +11 -0
  109. package/lib/models/config.model.d.ts +3 -13
  110. package/lib/models/index.d.ts +1 -1
  111. package/lib/models/layout-config.model.d.ts +33 -0
  112. package/lib/models/view-container.model.d.ts +0 -25
  113. package/lib/router/route-builder.d.ts +1 -1
  114. package/lib/services/{action-executor.service.d.ts → action/action-executor.service.d.ts} +32 -31
  115. package/lib/services/action/component-action-executor.service.d.ts +9 -0
  116. package/lib/services/action/index.d.ts +4 -0
  117. package/lib/services/action/provide-action-executor.d.ts +2 -0
  118. package/lib/services/action/root-action-executor.service.d.ts +9 -0
  119. package/lib/services/index.d.ts +0 -2
  120. package/lib/services/view/index.d.ts +2 -0
  121. package/lib/services/view/provide-view-container.d.ts +2 -0
  122. package/lib/services/view/view-container.service.d.ts +32 -0
  123. package/lib/utils/date.util.d.ts +12 -2
  124. package/lib/utils/notification.util.d.ts +6 -6
  125. package/openapi/angular/README.mustache +226 -0
  126. package/openapi/angular/api.module.mustache +39 -0
  127. package/openapi/angular/api.service.mustache +253 -0
  128. package/openapi/angular/apiInterface.mustache +47 -0
  129. package/openapi/angular/apis.mustache +12 -0
  130. package/openapi/angular/configuration.mustache +128 -0
  131. package/openapi/angular/custom/base-api.service.mustache +14 -0
  132. package/openapi/angular/custom/helpers.mustache +71 -0
  133. package/openapi/angular/custom/modelSchema.mustache +46 -0
  134. package/openapi/angular/custom/schema.mustache +18 -0
  135. package/openapi/angular/encoder.mustache +20 -0
  136. package/openapi/angular/git_push.sh.mustache +57 -0
  137. package/openapi/angular/index.mustache +0 -0
  138. package/openapi/angular/licenseInfo.mustache +11 -0
  139. package/openapi/angular/model.mustache +16 -0
  140. package/openapi/angular/modelAlias.mustache +1 -0
  141. package/openapi/angular/modelEnum.mustache +24 -0
  142. package/openapi/angular/modelGeneric.mustache +14 -0
  143. package/openapi/angular/modelGenericAdditionalProperties.mustache +5 -0
  144. package/openapi/angular/modelGenericEnums.mustache +30 -0
  145. package/openapi/angular/modelOneOf.mustache +14 -0
  146. package/openapi/angular/modelTaggedUnion.mustache +21 -0
  147. package/openapi/angular/models.mustache +5 -0
  148. package/openapi/angular/ng-package.mustache +6 -0
  149. package/openapi/angular/package.mustache +39 -0
  150. package/openapi/angular/param.mustache +69 -0
  151. package/openapi/angular/tsconfig.mustache +28 -0
  152. package/openapi/angular/variables.mustache +9 -0
  153. package/openapi/{templates → node}/model.mustache +3 -17
  154. package/package.json +2 -2
  155. package/scss/mng-commons-dark-v2.scss +1 -1
  156. package/scss/mng-commons-light-v2.scss +1 -1
  157. package/scss/mng-overrides/_theme_datatable.scss +24 -10
  158. package/scss/v2/layout/layout.scss +2 -2
  159. package/scss/v2/layout/mng/_mng_layout_topbar.scss +2 -0
  160. package/scss/v2/layout/preloading.scss +8 -8
  161. package/scss/v2/theme/theme-base/mng/_mng_theme_datatable.scss +24 -9
  162. package/scss/v2/theme/theme-dark/_variables.scss +24 -12
  163. package/scss/v2/theme/theme-dark/blue/theme.scss +4 -4
  164. package/scss/v2/theme/theme-light/_variables.scss +23 -11
  165. package/scss/v2/theme/theme-light/blue/theme.scss +2 -2
  166. package/esm2022/lib/components/action/models/action-confirmation-service.model.mjs +0 -2
  167. package/esm2022/lib/components/tableview/models/index.mjs +0 -2
  168. package/esm2022/lib/components/tableview/models/table.event.mjs +0 -16
  169. package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +0 -467
  170. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +0 -87
  171. package/esm2022/lib/components/tableview/table/models/index.mjs +0 -2
  172. package/esm2022/lib/components/tableview/table/models/table.interface.mjs +0 -2
  173. package/esm2022/lib/components/tableview/table/table.component.mjs +0 -752
  174. package/esm2022/lib/models/menu-config.model.mjs +0 -2
  175. package/esm2022/lib/services/action-executor.service.mjs +0 -747
  176. package/esm2022/lib/services/view-container.component.service.mjs +0 -65
  177. package/lib/components/action/models/action-confirmation-service.model.d.ts +0 -6
  178. package/lib/components/tableview/models/index.d.ts +0 -1
  179. package/lib/components/tableview/table/models/index.d.ts +0 -1
  180. package/lib/components/tableview/table/table.component.d.ts +0 -147
  181. package/lib/models/menu-config.model.d.ts +0 -15
  182. package/lib/services/view-container.component.service.d.ts +0 -36
  183. /package/lib/components/{tableview → table}/models/table.event.d.ts +0 -0
  184. /package/openapi/{templates → node}/models.mustache +0 -0
@@ -1,7 +1,4 @@
1
1
  export * from './tableview.component';
2
2
  export * from './route/tableview-route.abstract.component';
3
3
  export * from './route/tableview-route.component';
4
- export * from './table/table.component';
5
- export * from './table/column-filter-full/column-filter-full.component';
6
- export * from './table/column-value/column-value.component';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUvdGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlL3RhYmxldmlldy1yb3V0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS9jb2x1bW4tZmlsdGVyLWZ1bGwvY29sdW1uLWZpbHRlci1mdWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50JztcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUvdGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlL3RhYmxldmlldy1yb3V0ZS5jb21wb25lbnQnO1xuIl19
@@ -77,8 +77,8 @@ export class AMngTableviewRouteComponent {
77
77
  .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
78
78
  .withPosition(ActionPositionEnum.FooterLeft)
79
79
  .withRunFunction(ctx => ActionDataProviderUtil.runDeleteOrFail(ctx).pipe(tap(() => {
80
- ctx.parameters.viewContainer?.reloadTable?.({});
81
- ctx.parameters.viewContainer?.closeEditor?.();
80
+ ctx.viewContainer?.reloadTable({});
81
+ ctx.viewContainer?.closeEditor();
82
82
  })));
83
83
  action.button.withLabel(undefined);
84
84
  action.button.styleClass.withSize(StyleSizeEnum.Normal);
@@ -135,7 +135,7 @@ export class AMngTableviewRouteComponent {
135
135
  .withTableviewCategory(TableviewActionDefaultCategories.READ)
136
136
  .withRunNotificationSuccess(undefined, undefined, false)
137
137
  .withRunFunction(ctx => {
138
- ctx.parameters.viewContainer?.reloadTable?.({});
138
+ ctx.viewContainer?.reloadTable({});
139
139
  return of(null);
140
140
  });
141
141
  action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);
@@ -154,5 +154,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
154
154
  args: [{
155
155
  standalone: true
156
156
  }]
157
- }], ctorParameters: () => [] });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUVoQix5QkFBeUIsRUFFekIsNkJBQTZCLEVBRTdCLDBCQUEwQixFQUMxQiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBRXZCLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFB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Q0FBQyxDQUFDO1FBQzdGLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxzQ0FBc0MsQ0FBQyxhQUFpQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7UUFDbkcsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtZQUNoQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDO1lBQ25KLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDOzhHQTlLaUIsMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSGhELFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIE9uSW5pdCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge29mLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge0lUYWJsZXZpZXdEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7XG4gICAgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcixcbiAgICBBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25EZXNjcmlwdG9yLFxuICAgIEFjdGlvbkRlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IsXG4gICAgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3IsXG4gICAgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25MaW5rRGVzY3JpcHRvcixcbiAgICBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Rcbn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvYWN0aW9uJztcbmltcG9ydCB7RWRpdG9yRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyRWRpdG9yLCBJVmlld0NvbnRhaW5lclRhYmxlfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi8uLi8uLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7QnV0dG9uU3R5bGVSb3VuZGVkRW51bX0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzJztcbmltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLCBFeHBvcnRVdGlscywgRmlsZVV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnR9IGZyb20gJy4uLy4uL2FjdGlvbic7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi8uLi9hY3Rpb24vbW9kZWxzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8VCA9IGFueSwgUyA9IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyBkZXNjcmlwdG9yITogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8VD47XG4gICAgcHVibGljIGRhdGFQcm92aWRlciE6IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgcHVibGljIGFjdGlvbnMhOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PjsgLy8gYW55IGJlY2F1c2Ugd2UgYWxsb3cgYWxtb3N0IGFueXRoaW5nIGhlcmVcblxuICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHJvdXRlRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGUuc25hcHNob3QuZGF0YSBhcyBNbmdSb3V0ZXJEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5jcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCk7XG4gICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyID0gdGhpcy5jcmVhdGVUYWJsZXZpZXdEYXRhUHJvdmlkZXIoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZVRhYmxldmlld0RhdGFQcm92aWRlcigpOiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+O1xuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JzKCk6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+IHtcbiAgICAgICAgY29uc3QgZWRpdERlc2NyaXB0b3IgPSB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JFZGl0KCk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZXRhaWxzKCksXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JBZGQoKSxcbiAgICAgICAgICAgIGVkaXREZXNjcmlwdG9yLFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGVsZXRlKCksXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JSZWZyZXNoKCksXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JFeHBvcnQoKSxcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRhdGFUcmFuc2xhdGUoKSxcblxuICAgICAgICAgICAgLy9kZXRhaWxzIGFjdGlvbnNcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRldGFpbHNFZGl0TGluayh0aGlzLmRlc2NyaXB0b3IubW9kZWwsIGVkaXREZXNjcmlwdG9yKSxcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRldGFpbHNEZWxldGUoKVxuICAgICAgICBdLmZpbHRlcihlID0+IGUgIT0gbnVsbCkgYXMgQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZXRhaWxzKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFQ+ID0gdGhpcy5kZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IpOiBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3Q8VD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzRGV0YWlscyA/IEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLmNyZWF0ZShkZXNjcmlwdG9yKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JBZGQoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VD4gPSB0aGlzLmRlc2NyaXB0b3IuYWRkRWRpdG9yKTogQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvckluc3Q8VD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMuaGFzQWRkID8gQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRWRpdChkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUPiA9IHRoaXMuZGVzY3JpcHRvci5lZGl0RWRpdG9yKTogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQgPyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGV0YWlsc0VkaXRMaW5rKFxuICAgICAgICBkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8VD4gPSB0aGlzLmRlc2NyaXB0b3IubW9kZWwsXG4gICAgICAgIGVkaXREZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8VD4gfCBudWxsXG4gICAgKTogQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGVkaXREZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgPyBBY3Rpb25MaW5rRGVzY3JpcHRvci5mcm9tQWN0aW9uKGVkaXREZXNjcmlwdG9yKVxuICAgICAgICAgICAgICAgIDogQWN0aW9uTGlua0Rlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSk7XG5cbiAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuRURJVClcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgICAgICAud2l0aFJvdXRlckxpbmsoJy4vZWRpdCcpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbChTdHlsZUxldmVsRW51bS5TZWNvbmRhcnkpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICAgICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoUm91bmRlZEJ1dHRvbihCdXR0b25TdHlsZVJvdW5kZWRFbnVtLkRFRkFVTFQpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwoKTtcbiAgICAgICAgICAgIGlmICghZWRpdERlc2NyaXB0b3IpIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuXG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZXRhaWxzRGVsZXRlKCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRlbGV0ZSgpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgICAgICBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkRlbGV0ZU9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgucGFyYW1ldGVycy52aWV3Q29udGFpbmVyIGFzIElWaWV3Q29udGFpbmVyVGFibGU8dW5rbm93biwgdW5rbm93bj4pPy5yZWxvYWRUYWJsZT8uKHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4LnBhcmFtZXRlcnMudmlld0NvbnRhaW5lciBhcyBJVmlld0NvbnRhaW5lckVkaXRvcjx1bmtub3duLCB1bmtub3duPik/LmNsb3NlRWRpdG9yPy4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRlbGV0ZShkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8VD4gPSB0aGlzLmRlc2NyaXB0b3IubW9kZWwpOiBBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdDxUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgfHwgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0KGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGV4cG9ydEFjdGlvbiA9IEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IsICdleHBvcnQnKS53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1kb3dubG9hZCcpKS53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuICAgICAgICBleHBvcnRBY3Rpb24ud2l0aFN1YmFjdGlvbnModGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0SnNvbihkZXNjcmlwdG9yKSwgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0Q3N2KGRlc2NyaXB0b3IpKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEFjdGlvbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckV4cG9ydEpzb24oZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPFQ+ID0gdGhpcy5kZXNjcmlwdG9yLm1vZGVsKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8VD4ge1xuICAgICAgICByZXR1cm4gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvciwgJ2V4cG9ydEpzb24nKVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1CdWlsZGVyID0gY3R4LnBhcmFtZXRlcnMucXVlcnlQYXJhbSA/IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZUZyb21FeGlzdGluZyhjdHgucGFyYW1ldGVycy5xdWVyeVBhcmFtKSA6IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhJdGVtc09mZnNldCgwKS53aXRoSXRlbXNQZXJQYWdlKDUwMCk7XG4gICAgICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMud2l0aFF1ZXJ5UGFyYW0ocXVlcnlQYXJhbUJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcy5wYWdlRGF0YSwgdW5kZWZpbmVkLCA0KV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04J30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVVdGlsLnNhdmVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktY29kZScpKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckV4cG9ydENzdihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8VD4gPSB0aGlzLmRlc2NyaXB0b3IubW9kZWwpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPiB7XG4gICAgICAgIHJldHVybiBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCAnZXhwb3J0Q3N2JylcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtQnVpbGRlciA9IGN0eC5wYXJhbWV0ZXJzLnF1ZXJ5UGFyYW0gPyBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGVGcm9tRXhpc3RpbmcoY3R4LnBhcmFtZXRlcnMucXVlcnlQYXJhbSkgOiBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtQnVpbGRlci53aXRoSXRlbXNPZmZzZXQoMCkud2l0aEl0ZW1zUGVyUGFnZSg1MDApO1xuICAgICAgICAgICAgICAgIGN0eC5wYXJhbWV0ZXJzLndpdGhRdWVyeVBhcmFtKHF1ZXJ5UGFyYW1CdWlsZGVyLmJ1aWxkKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkdldEFsbE9yRmFpbChjdHgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMucGFnZURhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtFeHBvcnRVdGlscy5wcmVwYXJlRGF0YUZvckV4cG9ydChyZXMucGFnZURhdGEsICcsJywgdGhpcy5kZXNjcmlwdG9yLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UpXSwge3R5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04J30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVVdGlsLnNhdmVBcyhibG9iLCBgJHt0eXBlTmFtZSA/IHR5cGVOYW1lICsgJ18nIDogJyd9JHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWV9LmNzdmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1maWxlJykpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yUmVmcmVzaChkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8VD4gPSB0aGlzLmRlc2NyaXB0b3IubW9kZWwpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPiB8IG51bGwge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCAncmVmcmVzaCcpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQUQpXG4gICAgICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIChjdHgucGFyYW1ldGVycy52aWV3Q29udGFpbmVyIGFzIElWaWV3Q29udGFpbmVyVGFibGUpPy5yZWxvYWRUYWJsZT8uKHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi53aXRoSWNvbigncGkgcGktcmVmcmVzaCcpLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEYXRhVHJhbnNsYXRlKGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQoKVxuICAgICAgICAgICAgPyBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCAndHJhbnNsYXRvcicpLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpLndpdGhDb21wb25lbnQoTW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxufVxuIl19
157
+ }] });
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUVoQix5QkFBeUIsRUFFekIsNkJBQTZCLEVBRTdCLDBCQUEwQixFQUMxQiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBRXZCLE1BQU0sNkJBQTZCLENBQUM7QUFJckMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFB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Q0FBQyxVQUFVLENBQUMsS0FBSztRQUNuRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQ2hDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUM7WUFDbkosQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLENBQUM7OEdBektpQiwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFIaEQsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgT25Jbml0LCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SVRhYmxldmlld0RhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtcbiAgICBBY3Rpb25CdXR0b25EZXNjcmlwdG9yLFxuICAgIEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkRlc2NyaXB0b3IsXG4gICAgQWN0aW9uRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3IsXG4gICAgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkxpbmtEZXNjcmlwdG9yLFxuICAgIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdFxufSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvZWRpdG9yJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcnO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nUm91dGVyRGF0YX0gZnJvbSAnLi4vLi4vLi4vcm91dGVyL21vZGVscyc7XG5pbXBvcnQge0J1dHRvblN0eWxlUm91bmRlZEVudW19IGZyb20gJy4uLy4uLy4uL3N0eWxlcyc7XG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvbW9kZWxzJztcbmltcG9ydCB7QWN0aW9uRGF0YVByb3ZpZGVyVXRpbCwgRXhwb3J0VXRpbHMsIEZpbGVVdGlsfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQge01uZ0RhdGFMYW5ndWFnZURyb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi8uLi9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vLi4vYWN0aW9uL21vZGVscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50PFQgPSBhbnksIFMgPSB1bmRlZmluZWQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUPjtcbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyITogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPjtcbiAgICBwdWJsaWMgYWN0aW9ucyE6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+OyAvLyBhbnkgYmVjYXVzZSB3ZSBhbGxvdyBhbG1vc3QgYW55dGhpbmcgaGVyZVxuXG4gICAgcHJvdGVjdGVkIGdldCByb3V0ZURhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEgYXMgTW5nUm91dGVyRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHRoaXMuY3JlYXRlVGFibGV2aWV3RGVzY3JpcHRvcigpO1xuICAgICAgICB0aGlzLmRhdGFQcm92aWRlciA9IHRoaXMuY3JlYXRlVGFibGV2aWV3RGF0YVByb3ZpZGVyKCk7XG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlVGFibGV2aWV3RGVzY3JpcHRvcigpOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxUPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVUYWJsZXZpZXdEYXRhUHJvdmlkZXIoKTogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPjtcblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiB7XG4gICAgICAgIGNvbnN0IGVkaXREZXNjcmlwdG9yID0gdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRWRpdCgpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGV0YWlscygpLFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yQWRkKCksXG4gICAgICAgICAgICBlZGl0RGVzY3JpcHRvcixcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRlbGV0ZSgpLFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yUmVmcmVzaCgpLFxuICAgICAgICAgICAgdGhpcy5jcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0KCksXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEYXRhVHJhbnNsYXRlKCksXG5cbiAgICAgICAgICAgIC8vZGV0YWlscyBhY3Rpb25zXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZXRhaWxzRWRpdExpbmsodGhpcy5kZXNjcmlwdG9yLm1vZGVsLCBlZGl0RGVzY3JpcHRvciksXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZXRhaWxzRGVsZXRlKClcbiAgICAgICAgXS5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGV0YWlscyhkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxUPiA9IHRoaXMuZGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RldGFpbHMgPyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yQWRkKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PFQ+ID0gdGhpcy5kZXNjcmlwdG9yLmFkZEVkaXRvcik6IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0FkZCA/IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IuY3JlYXRlKGRlc2NyaXB0b3IpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckVkaXQoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8VD4gPSB0aGlzLmRlc2NyaXB0b3IuZWRpdEVkaXRvcik6IEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9ySW5zdDxUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgfHwgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0ID8gQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3IuY3JlYXRlKGRlc2NyaXB0b3IpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQWN0aW9uRGVzY3JpcHRvckZvckRldGFpbHNFZGl0TGluayhcbiAgICAgICAgZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPFQ+ID0gdGhpcy5kZXNjcmlwdG9yLm1vZGVsLFxuICAgICAgICBlZGl0RGVzY3JpcHRvcjogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbFxuICAgICk6IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxUPiB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMucm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgfHwgdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNFZGl0KSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBlZGl0RGVzY3JpcHRvclxuICAgICAgICAgICAgICAgID8gQWN0aW9uTGlua0Rlc2NyaXB0b3IuZnJvbUFjdGlvbihlZGl0RGVzY3JpcHRvcilcbiAgICAgICAgICAgICAgICA6IEFjdGlvbkxpbmtEZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QuQUNUSU9OX05BTUUpO1xuXG4gICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAgICAgLndpdGhSb3V0ZXJMaW5rKCcuL2VkaXQnKTtcbiAgICAgICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLk5vcm1hbCk7XG4gICAgICAgICAgICBhY3Rpb24uYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFJvdW5kZWRCdXR0b24oQnV0dG9uU3R5bGVSb3VuZGVkRW51bS5ERUZBVUxUKTtcbiAgICAgICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKCk7XG4gICAgICAgICAgICBpZiAoIWVkaXREZXNjcmlwdG9yKSBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGV0YWlsc0RlbGV0ZSgpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPiB8IG51bGwge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEZWxldGUoKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQpXG4gICAgICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT5cbiAgICAgICAgICAgICAgICAgICAgQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5EZWxldGVPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5jbG9zZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRGVsZXRlKGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCB0aGlzLnJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RlbGV0ZSA/IG5ldyBBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdChkZXNjcmlwdG9yKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JFeHBvcnQoZGVzY3JpcHRvcjogTW9kZWxEZXNjcmlwdG9yPFQ+ID0gdGhpcy5kZXNjcmlwdG9yLm1vZGVsKTogQWN0aW9uRGVzY3JpcHRvckluc3Q8VD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvciwgJ2V4cG9ydCcpLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aEljb24oJ3BpIHBpLWRvd25sb2FkJykpLndpdGhTdWJhY3Rpb25zQXNNZW51KCk7XG4gICAgICAgIGV4cG9ydEFjdGlvbi53aXRoU3ViYWN0aW9ucyh0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JFeHBvcnRKc29uKGRlc2NyaXB0b3IpLCB0aGlzLmNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JFeHBvcnRDc3YoZGVzY3JpcHRvcikpO1xuICAgICAgICByZXR1cm4gZXhwb3J0QWN0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0SnNvbihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8VD4gPSB0aGlzLmRlc2NyaXB0b3IubW9kZWwpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPiB7XG4gICAgICAgIHJldHVybiBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCAnZXhwb3J0SnNvbicpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBjdHgucGFyYW1ldGVycy5xdWVyeVBhcmFtID8gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlRnJvbUV4aXN0aW5nKGN0eC5wYXJhbWV0ZXJzLnF1ZXJ5UGFyYW0pIDogTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbUJ1aWxkZXIud2l0aEl0ZW1zT2Zmc2V0KDApLndpdGhJdGVtc1BlclBhZ2UoNTAwKTtcbiAgICAgICAgICAgICAgICBjdHgucGFyYW1ldGVycy53aXRoUXVlcnlQYXJhbShxdWVyeVBhcmFtQnVpbGRlci5idWlsZCgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5HZXRBbGxPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVzLnBhZ2VEYXRhLCB1bmRlZmluZWQsIDQpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVV0aWwuc2F2ZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uanNvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1jb2RlJykpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVBY3Rpb25EZXNjcmlwdG9yRm9yRXhwb3J0Q3N2KGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHtcbiAgICAgICAgcmV0dXJuIEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IsICdleHBvcnRDc3YnKVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1CdWlsZGVyID0gY3R4LnBhcmFtZXRlcnMucXVlcnlQYXJhbSA/IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZUZyb21FeGlzdGluZyhjdHgucGFyYW1ldGVycy5xdWVyeVBhcmFtKSA6IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhJdGVtc09mZnNldCgwKS53aXRoSXRlbXNQZXJQYWdlKDUwMCk7XG4gICAgICAgICAgICAgICAgY3R4LnBhcmFtZXRlcnMud2l0aFF1ZXJ5UGFyYW0ocXVlcnlQYXJhbUJ1aWxkZXIuYnVpbGQoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcy5wYWdlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0V4cG9ydFV0aWxzLnByZXBhcmVEYXRhRm9yRXhwb3J0KHJlcy5wYWdlRGF0YSwgJywnLCB0aGlzLmRlc2NyaXB0b3IsIHRoaXMudHJhbnNsYXRlU2VydmljZSldLCB7dHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTgnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVV0aWwuc2F2ZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uY3N2YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aEljb24oJ3BpIHBpLWZpbGUnKSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JSZWZyZXNoKGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IsICdyZWZyZXNoJylcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodClcbiAgICAgICAgICAgIC53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRClcbiAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgY3R4LnZpZXdDb250YWluZXI/LnJlbG9hZFRhYmxlKHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi53aXRoSWNvbigncGkgcGktcmVmcmVzaCcpLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLlNlY29uZGFyeSk7XG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUFjdGlvbkRlc2NyaXB0b3JGb3JEYXRhVHJhbnNsYXRlKGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxUPiA9IHRoaXMuZGVzY3JpcHRvci5tb2RlbCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQoKVxuICAgICAgICAgICAgPyBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCAndHJhbnNsYXRvcicpLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpLndpdGhDb21wb25lbnQoTW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
1
+ import { Component, Input } from '@angular/core';
2
2
  import { TableviewDescriptorInst } from '../../../descriptors/tableview';
3
3
  import { MngTableviewComponent } from '../tableview.component';
4
4
  import { AMngTableviewRouteComponent } from './tableview-route.abstract.component';
@@ -28,11 +28,8 @@ export class MngTableviewRouteComponent extends AMngTableviewRouteComponent {
28
28
  }
29
29
  return this.routeData?.tableview?.actions ?? super.createActionDescriptors();
30
30
  }
31
- reloadTable() {
32
- this.tableviewComponent?.reloadTable();
33
- }
34
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableviewRouteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { descriptorInit: ["descriptor", "descriptorInit"], dataProviderInit: ["dataProvider", "dataProviderInit"], actionsInit: ["actions", "actionsInit"] }, viewQueries: [{ propertyName: "tableviewComponent", first: true, predicate: MngTableviewComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { descriptorInit: ["descriptor", "descriptorInit"], dataProviderInit: ["dataProvider", "dataProviderInit"], actionsInit: ["actions", "actionsInit"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
36
33
  }
37
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableviewRouteComponent, decorators: [{
38
35
  type: Component,
@@ -46,8 +43,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
46
43
  }], actionsInit: [{
47
44
  type: Input,
48
45
  args: ['actions']
49
- }], tableviewComponent: [{
50
- type: ViewChild,
51
- args: [MngTableviewComponent]
52
46
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy90ZW1wbGF0ZXMvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFRakYsTUFBTSxPQUFPLDBCQUE2QyxTQUFRLDJCQUFpQztJQVFyRix5QkFBeUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBVSxDQUFDLFVBQVUsQ0FBQztJQUNoRCxDQUFDO0lBRVMsMkJBQTJCO1FBQ2pDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7WUFDekMsTUFBTSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN0RDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFVLENBQUMsWUFBWSxDQUFDO0lBQ2xELENBQUM7SUFFa0IsdUJBQXVCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDM0I7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqRixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzhHQXJDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQixrU0FLeEIscUJBQXFCLHVFQ25CcEMsb01BS0EsNENETWMscUJBQXFCOzsyRkFHdEIsMEJBQTBCO2tCQU50QyxTQUFTO2lDQUNNLElBQUksWUFDTixxQkFBcUIsV0FDdEIsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFJSixjQUFjO3NCQUF6QyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ1csZ0JBQWdCO3NCQUE3QyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ0ksV0FBVztzQkFBbkMsS0FBSzt1QkFBQyxTQUFTO2dCQUdULGtCQUFrQjtzQkFEeEIsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtJVGFibGV2aWV3RGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7TW5nVGFibGV2aWV3Q29tcG9uZW50fSBmcm9tICcuLi90YWJsZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7QU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50fSBmcm9tICcuL3RhYmxldmlldy1yb3V0ZS5hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxldmlldy1yb3V0ZScsXG4gICAgaW1wb3J0czogW01uZ1RhYmxldmlld0NvbXBvbmVudF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuLi8uLi8uLi8uLi90ZW1wbGF0ZXMvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxULCBTID0gdW5kZWZpbmVkPiBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdkZXNjcmlwdG9yJykgcHVibGljIGRlc2NyaXB0b3JJbml0PzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8VD47XG4gICAgQElucHV0KCdkYXRhUHJvdmlkZXInKSBwdWJsaWMgZGF0YVByb3ZpZGVySW5pdD86IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgQElucHV0KCdhY3Rpb25zJykgcHVibGljIGFjdGlvbnNJbml0PzogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8VD4+O1xuXG4gICAgQFZpZXdDaGlsZChNbmdUYWJsZXZpZXdDb21wb25lbnQpXG4gICAgcHVibGljIHRhYmxldmlld0NvbXBvbmVudD86IE1uZ1RhYmxldmlld0NvbXBvbmVudDxULCBTPjtcblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JJbml0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlRGF0YT8udGFibGV2aWV3Py5kZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVGFibGV2aWV3IHJlcXVpcmVzIGEgZGVzY3JpcHRvci4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3IS5kZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEYXRhUHJvdmlkZXIoKTogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFQcm92aWRlckluaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RhYmxldmlldyByZXF1aXJlcyBhIGRhdGEgcHJvdmlkZXIuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhLnRhYmxldmlldyEuZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPj4ge1xuICAgICAgICBpZiAodGhpcy5hY3Rpb25zSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uc0luaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmFjdGlvbnMgPz8gc3VwZXIuY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkVGFibGUoKSB7XG4gICAgICAgIHRoaXMudGFibGV2aWV3Q29tcG9uZW50Py5yZWxvYWRUYWJsZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICA8bW5nLXRhYmxldmlldyBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yXCIgW2RhdGFQcm92aWRlcl09XCJkYXRhUHJvdmlkZXJcIiBbYWN0aW9uc109XCJhY3Rpb25zXCI+IDwvbW5nLXRhYmxldmlldz5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy90ZW1wbGF0ZXMvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBSXZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOztBQVFqRixNQUFNLE9BQU8sMEJBQTZDLFNBQVEsMkJBQWlDO0lBS3JGLHlCQUF5QjtRQUMvQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUU7WUFDdkMsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFVLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFFUywyQkFBMkI7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDaEM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRTtZQUN6QyxNQUFNLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbEQsQ0FBQztJQUVrQix1QkFBdUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQjtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pGLENBQUM7OEdBOUJRLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFRQ2R2QyxvTUFLQSw0Q0RNYyxxQkFBcUI7OzJGQUd0QiwwQkFBMEI7a0JBTnRDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLHFCQUFxQixDQUFDOzhCQUlKLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsWUFBWTtnQkFDVyxnQkFBZ0I7c0JBQTdDLEtBQUs7dUJBQUMsY0FBYztnQkFDSSxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SVRhYmxldmlld0RhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvYWN0aW9uJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldyc7XG5pbXBvcnQge01uZ1RhYmxldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vdGFibGV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQge0FNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXZpZXctcm91dGUuYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy10YWJsZXZpZXctcm91dGUnLFxuICAgIGltcG9ydHM6IFtNbmdUYWJsZXZpZXdDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi4vLi4vLi4vLi4vdGVtcGxhdGVzL3RhYmxldmlldy1yb3V0ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8VCwgUyA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgnZGVzY3JpcHRvcicpIHB1YmxpYyBkZXNjcmlwdG9ySW5pdD86IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+O1xuICAgIEBJbnB1dCgnZGF0YVByb3ZpZGVyJykgcHVibGljIGRhdGFQcm92aWRlckluaXQ/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIEBJbnB1dCgnYWN0aW9ucycpIHB1YmxpYyBhY3Rpb25zSW5pdD86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+PjtcblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JJbml0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlRGF0YT8udGFibGV2aWV3Py5kZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVGFibGV2aWV3IHJlcXVpcmVzIGEgZGVzY3JpcHRvci4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3IS5kZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEYXRhUHJvdmlkZXIoKTogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFQcm92aWRlckluaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RhYmxldmlldyByZXF1aXJlcyBhIGRhdGEgcHJvdmlkZXIuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhLnRhYmxldmlldyEuZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPj4ge1xuICAgICAgICBpZiAodGhpcy5hY3Rpb25zSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uc0luaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmFjdGlvbnMgPz8gc3VwZXIuY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPG1uZy10YWJsZXZpZXcgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvclwiIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwiYWN0aW9uc1wiPiA8L21uZy10YWJsZXZpZXc+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,29 +1,22 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
- import { Component, ContentChildren, Input, QueryList, ViewChild } from '@angular/core';
2
+ import { Component, ContentChildren, Input, QueryList, inject } from '@angular/core';
3
3
  import { RouterOutlet } from '@angular/router';
4
4
  import { TranslateModule } from '@ngx-translate/core';
5
- import { ConfirmationService, MessageService } from 'primeng/api';
6
- import { DialogModule } from 'primeng/dialog';
7
- import { ToastModule } from 'primeng/toast';
5
+ import { SharedModule } from 'primeng/api';
8
6
  import { ToolbarModule } from 'primeng/toolbar';
9
7
  import { TableviewDescriptorInst } from '../../descriptors/tableview';
10
8
  import { ActionPositionEnum } from '../../descriptors/types';
11
- import { MngDialogKeydownHandlerDirective, MngTemplateDirective } from '../../directives';
12
- import { MngViewContainerComponentService } from '../../services';
13
- import { MngActionComponent } from '../action';
9
+ import { MngTemplateDirective } from '../../directives';
10
+ import { ViewContainer, provideViewContainer } from '../../services/view';
11
+ import { MngActionComponent, MngActionTableComponent } from '../action';
14
12
  import { TableviewActionDefaultCategories } from '../action/models';
15
- import { MngTableComponent } from './table/table.component';
16
13
  import * as i0 from "@angular/core";
17
- import * as i1 from "primeng/api";
18
- import * as i2 from "../../services";
19
- import * as i3 from "primeng/toast";
20
- import * as i4 from "primeng/dialog";
21
- import * as i5 from "primeng/toolbar";
22
- import * as i6 from "@ngx-translate/core";
14
+ import * as i1 from "primeng/toolbar";
15
+ import * as i2 from "primeng/api";
16
+ import * as i3 from "@ngx-translate/core";
23
17
  export class MngTableviewComponent {
24
- constructor(messageService, viewContainerService) {
25
- this.messageService = messageService;
26
- this.viewContainerService = viewContainerService;
18
+ constructor() {
19
+ this.viewContainer = inject(ViewContainer, { optional: true });
27
20
  this.actions = [];
28
21
  this.tableActions = [];
29
22
  this.toolbarLeftActions = [];
@@ -31,19 +24,12 @@ export class MngTableviewComponent {
31
24
  this.subscriptions = [];
32
25
  this.hasItemSelectionAction = false;
33
26
  this.selectedItems = [];
34
- this.isDialogNotificationVisible = false;
35
- this.dialogNotification = null;
36
- this.notificationCutoff = 70;
37
27
  }
38
28
  ngOnInit() {
39
- this.viewContainerService.setActions(this.actions);
40
- if (this.dataProvider) {
41
- this.viewContainerService.dataProvider = this.dataProvider;
29
+ this.viewContainer?.setActions(this.actions);
30
+ if (this.viewContainer && this.dataProvider) {
31
+ this.viewContainer.dataProvider = this.dataProvider;
42
32
  }
43
- const reloadTableSubscription = this.viewContainerService.getTableReload$().subscribe(() => {
44
- this.reloadTable();
45
- });
46
- this.subscriptions.push(reloadTableSubscription);
47
33
  for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {
48
34
  switch (action.position) {
49
35
  case ActionPositionEnum.ToolbarLeft:
@@ -74,73 +60,27 @@ export class MngTableviewComponent {
74
60
  ngOnDestroy() {
75
61
  this.subscriptions.forEach(s => s.unsubscribe());
76
62
  }
77
- getMessageService() {
78
- return this.messageService;
79
- }
80
- getDataProvider() {
81
- return this.dataProvider;
82
- }
83
- getActions() {
84
- return this.actions;
85
- }
86
- reloadTable() {
87
- this.tableComponent?.reload();
88
- }
89
63
  onTableLoad(event) {
90
64
  this.tableQueryParam = event.queryParam;
91
65
  }
92
66
  selectionChange(selectedItems) {
93
67
  this.selectedItems = selectedItems;
94
68
  }
95
- onShowNotificationInDialog(message) {
96
- this.dialogNotification = message;
97
- this.isDialogNotificationVisible = true;
98
- }
99
- getNotificationIconClass(message) {
100
- if (message?.icon)
101
- return message.icon;
102
- switch (message?.severity) {
103
- case 'info':
104
- return 'pi-info-circle';
105
- case 'warning':
106
- return 'pi-exclamation-triangle';
107
- case 'error':
108
- return 'pi-times-circle';
109
- case 'success':
110
- return 'pi-check';
111
- default:
112
- return '';
113
- }
114
- }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableviewComponent, deps: [{ token: i1.MessageService }, { token: i2.MngViewContainerComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: MngTableviewComponent, isStandalone: true, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, MngViewContainerComponentService], queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast>\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getNotificationIconClass(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n </div>\n </ng-template>\n </p-toast>\n <p-dialog\n [(visible)]=\"isDialogNotificationVisible\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification?.severity ?? '')\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + getNotificationIconClass(dialogNotification)\"></span>\n {{ dialogNotification?.summary ?? '' }}\n </span>\n </ng-template>\n <div>\n {{ dialogNotification?.detail ?? '' }}\n </div>\n </p-dialog>\n\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n @if (footerTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n }\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ToastModule }, { kind: "component", type: i3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "hostComponent", "route", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: MngDialogKeydownHandlerDirective, selector: "[mngDialogKeydownHandler]" }] }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: MngTableviewComponent, isStandalone: true, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [provideViewContainer()], queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n @if (footerTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n }\n </ng-template>\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i1.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "ngmodule", type: SharedModule }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "hostComponent", "route", "disabled", "loading", "selectedItems"], outputs: ["finish"] }, { kind: "component", type: MngActionTableComponent, selector: "mng-action-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "globalFilterFields", "actions", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
117
71
  }
118
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngTableviewComponent, decorators: [{
119
73
  type: Component,
120
- args: [{ standalone: true, selector: 'mng-tableview', imports: [
121
- ToastModule,
122
- DialogModule,
123
- ToolbarModule,
124
- TranslateModule,
125
- NgTemplateOutlet,
126
- MngActionComponent,
127
- MngTableComponent,
128
- MngTemplateDirective,
129
- RouterOutlet,
130
- MngDialogKeydownHandlerDirective
131
- ], providers: [MessageService, ConfirmationService, MngViewContainerComponentService], template: "<div class=\"mng-tableview\">\n <p-toast>\n <ng-template let-message pTemplate=\"message\">\n <span [class]=\"'p-toast-message-icon pi ' + getNotificationIconClass(message)\"></span>\n <div class=\"p-toast-message-text\">\n <div class=\"p-toast-summary\">{{ message.summary }}</div>\n <div class=\"p-toast-detail\">{{ message.detail.slice(0, notificationCutoff) + (message.detail.length > notificationCutoff ? '...' : '') }}</div>\n @if (message.detail.length > notificationCutoff) {\n <div (click)=\"onShowNotificationInDialog(message)\" class=\"p-link font-semibold text-sm mt-2 flex align-items-center\">\n <i class=\"pi pi-chevron-down mr-1\"></i>{{ 'notification.details' | translate }}\n </div>\n }\n </div>\n </ng-template>\n </p-toast>\n <p-dialog\n [(visible)]=\"isDialogNotificationVisible\"\n [styleClass]=\"'p-fluid mng-dialog mng-dialog-xs ' + 'mng-message-detail-dialog mng-message-detail-dialog-' + (dialogNotification?.severity ?? '')\">\n <ng-template pTemplate=\"header\" mngDialogKeydownHandler>\n <span class=\"p-dialog-title font-bold mng-dialog-success\">\n <span [class]=\"'mr-2 pi ' + getNotificationIconClass(dialogNotification)\"></span>\n {{ dialogNotification?.summary ?? '' }}\n </span>\n </ng-template>\n <div>\n {{ dialogNotification?.detail ?? '' }}\n </div>\n </p-dialog>\n\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n @if (footerTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n }\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
132
- }], ctorParameters: () => [{ type: i1.MessageService }, { type: i2.MngViewContainerComponentService }], propDecorators: { descriptor: [{
74
+ args: [{ standalone: true, selector: 'mng-tableview', imports: [ToolbarModule, SharedModule, TranslateModule, NgTemplateOutlet, MngActionComponent, MngActionTableComponent, MngTemplateDirective, RouterOutlet], providers: [provideViewContainer()], template: "<div class=\"mng-tableview\">\n <div class=\"card\">\n @if (toolbarLeftActions.length > 0 || toolbarRightActions.length > 0) {\n <p-toolbar styleClass=\"mb-4\">\n <ng-template pTemplate=\"left\">\n @for (action of toolbarLeftActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n <ng-template pTemplate=\"right\">\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [queryParam]=\"tableQueryParam\" [hostComponent]=\"this\" [selectedItems]=\"selectedItems\"></mng-action>\n }\n </ng-template>\n </p-toolbar>\n }\n\n <mng-action-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n @if (footerTemplate) {\n <ng-container [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n }\n </ng-template>\n </mng-action-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
75
+ }], propDecorators: { descriptor: [{
133
76
  type: Input,
134
77
  args: [{ required: true }]
135
78
  }], dataProvider: [{
136
79
  type: Input
137
80
  }], actions: [{
138
81
  type: Input
139
- }], tableComponent: [{
140
- type: ViewChild,
141
- args: [MngTableComponent]
142
82
  }], templates: [{
143
83
  type: ContentChildren,
144
84
  args: [MngTemplateDirective]
145
85
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBbUIsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBZSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQVcsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQU05QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RixPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sa0JB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QXFCLG9KQUZuQixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxnQ0FBZ0MsQ0FBQyxvREFvQmpFLG9CQUFvQiw2RUFiMUIsaUJBQWlCLGdEQy9DaEMsay9HQXNFQSwyQ0R6Q1EsV0FBVyw4Y0FDWCxZQUFZLHV1QkFDWixhQUFhLGlKQUNiLGVBQWUsNEZBQ2YsZ0JBQWdCLG9KQUNoQixrQkFBa0IsaVBBQ2xCLGlCQUFpQix5YkFDakIsb0JBQW9CLDJGQUNwQixZQUFZLDJKQUNaLGdDQUFnQzs7MkZBSTNCLHFCQUFxQjtrQkFsQmpDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGVBQWUsV0FFaEI7d0JBQ0wsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osZ0NBQWdDO3FCQUNuQyxhQUNVLENBQUMsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGdDQUFnQyxDQUFDO2tJQUdsRCxVQUFVO3NCQUF6QyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFDUCxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBRStCLGNBQWM7c0JBQWxELFNBQVM7dUJBQUMsaUJBQWlCO2dCQWFrQixTQUFTO3NCQUF0RCxlQUFlO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0RpYWxvZ01vZHVsZX0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHtUb2FzdE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b2FzdCc7XG5pbXBvcnQge1Rvb2xiYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbGJhcic7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbX0gZnJvbSAnLi4vLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge0lEYXRhUHJvdmlkZXIsIElUYWJsZXZpZXdEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcnO1xuaW1wb3J0IHtBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nRGlhbG9nS2V5ZG93bkhhbmRsZXJEaXJlY3RpdmUsIE1uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge01uZ0FjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vYWN0aW9uJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uL2FjdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdUYWJsZUxvYWRFdmVudH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZS90YWJsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUb2FzdE1vZHVsZSxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBUb29sYmFyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE1uZ0FjdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTW5nVGFibGVDb21wb25lbnQsXG4gICAgICAgIE1uZ1RlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBSb3V0ZXJPdXRsZXQsXG4gICAgICAgIE1uZ0RpYWxvZ0tleWRvd25IYW5kbGVyRGlyZWN0aXZlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZSwgTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ1RhYmxldmlld0NvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBJVmlld0NvbnRhaW5lcjxULCBTPiB7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBkZXNjcmlwdG9yITogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8VD47XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFQcm92aWRlcj86IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+ID0gW107XG5cbiAgICBAVmlld0NoaWxkKE1uZ1RhYmxlQ29tcG9uZW50KSBwdWJsaWMgdGFibGVDb21wb25lbnQ/OiBNbmdUYWJsZUNvbXBvbmVudDxULCBTPjtcblxuICAgIHB1YmxpYyB0YWJsZUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+W10gPSBbXTtcbiAgICBwdWJsaWMgdG9vbGJhckxlZnRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPltdID0gW107XG4gICAgcHVibGljIHRvb2xiYXJSaWdodEFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+W10gPSBbXTtcblxuICAgIHB1YmxpYyB0YWJsZVF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgcHVibGljIGhhc0l0ZW1TZWxlY3Rpb25BY3Rpb24gPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogVFtdID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKE1uZ1RlbXBsYXRlRGlyZWN0aXZlKSBwdWJsaWMgdGVtcGxhdGVzITogUXVlcnlMaXN0PE1uZ1RlbXBsYXRlRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIGlzRGlhbG9nTm90aWZpY2F0aW9uVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBkaWFsb2dOb3RpZmljYXRpb246IE1lc3NhZ2UgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbm90aWZpY2F0aW9uQ3V0b2ZmID0gNzA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclNlcnZpY2Uuc2V0QWN0aW9ucyh0aGlzLmFjdGlvbnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyU2VydmljZS5kYXRhUHJvdmlkZXIgPSB0aGlzLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWxvYWRUYWJsZVN1YnNjcmlwdGlvbiA9IHRoaXMudmlld0NvbnRhaW5lclNlcnZpY2UuZ2V0VGFibGVSZWxvYWQkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVsb2FkVGFibGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHJlbG9hZFRhYmxlU3Vic2NyaXB0aW9uKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMuZmlsdGVyKHZhbHVlID0+IHZhbHVlLnBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz8uaW5jbHVkZXMoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRCkgPz8gdHJ1ZSkpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhckxlZnRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5UYWJsZUhlYWRlcjpcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU6XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMgPSB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucmV2ZXJzZSgpO1xuXG4gICAgICAgIHRoaXMuaGFzSXRlbVNlbGVjdGlvbkFjdGlvbiA9IFsuLi50aGlzLnRvb2xiYXJMZWZ0QWN0aW9ucywgLi4udGhpcy50b29sYmFyUmlnaHRBY3Rpb25zXS5zb21lKGUgPT4gZS5oYXNJdGVtc1NlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGVtcGxhdGUuZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBnZXRNZXNzYWdlU2VydmljZSgpOiBNZXNzYWdlU2VydmljZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlO1xuICAgIH1cblxuICAgIGdldERhdGFQcm92aWRlcigpOiBJRGF0YVByb3ZpZGVyPFQsIFM+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIGdldEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZFRhYmxlKCkge1xuICAgICAgICB0aGlzLnRhYmxlQ29tcG9uZW50Py5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJsZUxvYWQoZXZlbnQ6IE1uZ1RhYmxlTG9hZEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVRdWVyeVBhcmFtID0gZXZlbnQucXVlcnlQYXJhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkSXRlbXM6IEFycmF5PFQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2hvd05vdGlmaWNhdGlvbkluRGlhbG9nKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dOb3RpZmljYXRpb24gPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLmlzRGlhbG9nTm90aWZpY2F0aW9uVmlzaWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5vdGlmaWNhdGlvbkljb25DbGFzcyhtZXNzYWdlOiBNZXNzYWdlIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChtZXNzYWdlPy5pY29uKSByZXR1cm4gbWVzc2FnZS5pY29uO1xuXG4gICAgICAgIHN3aXRjaCAobWVzc2FnZT8uc2V2ZXJpdHkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgICAgICAgIHJldHVybiAncGktaW5mby1jaXJjbGUnO1xuICAgICAgICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1leGNsYW1hdGlvbi10cmlhbmdsZSc7XG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS10aW1lcy1jaXJjbGUnO1xuICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdwaS1jaGVjayc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtbmctdGFibGV2aWV3XCI+XG4gICAgPHAtdG9hc3Q+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XG4gICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ3AtdG9hc3QtbWVzc2FnZS1pY29uIHBpICcgKyBnZXROb3RpZmljYXRpb25JY29uQ2xhc3MobWVzc2FnZSlcIj48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10b2FzdC1tZXNzYWdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10b2FzdC1zdW1tYXJ5XCI+e3sgbWVzc2FnZS5zdW1tYXJ5IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtdG9hc3QtZGV0YWlsXCI+e3sgbWVzc2FnZS5kZXRhaWwuc2xpY2UoMCwgbm90aWZpY2F0aW9uQ3V0b2ZmKSArIChtZXNzYWdlLmRldGFpbC5sZW5ndGggPiBub3RpZmljYXRpb25DdXRvZmYgPyAnLi4uJyA6ICcnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAobWVzc2FnZS5kZXRhaWwubGVuZ3RoID4gbm90aWZpY2F0aW9uQ3V0b2ZmKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uU2hvd05vdGlmaWNhdGlvbkluRGlhbG9nKG1lc3NhZ2UpXCIgY2xhc3M9XCJwLWxpbmsgZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG10LTIgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1kb3duIG1yLTFcIj48L2k+e3sgJ25vdGlmaWNhdGlvbi5kZXRhaWxzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG4gICAgPHAtZGlhbG9nXG4gICAgICAgIFsodmlzaWJsZSldPVwiaXNEaWFsb2dOb3RpZmljYXRpb25WaXNpYmxlXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiJ3AtZmx1aWQgbW5nLWRpYWxvZyBtbmctZGlhbG9nLXhzICcgKyAnbW5nLW1lc3NhZ2UtZGV0YWlsLWRpYWxvZyBtbmctbWVzc2FnZS1kZXRhaWwtZGlhbG9nLScgKyAoZGlhbG9nTm90aWZpY2F0aW9uPy5zZXZlcml0eSA/PyAnJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIG1uZ0RpYWxvZ0tleWRvd25IYW5kbGVyPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWRpYWxvZy10aXRsZSBmb250LWJvbGQgbW5nLWRpYWxvZy1zdWNjZXNzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidtci0yIHBpICcgKyBnZXROb3RpZmljYXRpb25JY29uQ2xhc3MoZGlhbG9nTm90aWZpY2F0aW9uKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBkaWFsb2dOb3RpZmljYXRpb24/LnN1bW1hcnkgPz8gJycgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIHt7IGRpYWxvZ05vdGlmaWNhdGlvbj8uZGV0YWlsID8/ICcnIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvcC1kaWFsb2c+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICBAaWYgKHRvb2xiYXJMZWZ0QWN0aW9ucy5sZW5ndGggPiAwIHx8IHRvb2xiYXJSaWdodEFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyTGVmdEFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gW2FjdGlvbl09XCJhY3Rpb25cIiBbcXVlcnlQYXJhbV09XCJ0YWJsZVF1ZXJ5UGFyYW1cIiBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyUmlnaHRBY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uIFthY3Rpb25dPVwiYWN0aW9uXCIgW3F1ZXJ5UGFyYW1dPVwidGFibGVRdWVyeVBhcmFtXCIgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIj48L21uZy1hY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRvb2xiYXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bW5nLXRhYmxlXG4gICAgICAgICAgICBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yLnRhYmxlXCJcbiAgICAgICAgICAgIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCJcbiAgICAgICAgICAgIFt1c2VRdWVyeVBhcmFtc109XCJ0cnVlXCJcbiAgICAgICAgICAgIFthY3Rpb25zXT1cInRhYmxlQWN0aW9uc1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uRW5hYmxlZF09XCJoYXNJdGVtU2VsZWN0aW9uQWN0aW9uXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidtdWx0aXBsZSdcIlxuICAgICAgICAgICAgKHRhYmxlTG9hZCk9XCJvblRhYmxlTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBtZDpmbGV4LXJvdyBtZDpqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicC0wIG0tMFwiPnt7IGRlc2NyaXB0b3IudGFibGVUaXRsZSA/PyAnJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXF1ZXJ5UmVzdWx0PVwicXVlcnlSZXN1bHRcIiBtbmdUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cXVlcnlSZXN1bHQ6IHF1ZXJ5UmVzdWx0fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbW5nLXRhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuPC9kaXY+XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBbUIsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBZSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQU05QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7OztBQVVsRSxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUXFCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFDLFFB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WUFBRSxvQkFBb0IsMkZBQUUsWUFBWTs7MkZBR2hKLHFCQUFxQjtrQkFQakMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZUFBZSxXQUVoQixDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLFlBQVksQ0FBQyxhQUMvSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7OEJBS0gsVUFBVTtzQkFBekMsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7Z0JBQ1AsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQWF3QyxTQUFTO3NCQUF0RCxlQUFlO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyT3V0bGV0fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1NoYXJlZE1vZHVsZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtUb29sYmFyTW9kdWxlfSBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW19IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtJVGFibGV2aWV3RGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7QWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge01uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7Vmlld0NvbnRhaW5lciwgcHJvdmlkZVZpZXdDb250YWluZXJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXcnO1xuaW1wb3J0IHtNbmdBY3Rpb25Db21wb25lbnQsIE1uZ0FjdGlvblRhYmxlQ29tcG9uZW50fSBmcm9tICcuLi9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vYWN0aW9uL21vZGVscyc7XG5pbXBvcnQge01uZ1RhYmxlTG9hZEV2ZW50fSBmcm9tICcuLi90YWJsZS9tb2RlbHMvdGFibGUuZXZlbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxldmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1Rvb2xiYXJNb2R1bGUsIFNoYXJlZE1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBNbmdBY3Rpb25Db21wb25lbnQsIE1uZ0FjdGlvblRhYmxlQ29tcG9uZW50LCBNbmdUZW1wbGF0ZURpcmVjdGl2ZSwgUm91dGVyT3V0bGV0XSxcbiAgICBwcm92aWRlcnM6IFtwcm92aWRlVmlld0NvbnRhaW5lcigpXVxufSlcbmV4cG9ydCBjbGFzcyBNbmdUYWJsZXZpZXdDb21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyID0gaW5qZWN0KFZpZXdDb250YWluZXIsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBkZXNjcmlwdG9yITogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8VD47XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFQcm92aWRlcj86IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8VCwgUz47XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+ID0gW107XG5cbiAgICBwdWJsaWMgdGFibGVBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPltdID0gW107XG4gICAgcHVibGljIHRvb2xiYXJMZWZ0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8VD5bXSA9IFtdO1xuICAgIHB1YmxpYyB0b29sYmFyUmlnaHRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPltdID0gW107XG5cbiAgICBwdWJsaWMgdGFibGVRdWVyeVBhcmFtPzogTWVkaXVzUXVlcnlQYXJhbTtcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHB1YmxpYyBoYXNJdGVtU2VsZWN0aW9uQWN0aW9uID0gZmFsc2U7XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihNbmdUZW1wbGF0ZURpcmVjdGl2ZSkgcHVibGljIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxNbmdUZW1wbGF0ZURpcmVjdGl2ZT47XG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXI/LnNldEFjdGlvbnModGhpcy5hY3Rpb25zKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3Q29udGFpbmVyICYmIHRoaXMuZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuZGF0YVByb3ZpZGVyID0gdGhpcy5kYXRhUHJvdmlkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMuZmlsdGVyKHZhbHVlID0+IHZhbHVlLnBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz8uaW5jbHVkZXMoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRCkgPz8gdHJ1ZSkpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhckxlZnRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5UYWJsZUhlYWRlcjpcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmU6XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uUm93Q2xpY2s6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMgPSB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucmV2ZXJzZSgpO1xuXG4gICAgICAgIHRoaXMuaGFzSXRlbVNlbGVjdGlvbkFjdGlvbiA9IFsuLi50aGlzLnRvb2xiYXJMZWZ0QWN0aW9ucywgLi4udGhpcy50b29sYmFyUmlnaHRBY3Rpb25zXS5zb21lKGUgPT4gZS5oYXNJdGVtc1NlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKHRlbXBsYXRlID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodGVtcGxhdGUuZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJUZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJsZUxvYWQoZXZlbnQ6IE1uZ1RhYmxlTG9hZEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVRdWVyeVBhcmFtID0gZXZlbnQucXVlcnlQYXJhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkSXRlbXM6IEFycmF5PFQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1uZy10YWJsZXZpZXdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICBAaWYgKHRvb2xiYXJMZWZ0QWN0aW9ucy5sZW5ndGggPiAwIHx8IHRvb2xiYXJSaWdodEFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyTGVmdEFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gW2FjdGlvbl09XCJhY3Rpb25cIiBbcXVlcnlQYXJhbV09XCJ0YWJsZVF1ZXJ5UGFyYW1cIiBbaG9zdENvbXBvbmVudF09XCJ0aGlzXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiB0b29sYmFyUmlnaHRBY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uIFthY3Rpb25dPVwiYWN0aW9uXCIgW3F1ZXJ5UGFyYW1dPVwidGFibGVRdWVyeVBhcmFtXCIgW2hvc3RDb21wb25lbnRdPVwidGhpc1wiIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkSXRlbXNcIj48L21uZy1hY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRvb2xiYXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bW5nLWFjdGlvbi10YWJsZVxuICAgICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvci50YWJsZVwiXG4gICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cImRhdGFQcm92aWRlclwiXG4gICAgICAgICAgICBbdXNlUXVlcnlQYXJhbXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbkVuYWJsZWRdPVwiaGFzSXRlbVNlbGVjdGlvbkFjdGlvblwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCInbXVsdGlwbGUnXCJcbiAgICAgICAgICAgICh0YWJsZUxvYWQpPVwib25UYWJsZUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbW5nVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gbWQ6ZmxleC1yb3cgbWQ6anVzdGlmeS1jb250ZW50LWJldHdlZW4gdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInAtMCBtLTBcIj57eyBkZXNjcmlwdG9yLnRhYmxlVGl0bGUgPz8gJycgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1xdWVyeVJlc3VsdD1cInF1ZXJ5UmVzdWx0XCIgbW5nVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGZvb3RlclRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3F1ZXJ5UmVzdWx0OiBxdWVyeVJlc3VsdH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21uZy1hY3Rpb24tdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG48L2Rpdj5cbiJdfQ==