ontimize-web-ngx 15.6.0-next.1 → 15.6.0-next.10

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 (161) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +3 -3
  2. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +19 -3
  3. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +17 -4
  4. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +7 -5
  5. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +1 -1
  6. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +42 -24
  7. package/esm2020/lib/components/form/o-form.component.mjs +4 -3
  8. package/esm2020/lib/components/form/services/o-form-message.service.mjs +2 -2
  9. package/esm2020/lib/components/grid/o-grid.component.mjs +19 -17
  10. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +12 -15
  11. package/esm2020/lib/components/index.mjs +2 -1
  12. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +3 -2
  13. package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +9 -1
  14. package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -3
  15. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +8 -3
  16. package/esm2020/lib/components/list/o-list.component.mjs +41 -16
  17. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +12 -15
  18. package/esm2020/lib/components/o-form-data-component.class.mjs +2 -2
  19. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +33 -0
  20. package/esm2020/lib/components/o-service-base-component.class.mjs +5 -4
  21. package/esm2020/lib/components/o-service-component.class.mjs +10 -9
  22. package/esm2020/lib/components/o-skeleton.component.mjs +15 -6
  23. package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +2 -2
  24. package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +1 -1
  25. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +5 -4
  26. package/esm2020/lib/components/table/column/o-column.class.mjs +2 -1
  27. package/esm2020/lib/components/table/column/o-table-column.component.mjs +10 -4
  28. package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +24 -6
  29. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +75 -87
  30. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.mjs +53 -0
  31. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +12 -4
  32. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +2 -2
  33. package/esm2020/lib/components/table/extensions/o-table.dao.mjs +6 -4
  34. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +5 -19
  35. package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
  36. package/esm2020/lib/components/table/o-table.component.mjs +104 -10
  37. package/esm2020/lib/components/table/o-table.module.mjs +4 -1
  38. package/esm2020/lib/components/tree/o-tree.component.mjs +96 -14
  39. package/esm2020/lib/components/tree/o-tree.datasource.mjs +3 -3
  40. package/esm2020/lib/components/user-info/o-user-info.component.mjs +5 -4
  41. package/esm2020/lib/config/o-providers.mjs +5 -3
  42. package/esm2020/lib/i18n/i18n.mjs +6 -3
  43. package/esm2020/lib/injection-tokens/index.mjs +19 -0
  44. package/esm2020/lib/interfaces/base-response.interface.mjs +1 -1
  45. package/esm2020/lib/interfaces/form-layout-manager.interface.mjs +1 -1
  46. package/esm2020/lib/interfaces/index.mjs +3 -1
  47. package/esm2020/lib/interfaces/jsonapi-config.interface.mjs +3 -0
  48. package/esm2020/lib/interfaces/jsonapi-response.interface.mjs +2 -1
  49. package/esm2020/lib/interfaces/o-table-column.interface.mjs +1 -1
  50. package/esm2020/lib/interfaces/service-response.interface.mjs +1 -1
  51. package/esm2020/lib/layouts/app-layout/o-app-layout-base.class.mjs +1 -1
  52. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +26 -9
  53. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -3
  54. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +2 -2
  55. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +2 -1
  56. package/esm2020/lib/services/base-service.class.mjs +3 -3
  57. package/esm2020/lib/services/factories.mjs +25 -53
  58. package/esm2020/lib/services/index.mjs +2 -2
  59. package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +2 -2
  60. package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +54 -22
  61. package/esm2020/lib/services/request-adapter/base-request-argument.adapter.mjs +12 -0
  62. package/esm2020/lib/services/request-adapter/base-request-argument.interface.mjs +2 -0
  63. package/esm2020/lib/services/request-adapter/index.mjs +5 -0
  64. package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +70 -0
  65. package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +19 -0
  66. package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +1 -1
  67. package/esm2020/lib/services/state/o-table-component-state.class.mjs +7 -1
  68. package/esm2020/lib/services/state/o-table-component-state.service.mjs +8 -2
  69. package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
  70. package/esm2020/lib/types/config.type.mjs +1 -1
  71. package/esm2020/lib/types/form-layout-detail-component-data.type.mjs +1 -1
  72. package/esm2020/lib/types/index.mjs +1 -2
  73. package/esm2020/lib/types/service-configuration.type.mjs +1 -1
  74. package/esm2020/lib/types/table/index.mjs +2 -1
  75. package/esm2020/lib/types/table/o-column-value-filter.type.mjs +1 -1
  76. package/esm2020/lib/types/table/o-table-expandable-row-state.type.mjs +2 -0
  77. package/esm2020/lib/util/codes.mjs +3 -1
  78. package/esm2020/lib/util/errors.mjs +3 -9
  79. package/esm2020/lib/util/factory.util.mjs +67 -0
  80. package/esm2020/lib/util/index.mjs +3 -1
  81. package/esm2020/lib/util/injection-token.utils.mjs +4 -0
  82. package/esm2020/lib/util/preference-mapping-util.mjs +2 -2
  83. package/esm2020/lib/util/sqltypes.mjs +2 -2
  84. package/esm2020/lib/util/util.mjs +11 -53
  85. package/esm2020/public-api.mjs +2 -1
  86. package/fesm2015/ontimize-web-ngx.mjs +6995 -6537
  87. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  88. package/fesm2020/ontimize-web-ngx.mjs +6634 -6194
  89. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  90. package/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.d.ts +3 -0
  91. package/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.d.ts +1 -0
  92. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +2 -1
  93. package/lib/components/filter-builder/o-filter-builder.component.d.ts +1 -1
  94. package/lib/components/form/navigation/o-form-navigation.component.d.ts +7 -4
  95. package/lib/components/grid/skeketon/o-grid-skeleton.component.d.ts +4 -7
  96. package/lib/components/index.d.ts +1 -0
  97. package/lib/components/input/o-boolean-form-data-component.class.d.ts +1 -0
  98. package/lib/components/list/o-list.component.d.ts +5 -1
  99. package/lib/components/list/skeleton/o-list-skeleton.component.d.ts +4 -7
  100. package/lib/components/o-repeatable-skeleton.component.d.ts +9 -0
  101. package/lib/components/o-skeleton.component.d.ts +10 -5
  102. package/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.d.ts +1 -1
  103. package/lib/components/table/column/o-column.class.d.ts +2 -1
  104. package/lib/components/table/column/o-table-column.component.d.ts +2 -2
  105. package/lib/components/table/extensions/contextmenu/o-table-context-menu.component.d.ts +2 -0
  106. package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.d.ts +9 -6
  107. package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.d.ts +12 -0
  108. package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
  109. package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +1 -1
  110. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -10
  111. package/lib/components/table/o-table-base.class.d.ts +2 -0
  112. package/lib/components/table/o-table.component.d.ts +12 -2
  113. package/lib/components/tree/o-tree.component.d.ts +10 -1
  114. package/lib/components/user-info/o-user-info.component.d.ts +2 -1
  115. package/lib/config/o-directives.d.ts +1 -1
  116. package/lib/i18n/i18n.d.ts +3 -0
  117. package/lib/injection-tokens/index.d.ts +33 -0
  118. package/lib/interfaces/base-response.interface.d.ts +0 -2
  119. package/lib/interfaces/form-layout-manager.interface.d.ts +1 -1
  120. package/lib/interfaces/index.d.ts +2 -0
  121. package/lib/interfaces/jsonapi-config.interface.d.ts +3 -0
  122. package/lib/interfaces/jsonapi-response.interface.d.ts +47 -7
  123. package/lib/interfaces/o-table-column.interface.d.ts +2 -1
  124. package/lib/interfaces/service-response.interface.d.ts +2 -0
  125. package/lib/layouts/app-layout/o-app-layout-base.class.d.ts +1 -1
  126. package/lib/layouts/app-layout/o-app-layout.component.d.ts +7 -3
  127. package/lib/services/base-service.class.d.ts +2 -2
  128. package/lib/services/factories.d.ts +7 -28
  129. package/lib/services/index.d.ts +1 -1
  130. package/lib/services/jsonapi/jsonapi.service.d.ts +7 -4
  131. package/lib/services/{query-arguments/base-query-argument.adapter.d.ts → request-adapter/base-request-argument.adapter.d.ts} +2 -1
  132. package/lib/services/{query-arguments/base-query-argument.interface.d.ts → request-adapter/base-request-argument.interface.d.ts} +1 -1
  133. package/lib/services/request-adapter/index.d.ts +4 -0
  134. package/lib/services/request-adapter/jsonapi-request-arguments.adapter.d.ts +13 -0
  135. package/lib/services/request-adapter/ontimize-request-arguments.adapter.d.ts +8 -0
  136. package/lib/services/state/o-filter-builder-component-state.service.d.ts +1 -1
  137. package/lib/services/state/o-table-component-state.class.d.ts +3 -0
  138. package/lib/types/config.type.d.ts +2 -2
  139. package/lib/types/form-layout-detail-component-data.type.d.ts +1 -1
  140. package/lib/types/index.d.ts +0 -1
  141. package/lib/types/service-configuration.type.d.ts +12 -2
  142. package/lib/types/table/index.d.ts +1 -0
  143. package/lib/types/table/o-column-value-filter.type.d.ts +3 -0
  144. package/lib/types/table/o-table-expandable-row-state.type.d.ts +5 -0
  145. package/lib/util/codes.d.ts +3 -0
  146. package/lib/util/factory.util.d.ts +10 -0
  147. package/lib/util/index.d.ts +2 -0
  148. package/lib/util/injection-token.utils.d.ts +2 -0
  149. package/lib/util/util.d.ts +1 -5
  150. package/package.json +1 -1
  151. package/public-api.d.ts +1 -0
  152. package/esm2020/lib/services/query-arguments/base-query-argument.adapter.mjs +0 -9
  153. package/esm2020/lib/services/query-arguments/base-query-argument.interface.mjs +0 -2
  154. package/esm2020/lib/services/query-arguments/index.mjs +0 -5
  155. package/esm2020/lib/services/query-arguments/jsonapi-query-arguments.adapter.mjs +0 -62
  156. package/esm2020/lib/services/query-arguments/ontimize-query-arguments.adapter.mjs +0 -19
  157. package/esm2020/lib/types/ontimize-service-config.type.mjs +0 -2
  158. package/lib/services/query-arguments/index.d.ts +0 -4
  159. package/lib/services/query-arguments/jsonapi-query-arguments.adapter.d.ts +0 -12
  160. package/lib/services/query-arguments/ontimize-query-arguments.adapter.d.ts +0 -8
  161. package/lib/types/ontimize-service-config.type.d.ts +0 -5
@@ -258,7 +258,7 @@ export class OBaseTableCellEditor {
258
258
  return hasError;
259
259
  }
260
260
  getErrorValue(error, prop) {
261
- return this.formControl.hasError(error) ? this.formControl.getError(error)[prop] || '' : '';
261
+ return this.formControl.hasError(error) ? this.formControl.getError(error)[prop] ?? '' : '';
262
262
  }
263
263
  onEscClicked() {
264
264
  if (!this.isSilentControl()) {
@@ -348,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
348
348
  type: ViewChildren,
349
349
  args: [OMatErrorDirective]
350
350
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtZWRpdG9yL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBUSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQXdDLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7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LEtBQUssS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3BFLE9BQU8sU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2lIQWhaVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwbEJBNkNkLG1CQUFtQix1SkFhdEIsa0JBQWtCO0FBdERoQztJQUFDLHFCQUFxQixFQUFFOzt1REFDRztBQUMzQjtJQUFDLHFCQUFxQixFQUFFOzs2REFDUztBQUVqQztJQUFDLHFCQUFxQixFQUFFOztnRUFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztvRUFDZTsyRkFaNUIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULE1BQU0sRUFBRSxrQ0FBa0M7b0JBQzFDLE9BQU8sRUFBRSxtQ0FBbUM7aUJBQzdDOytGQU1DLFNBQVMsTUFFVCxlQUFlLE1BR2Ysa0JBQWtCLE1BRWxCLHNCQUFzQixNQXNCWixRQUFRO3NCQURqQixTQUFTO3VCQUFDLE9BQU87Z0JBYWxCLGlCQUFpQjtzQkFEaEIsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBS3BDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVMUMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9NYXRFcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvby1tYXQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPVmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvdmFsaWRhdGlvbi9vLXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXJyb3JEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvZXJyb3ItZGF0YS50eXBlJztcbmltcG9ydCB7IE9NYXRFcnJvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9vLW1hdC1lcnJvci50eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9hc3luYyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZhbGlkYXRvcnNBbmRFcnJvcnNEYXRhLCBFcnJvcnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbHVtbiB9IGZyb20gJy4uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SID0gW1xuICAnb3JlcXVpcmVkOiByZXF1aXJlZCcsXG4gICdzaG93UGxhY2VIb2xkZXI6IHNob3ctcGxhY2Vob2xkZXInLFxuICAnb2xhYmVsOiBsYWJlbCcsXG4gICd1cGRhdGVSZWNvcmRPbkVkaXQ6IHVwZGF0ZS1yZWNvcmQtb24tZWRpdCcsXG4gICdzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBzaG93LW5vdGlmaWNhdGlvbi1vbi1lZGl0JyxcbiAgJ2VuYWJsZWQnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1IgPSBbXG4gICdlZGl0aW9uU3RhcnRlZCcsXG4gICdlZGl0aW9uQ2FuY2VsbGVkJyxcbiAgJ2VkaXRpb25Db21taXR0ZWQnLFxuICAnb25Qb3N0VXBkYXRlUmVjb3JkJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX0VESVRPUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1Jcbn0pXG5leHBvcnQgY2xhc3MgT0Jhc2VUYWJsZUNlbGxFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIENvbXBvbmVudFdpdGhWYWxpZGF0b3JzQW5kRXJyb3JzRGF0YSB7XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX3RhYmxlQ29sdW1uOiBPVGFibGVDb2x1bW47XG4gIHByb3RlY3RlZCBfdGFibGU6IE9UYWJsZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgX3Jvd0RhdGE6IGFueTtcblxuICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjb250cm9sQXJnczogYW55O1xuXG4gIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcblxuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgcHVibGljIGVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgaW5wdXRSZWY6IGFueTtcblxuICBwcm90ZWN0ZWQgdHlwZTogc3RyaW5nO1xuICByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogYW55O1xuICBjZWxsRWRpdG9ySWQ6IHN0cmluZztcblxuICBlcnJvcnNEYXRhOiBFcnJvckRhdGFbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAQ29udGVudENoaWxkcmVuKE9WYWxpZGF0b3JDb21wb25lbnQpXG4gIHZhbGlkYXRvckNoaWxkcmVuOiBRdWVyeUxpc3Q8T1ZhbGlkYXRvckNvbXBvbmVudD47XG4gIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5oYW5kbGVLZXl1cChldmVudCk7XG4gIH1cblxuICB0b29sdGlwUG9zaXRpb246IHN0cmluZyA9ICdiZWxvdyc7XG4gIHRvb2x0aXBTaG93RGVsYXk6IG51bWJlciA9IDUwMDtcbiAgdG9vbHRpcEhpZGVEZWxheTogbnVtYmVyID0gMDtcbiAgZXJyb3JPcHRpb25zOiBPTWF0RXJyb3JPcHRpb25zO1xuICBAVmlld0NoaWxkcmVuKE9NYXRFcnJvckRpcmVjdGl2ZSlcbiAgb01hdEVycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxPTWF0RXJyb3JEaXJlY3RpdmU+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFNuYWNrQmFyU2VydmljZT4oU25hY2tCYXJTZXJ2aWNlIGFzIFR5cGU8U25hY2tCYXJTZXJ2aWNlPik7XG4gICAgdGhpcy50YWJsZUNvbHVtbiA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9UYWJsZUNvbHVtbkNvbXBvbmVudD4oT1RhYmxlQ29sdW1uQ29tcG9uZW50IGFzIFR5cGU8T1RhYmxlQ29sdW1uQ29tcG9uZW50Pik7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T1RyYW5zbGF0ZVNlcnZpY2U+KE9UcmFuc2xhdGVTZXJ2aWNlIGFzIFR5cGU8T1RyYW5zbGF0ZVNlcnZpY2U+KTtcbiAgICB0aGlzLmNlbGxFZGl0b3JJZCA9IFV0aWwucmFuZG9tTnVtYmVyKCkudG9TdHJpbmcoMzYpO1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLmluamVjdG9yLmdldDxSZW5kZXJlcjI+KFJlbmRlcmVyMiBhcyBUeXBlPFJlbmRlcmVyMj4pO1xuICAgIHRoaXMuZXJyb3JPcHRpb25zID0gRXJyb3JzVXRpbHMuZ2V0RXJyb3JPcHRpb25zKHRoaXMuaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yc1N1YnNjcmlwdGlvbiA9IHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNlbGwgZWRpdG9yXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKCk7XG4gICAgdGhpcy5yZWdpc3RlckVkaXRvcigpO1xuICAgIHRoaXMuZWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qgb0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKCFvQ29sdW1uIHx8ICFvQ29sdW1uLmVkaXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXNjQ2xpY2tlZCA9IHRoaXMuY2hlY2tLZXkoZXZlbnQsICdFc2NhcGUnLCAyNyk7XG4gICAgY29uc3QgZW50ZXJDbGlja2VkID0gdGhpcy5jaGVja0tleShldmVudCwgJ0VudGVyJywgMTMpO1xuICAgIGNvbnN0IHRhYkNsaWNrZWQgPSB0aGlzLmNoZWNrS2V5KGV2ZW50LCAnVGFiJywgOSk7XG4gICAgaWYgKCFlc2NDbGlja2VkICYmICFlbnRlckNsaWNrZWQgJiYgIXRhYkNsaWNrZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXNjQ2xpY2tlZCkge1xuICAgICAgdGhpcy5vbkVzY0NsaWNrZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS5lZGl0aW5nQ2VsbCAmJiAhdGhpcy50YWJsZS5lZGl0aW5nQ2VsbC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVudGVyQ2xpY2tlZCB8fCB0YWJDbGlja2VkKSB7XG4gICAgICB0aGlzLmNvbW1pdEVkaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGtleTogc3RyaW5nLCBrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGV2ZW50LmtleSAmJiBldmVudC5rZXkgPT09IGtleSkgfHwgKGV2ZW50LmtleUNvZGUgJiYgZXZlbnQua2V5Q29kZSA9PT0ga2V5Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBmb3JtIGNvbnRyb2xcbiAgICovXG4gIGNyZWF0ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gdGhpcy5yZXNvbHZlQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICBjb25zdCBjZmcgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiAhdGhpcy5lbmFibGVkXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChjZmcsIHZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycyk7XG5cbiAgICB9XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5jZWxsRWRpdG9ySWQpKSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmNlbGxFZGl0b3JJZCwgdGhpcy5mb3JtQ29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBlZGl0b3JcbiAgICovXG4gIHJlZ2lzdGVyRWRpdG9yKCkge1xuICAgIGlmICh0aGlzLnJlZ2lzdGVySW5Db2x1bW4gJiYgIVV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGVDb2x1bW4uZWRpdG9yKSkge1xuICAgICAgdGhpcy50YWJsZUNvbHVtbi5yZWdpc3RlckVkaXRvcih0aGlzKTtcbiAgICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRhYmxlQ29sdW1uLnR5cGUpKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHRoaXMudGFibGVDb2x1bW4udHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNlbGwgZGF0YVxuICAgKiBAcmV0dXJucyBjZWxsIGRhdGFcbiAgICovXG4gIGdldENlbGxEYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXRpb24gd2l0aCBnaXZlbiB0aGUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgc3RhcnRFZGl0aW9uKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5yb3dEYXRhID0gZGF0YTtcbiAgICBpZiAoIXRoaXMuaXNTaWxlbnRDb250cm9sKCkpIHtcbiAgICAgIHRoaXMuZWRpdGlvblN0YXJ0ZWQuZW1pdCh0aGlzLl9yb3dEYXRhKTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBTZWxlY3RpbmcgdGV4dCBpZiB0aGUgdGVtcGxhdGUgaW5wdXQgZWxlbWVudCBoYXMgZGVmaW5lZCB0aGUgaWQ9Y2VsbEVkaXRvcklkXG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgKGlucHV0RWwgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0RWRpdGluZ1Jvd0NsYXNzKHRydWUpXG4gIH1cblxuICAvKipcbiAgICogRW5kcyBlZGl0aW9uIHdpdGggdGhlIGFiaWxpdHkgdG8gc2tpcCBvciBzYXZlIGNoYW5nZXNcbiAgICogQHBhcmFtIHNhdmVDaGFuZ2VzXG4gICAqL1xuICBlbmRFZGl0aW9uKHNhdmVDaGFuZ2VzOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb0NvbHVtbjogT0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKG9Db2x1bW4pIHtcbiAgICAgIGNvbnN0IHVwZGF0ZU9ic2VydmVyID0gdGhpcy50YWJsZS51cGRhdGVDZWxsRGF0YShvQ29sdW1uLCB0aGlzLl9yb3dEYXRhLCBzYXZlQ2hhbmdlcyk7XG4gICAgICBpZiAodXBkYXRlT2JzZXJ2ZXIpIHtcbiAgICAgICAgdXBkYXRlT2JzZXJ2ZXIuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5vblVwZGF0ZVN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmRhb1RhYmxlLnNldERhdGFBcnJheSh0aGlzLnRhYmxlLmRhb1RhYmxlLmRhdGEpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl0gPSB0aGlzLm9sZFZhbHVlO1xuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZS51cGRhdGVSZW5kZXJlZFJvd0RhdGEodGhpcy5fcm93RGF0YSk7XG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93RGlhbG9nRXJyb3IoZXJyb3IsICdNRVNTQUdFUy5FUlJPUl9VUERBVEUnKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDb21taXRzIGVkaXRpb25cbiAgICovXG4gIGNvbW1pdEVkaXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmludmFsaWQpIHtcbiAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLl9yb3dEYXRhW3RoaXMudGFibGVDb2x1bW5BdHRyXTtcbiAgICAgIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgIGlmICghdGhpcy5pc1NpbGVudENvbnRyb2woKSkge1xuICAgICAgICB0aGlzLmVuZEVkaXRpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuZWRpdGlvbkNvbW1pdHRlZC5lbWl0KHRoaXMuX3Jvd0RhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbigpOiBPVGFibGVDb2x1bW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbjtcbiAgfVxuXG4gIHNldCB0YWJsZUNvbHVtbihhcmc6IE9UYWJsZUNvbHVtbikge1xuICAgIHRoaXMuX3RhYmxlQ29sdW1uID0gYXJnO1xuICAgIGlmIChhcmcpIHtcbiAgICAgIHRoaXMuX3RhYmxlID0gYXJnLnRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbkF0dHIoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdGFibGVDb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbi5hdHRyO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0IHRhYmxlKGFyZzogT1RhYmxlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fdGFibGUgPSBhcmc7XG4gIH1cblxuICBnZXQgdGFibGUoKTogT1RhYmxlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gIH1cblxuICBnZXQgcm93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yb3dEYXRhO1xuICB9XG5cbiAgc2V0IHJvd0RhdGEoYXJnOiBhbnkpIHtcbiAgICB0aGlzLl9yb3dEYXRhID0gYXJnO1xuICAgIGNvbnN0IGNlbGxEYXRhID0gdGhpcy5nZXRDZWxsRGF0YSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY2VsbERhdGEpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdmFsaWRhdG9yc1xuICAgKiBAcmV0dXJucyB2YWxpZGF0b3JzXG4gICAqL1xuICByZXNvbHZlVmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbiAmJiB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbik7XG4gICAgICBFcnJvcnNVdGlscy5wdXNoVG9FcnJvcnNEYXRhKHRoaXMsIHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbkVycm9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9yZXF1aXJlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHJlc29sdmVBc3luY1ZhbGlkYXRvcnMoKTogQXN5bmNWYWxpZGF0b3JGbltdIHtcbiAgICBpZiAodGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gJiYgdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgRXJyb3JzVXRpbHMucHVzaFRvRXJyb3JzRGF0YSh0aGlzLCB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gfHwgW11cbiAgfVxuXG4gIGdldEFjdGl2ZU9FcnJvcnMoKSB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldEFjdGl2ZU9FcnJvcnModGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXJyb3JUZXh0KG9FcnJvcjogYW55KSB7XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4gJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IgJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IuZXJyb3JzRGF0YSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnRhYmxlQ29sdW1uLmVkaXRvci5lcnJvcnNEYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gb0Vycm9yKTtcbiAgICAgIHJldHVybiBlcnJvciA/IGVycm9yLnRleHQgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIEVycm9yc1V0aWxzLnVwZGF0ZUZvcm1Db250cm9sVmFsaWRhdG9ycyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3IgaGFzXG4gICAqIEBwYXJhbSBlcnJvclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGVycm9yXG4gICAqL1xuICBoYXNFcnJvcihlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmICh0aGlzLmhhc0Vycm9yRXhjbHVzaXZlKGVycm9yKSB8fCB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBoYXNTb21lRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yRXhjbHVzaXZlKGVycm9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvcnNPcmRlciA9IFsnbWF0RGF0ZXBpY2tlck1heCcsICdtYXREYXRlcGlja2VyTWluJywgJ21hdERhdGVwaWNrZXJGaWx0ZXInLCAnbWF0RGF0ZXBpY2tlclBhcnNlJywgJ3JlcXVpcmVkJ107XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnM7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGVycm9ycykpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBlcnJvcnNPcmRlci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGhhc0Vycm9yID0gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yc09yZGVyW2ldKTtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGhhc0Vycm9yID0gKGVycm9yc09yZGVyW2ldID09PSBlcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0Vycm9yO1xuICB9XG5cbiAgZ2V0RXJyb3JWYWx1ZShlcnJvcjogc3RyaW5nLCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSA/IHRoaXMuZm9ybUNvbnRyb2wuZ2V0RXJyb3IoZXJyb3IpW3Byb3BdIHx8ICcnIDogJyc7XG4gIH1cblxuICBvbkVzY0NsaWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICB0aGlzLmVuZEVkaXRpb24oZmFsc2UpO1xuICAgICAgdGhpcy5lZGl0aW9uQ2FuY2VsbGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzU2lsZW50Q29udHJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQXJncyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbEFyZ3Muc2lsZW50O1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UGxhY2VIb2xkZXIgP1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLm9sYWJlbCB8fCB0aGlzLnRhYmxlQ29sdW1uID8gKHRoaXMudGFibGVDb2x1bW4udGl0bGUgfHwgdGhpcy50YWJsZUNvbHVtbkF0dHIpIDogdGhpcy50YWJsZUNvbHVtbkF0dHIpIDpcbiAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblVwZGF0ZVN1Y2Nlc3MocmVzOiBhbnkpIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm9uUG9zdFVwZGF0ZVJlY29yZCwgdGhpcy5fcm93RGF0YSk7XG4gICAgaWYgKHRoaXMuc2hvd05vdGlmaWNhdGlvbk9uRWRpdCkge1xuICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbignTUVTU0FHRVMuVVBEQVRFRCcsIHsgaWNvbjogJ2NoZWNrX2NpcmNsZScgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGVuYWJsZWQoYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGFyZztcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA/IHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCkgOiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sO1xuICB9XG5cbiAgc2V0RWRpdGluZ1Jvd0NsYXNzKGFkZENsYXNzOiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgY29uc3QgdGFibGVSb3dFbCA9IGlucHV0RWwuY2xvc2VzdCgndHInKTtcbiAgICAgIGlmICh0YWJsZVJvd0VsKSB7XG4gICAgICAgIGFkZENsYXNzID8gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0YWJsZVJvd0VsLCAnby10YWJsZS1lZGl0aW5nLXJvdycpIDpcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRhYmxlUm93RWwsICdvLXRhYmxlLWVkaXRpbmctcm93JylcbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaXRlRXJyb3IgPSB0aGlzLmVycm9yT3B0aW9ucy50eXBlID09PSBDb2Rlcy5PX01BVF9FUlJPUl9MSVRFO1xuICAgIHJldHVybiBsaXRlRXJyb3IgJiYgdGhpcy5oYXNTb21lRXJyb3IoKSA/IEVycm9yc1V0aWxzLmdldEVycm9yc1Rvb2x0aXBUZXh0KHRoaXMpIDogJyc7XG4gIH1cblxuICBnZXQgdG9vbHRpcENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldFRvb2x0aXBDbGFzc2VzKHRoaXMpO1xuICB9XG59XG4iXX0=
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtZWRpdG9yL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBUSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQXdDLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7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LEtBQUssS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3BFLE9BQU8sU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2lIQWhaVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwbEJBNkNkLG1CQUFtQix1SkFhdEIsa0JBQWtCO0FBdERoQztJQUFDLHFCQUFxQixFQUFFOzt1REFDRztBQUMzQjtJQUFDLHFCQUFxQixFQUFFOzs2REFDUztBQUVqQztJQUFDLHFCQUFxQixFQUFFOztnRUFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztvRUFDZTsyRkFaNUIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULE1BQU0sRUFBRSxrQ0FBa0M7b0JBQzFDLE9BQU8sRUFBRSxtQ0FBbUM7aUJBQzdDOytGQU1DLFNBQVMsTUFFVCxlQUFlLE1BR2Ysa0JBQWtCLE1BRWxCLHNCQUFzQixNQXNCWixRQUFRO3NCQURqQixTQUFTO3VCQUFDLE9BQU87Z0JBYWxCLGlCQUFpQjtzQkFEaEIsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBS3BDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVMUMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9NYXRFcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvby1tYXQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPVmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvdmFsaWRhdGlvbi9vLXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXJyb3JEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvZXJyb3ItZGF0YS50eXBlJztcbmltcG9ydCB7IE9NYXRFcnJvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9vLW1hdC1lcnJvci50eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9hc3luYyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZhbGlkYXRvcnNBbmRFcnJvcnNEYXRhLCBFcnJvcnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbHVtbiB9IGZyb20gJy4uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SID0gW1xuICAnb3JlcXVpcmVkOiByZXF1aXJlZCcsXG4gICdzaG93UGxhY2VIb2xkZXI6IHNob3ctcGxhY2Vob2xkZXInLFxuICAnb2xhYmVsOiBsYWJlbCcsXG4gICd1cGRhdGVSZWNvcmRPbkVkaXQ6IHVwZGF0ZS1yZWNvcmQtb24tZWRpdCcsXG4gICdzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBzaG93LW5vdGlmaWNhdGlvbi1vbi1lZGl0JyxcbiAgJ2VuYWJsZWQnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1IgPSBbXG4gICdlZGl0aW9uU3RhcnRlZCcsXG4gICdlZGl0aW9uQ2FuY2VsbGVkJyxcbiAgJ2VkaXRpb25Db21taXR0ZWQnLFxuICAnb25Qb3N0VXBkYXRlUmVjb3JkJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX0VESVRPUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1Jcbn0pXG5leHBvcnQgY2xhc3MgT0Jhc2VUYWJsZUNlbGxFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIENvbXBvbmVudFdpdGhWYWxpZGF0b3JzQW5kRXJyb3JzRGF0YSB7XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX3RhYmxlQ29sdW1uOiBPVGFibGVDb2x1bW47XG4gIHByb3RlY3RlZCBfdGFibGU6IE9UYWJsZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgX3Jvd0RhdGE6IGFueTtcblxuICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjb250cm9sQXJnczogYW55O1xuXG4gIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcblxuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgcHVibGljIGVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgaW5wdXRSZWY6IGFueTtcblxuICBwcm90ZWN0ZWQgdHlwZTogc3RyaW5nO1xuICByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogYW55O1xuICBjZWxsRWRpdG9ySWQ6IHN0cmluZztcblxuICBlcnJvcnNEYXRhOiBFcnJvckRhdGFbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAQ29udGVudENoaWxkcmVuKE9WYWxpZGF0b3JDb21wb25lbnQpXG4gIHZhbGlkYXRvckNoaWxkcmVuOiBRdWVyeUxpc3Q8T1ZhbGlkYXRvckNvbXBvbmVudD47XG4gIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5oYW5kbGVLZXl1cChldmVudCk7XG4gIH1cblxuICB0b29sdGlwUG9zaXRpb246IHN0cmluZyA9ICdiZWxvdyc7XG4gIHRvb2x0aXBTaG93RGVsYXk6IG51bWJlciA9IDUwMDtcbiAgdG9vbHRpcEhpZGVEZWxheTogbnVtYmVyID0gMDtcbiAgZXJyb3JPcHRpb25zOiBPTWF0RXJyb3JPcHRpb25zO1xuICBAVmlld0NoaWxkcmVuKE9NYXRFcnJvckRpcmVjdGl2ZSlcbiAgb01hdEVycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxPTWF0RXJyb3JEaXJlY3RpdmU+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFNuYWNrQmFyU2VydmljZT4oU25hY2tCYXJTZXJ2aWNlIGFzIFR5cGU8U25hY2tCYXJTZXJ2aWNlPik7XG4gICAgdGhpcy50YWJsZUNvbHVtbiA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9UYWJsZUNvbHVtbkNvbXBvbmVudD4oT1RhYmxlQ29sdW1uQ29tcG9uZW50IGFzIFR5cGU8T1RhYmxlQ29sdW1uQ29tcG9uZW50Pik7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T1RyYW5zbGF0ZVNlcnZpY2U+KE9UcmFuc2xhdGVTZXJ2aWNlIGFzIFR5cGU8T1RyYW5zbGF0ZVNlcnZpY2U+KTtcbiAgICB0aGlzLmNlbGxFZGl0b3JJZCA9IFV0aWwucmFuZG9tTnVtYmVyKCkudG9TdHJpbmcoMzYpO1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLmluamVjdG9yLmdldDxSZW5kZXJlcjI+KFJlbmRlcmVyMiBhcyBUeXBlPFJlbmRlcmVyMj4pO1xuICAgIHRoaXMuZXJyb3JPcHRpb25zID0gRXJyb3JzVXRpbHMuZ2V0RXJyb3JPcHRpb25zKHRoaXMuaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yc1N1YnNjcmlwdGlvbiA9IHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNlbGwgZWRpdG9yXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKCk7XG4gICAgdGhpcy5yZWdpc3RlckVkaXRvcigpO1xuICAgIHRoaXMuZWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qgb0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKCFvQ29sdW1uIHx8ICFvQ29sdW1uLmVkaXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXNjQ2xpY2tlZCA9IHRoaXMuY2hlY2tLZXkoZXZlbnQsICdFc2NhcGUnLCAyNyk7XG4gICAgY29uc3QgZW50ZXJDbGlja2VkID0gdGhpcy5jaGVja0tleShldmVudCwgJ0VudGVyJywgMTMpO1xuICAgIGNvbnN0IHRhYkNsaWNrZWQgPSB0aGlzLmNoZWNrS2V5KGV2ZW50LCAnVGFiJywgOSk7XG4gICAgaWYgKCFlc2NDbGlja2VkICYmICFlbnRlckNsaWNrZWQgJiYgIXRhYkNsaWNrZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXNjQ2xpY2tlZCkge1xuICAgICAgdGhpcy5vbkVzY0NsaWNrZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS5lZGl0aW5nQ2VsbCAmJiAhdGhpcy50YWJsZS5lZGl0aW5nQ2VsbC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVudGVyQ2xpY2tlZCB8fCB0YWJDbGlja2VkKSB7XG4gICAgICB0aGlzLmNvbW1pdEVkaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGtleTogc3RyaW5nLCBrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGV2ZW50LmtleSAmJiBldmVudC5rZXkgPT09IGtleSkgfHwgKGV2ZW50LmtleUNvZGUgJiYgZXZlbnQua2V5Q29kZSA9PT0ga2V5Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBmb3JtIGNvbnRyb2xcbiAgICovXG4gIGNyZWF0ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gdGhpcy5yZXNvbHZlQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICBjb25zdCBjZmcgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiAhdGhpcy5lbmFibGVkXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChjZmcsIHZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycyk7XG5cbiAgICB9XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5jZWxsRWRpdG9ySWQpKSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmNlbGxFZGl0b3JJZCwgdGhpcy5mb3JtQ29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBlZGl0b3JcbiAgICovXG4gIHJlZ2lzdGVyRWRpdG9yKCkge1xuICAgIGlmICh0aGlzLnJlZ2lzdGVySW5Db2x1bW4gJiYgIVV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGVDb2x1bW4uZWRpdG9yKSkge1xuICAgICAgdGhpcy50YWJsZUNvbHVtbi5yZWdpc3RlckVkaXRvcih0aGlzKTtcbiAgICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRhYmxlQ29sdW1uLnR5cGUpKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHRoaXMudGFibGVDb2x1bW4udHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNlbGwgZGF0YVxuICAgKiBAcmV0dXJucyBjZWxsIGRhdGFcbiAgICovXG4gIGdldENlbGxEYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXRpb24gd2l0aCBnaXZlbiB0aGUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgc3RhcnRFZGl0aW9uKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5yb3dEYXRhID0gZGF0YTtcbiAgICBpZiAoIXRoaXMuaXNTaWxlbnRDb250cm9sKCkpIHtcbiAgICAgIHRoaXMuZWRpdGlvblN0YXJ0ZWQuZW1pdCh0aGlzLl9yb3dEYXRhKTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBTZWxlY3RpbmcgdGV4dCBpZiB0aGUgdGVtcGxhdGUgaW5wdXQgZWxlbWVudCBoYXMgZGVmaW5lZCB0aGUgaWQ9Y2VsbEVkaXRvcklkXG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgKGlucHV0RWwgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0RWRpdGluZ1Jvd0NsYXNzKHRydWUpXG4gIH1cblxuICAvKipcbiAgICogRW5kcyBlZGl0aW9uIHdpdGggdGhlIGFiaWxpdHkgdG8gc2tpcCBvciBzYXZlIGNoYW5nZXNcbiAgICogQHBhcmFtIHNhdmVDaGFuZ2VzXG4gICAqL1xuICBlbmRFZGl0aW9uKHNhdmVDaGFuZ2VzOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb0NvbHVtbjogT0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKG9Db2x1bW4pIHtcbiAgICAgIGNvbnN0IHVwZGF0ZU9ic2VydmVyID0gdGhpcy50YWJsZS51cGRhdGVDZWxsRGF0YShvQ29sdW1uLCB0aGlzLl9yb3dEYXRhLCBzYXZlQ2hhbmdlcyk7XG4gICAgICBpZiAodXBkYXRlT2JzZXJ2ZXIpIHtcbiAgICAgICAgdXBkYXRlT2JzZXJ2ZXIuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5vblVwZGF0ZVN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmRhb1RhYmxlLnNldERhdGFBcnJheSh0aGlzLnRhYmxlLmRhb1RhYmxlLmRhdGEpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl0gPSB0aGlzLm9sZFZhbHVlO1xuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZS51cGRhdGVSZW5kZXJlZFJvd0RhdGEodGhpcy5fcm93RGF0YSk7XG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93RGlhbG9nRXJyb3IoZXJyb3IsICdNRVNTQUdFUy5FUlJPUl9VUERBVEUnKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDb21taXRzIGVkaXRpb25cbiAgICovXG4gIGNvbW1pdEVkaXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmludmFsaWQpIHtcbiAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLl9yb3dEYXRhW3RoaXMudGFibGVDb2x1bW5BdHRyXTtcbiAgICAgIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgIGlmICghdGhpcy5pc1NpbGVudENvbnRyb2woKSkge1xuICAgICAgICB0aGlzLmVuZEVkaXRpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuZWRpdGlvbkNvbW1pdHRlZC5lbWl0KHRoaXMuX3Jvd0RhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbigpOiBPVGFibGVDb2x1bW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbjtcbiAgfVxuXG4gIHNldCB0YWJsZUNvbHVtbihhcmc6IE9UYWJsZUNvbHVtbikge1xuICAgIHRoaXMuX3RhYmxlQ29sdW1uID0gYXJnO1xuICAgIGlmIChhcmcpIHtcbiAgICAgIHRoaXMuX3RhYmxlID0gYXJnLnRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbkF0dHIoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdGFibGVDb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbi5hdHRyO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0IHRhYmxlKGFyZzogT1RhYmxlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fdGFibGUgPSBhcmc7XG4gIH1cblxuICBnZXQgdGFibGUoKTogT1RhYmxlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gIH1cblxuICBnZXQgcm93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yb3dEYXRhO1xuICB9XG5cbiAgc2V0IHJvd0RhdGEoYXJnOiBhbnkpIHtcbiAgICB0aGlzLl9yb3dEYXRhID0gYXJnO1xuICAgIGNvbnN0IGNlbGxEYXRhID0gdGhpcy5nZXRDZWxsRGF0YSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY2VsbERhdGEpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdmFsaWRhdG9yc1xuICAgKiBAcmV0dXJucyB2YWxpZGF0b3JzXG4gICAqL1xuICByZXNvbHZlVmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbiAmJiB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbik7XG4gICAgICBFcnJvcnNVdGlscy5wdXNoVG9FcnJvcnNEYXRhKHRoaXMsIHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbkVycm9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9yZXF1aXJlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHJlc29sdmVBc3luY1ZhbGlkYXRvcnMoKTogQXN5bmNWYWxpZGF0b3JGbltdIHtcbiAgICBpZiAodGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gJiYgdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgRXJyb3JzVXRpbHMucHVzaFRvRXJyb3JzRGF0YSh0aGlzLCB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gfHwgW11cbiAgfVxuXG4gIGdldEFjdGl2ZU9FcnJvcnMoKSB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldEFjdGl2ZU9FcnJvcnModGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXJyb3JUZXh0KG9FcnJvcjogYW55KSB7XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4gJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IgJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IuZXJyb3JzRGF0YSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnRhYmxlQ29sdW1uLmVkaXRvci5lcnJvcnNEYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gb0Vycm9yKTtcbiAgICAgIHJldHVybiBlcnJvciA/IGVycm9yLnRleHQgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIEVycm9yc1V0aWxzLnVwZGF0ZUZvcm1Db250cm9sVmFsaWRhdG9ycyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3IgaGFzXG4gICAqIEBwYXJhbSBlcnJvclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGVycm9yXG4gICAqL1xuICBoYXNFcnJvcihlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmICh0aGlzLmhhc0Vycm9yRXhjbHVzaXZlKGVycm9yKSB8fCB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBoYXNTb21lRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yRXhjbHVzaXZlKGVycm9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvcnNPcmRlciA9IFsnbWF0RGF0ZXBpY2tlck1heCcsICdtYXREYXRlcGlja2VyTWluJywgJ21hdERhdGVwaWNrZXJGaWx0ZXInLCAnbWF0RGF0ZXBpY2tlclBhcnNlJywgJ3JlcXVpcmVkJ107XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnM7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGVycm9ycykpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBlcnJvcnNPcmRlci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGhhc0Vycm9yID0gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yc09yZGVyW2ldKTtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGhhc0Vycm9yID0gKGVycm9yc09yZGVyW2ldID09PSBlcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0Vycm9yO1xuICB9XG5cbiAgZ2V0RXJyb3JWYWx1ZShlcnJvcjogc3RyaW5nLCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSA/IHRoaXMuZm9ybUNvbnRyb2wuZ2V0RXJyb3IoZXJyb3IpW3Byb3BdID8/ICcnIDogJyc7XG4gIH1cblxuICBvbkVzY0NsaWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICB0aGlzLmVuZEVkaXRpb24oZmFsc2UpO1xuICAgICAgdGhpcy5lZGl0aW9uQ2FuY2VsbGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzU2lsZW50Q29udHJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQXJncyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbEFyZ3Muc2lsZW50O1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UGxhY2VIb2xkZXIgP1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLm9sYWJlbCB8fCB0aGlzLnRhYmxlQ29sdW1uID8gKHRoaXMudGFibGVDb2x1bW4udGl0bGUgfHwgdGhpcy50YWJsZUNvbHVtbkF0dHIpIDogdGhpcy50YWJsZUNvbHVtbkF0dHIpIDpcbiAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblVwZGF0ZVN1Y2Nlc3MocmVzOiBhbnkpIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm9uUG9zdFVwZGF0ZVJlY29yZCwgdGhpcy5fcm93RGF0YSk7XG4gICAgaWYgKHRoaXMuc2hvd05vdGlmaWNhdGlvbk9uRWRpdCkge1xuICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbignTUVTU0FHRVMuVVBEQVRFRCcsIHsgaWNvbjogJ2NoZWNrX2NpcmNsZScgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGVuYWJsZWQoYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGFyZztcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA/IHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCkgOiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sO1xuICB9XG5cbiAgc2V0RWRpdGluZ1Jvd0NsYXNzKGFkZENsYXNzOiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgY29uc3QgdGFibGVSb3dFbCA9IGlucHV0RWwuY2xvc2VzdCgndHInKTtcbiAgICAgIGlmICh0YWJsZVJvd0VsKSB7XG4gICAgICAgIGFkZENsYXNzID8gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0YWJsZVJvd0VsLCAnby10YWJsZS1lZGl0aW5nLXJvdycpIDpcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRhYmxlUm93RWwsICdvLXRhYmxlLWVkaXRpbmctcm93JylcbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaXRlRXJyb3IgPSB0aGlzLmVycm9yT3B0aW9ucy50eXBlID09PSBDb2Rlcy5PX01BVF9FUlJPUl9MSVRFO1xuICAgIHJldHVybiBsaXRlRXJyb3IgJiYgdGhpcy5oYXNTb21lRXJyb3IoKSA/IEVycm9yc1V0aWxzLmdldEVycm9yc1Rvb2x0aXBUZXh0KHRoaXMpIDogJyc7XG4gIH1cblxuICBnZXQgdG9vbHRpcENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldFRvb2x0aXBDbGFzc2VzKHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -83,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
83
83
  inputs: DEFAULT_INPUTS_O_BASE_TABLE_CELL_RENDERER
84
84
  }]
85
85
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtcmVuZGVyZXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9vLWJhc2UtdGFibGUtY2VsbC1yZW5kZXJlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxRQUFRLEVBQXNDLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUc7SUFDdkQsNkJBQTZCO0lBQzdCLGlDQUFpQztDQUNsQyxDQUFDO0FBTUYsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUGpDLGtCQUFhLEdBQStCLFFBQVEsQ0FBQztRQVExRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLFVBQVU7SUFFakIsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBS00sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQU9NLFdBQVcsQ0FBQyxTQUFjLEVBQUUsUUFBYztRQUMvQyxJQUFJLFdBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDckYsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0U7YUFBTTtZQUNMLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQWMsRUFBRSxRQUFhO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ25ILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFELFNBQVMsQ0FBQyxTQUFjLEVBQUUsUUFBYztRQUN0QyxJQUFJLE1BQU0sQ0FBQztRQUNYLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN6QixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtTQUNUO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFdBQW1CO1FBQzVDLE9BQU8scUJBQXFCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7bUhBcEdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsTUFBTSxFQUFFLHlDQUF5QztpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEluamVjdG9yLCBPbkluaXQsIFBpcGVUcmFuc2Zvcm0sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9UYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0JBU0VfVEFCTEVfQ0VMTF9SRU5ERVJFUiA9IFtcbiAgJ2ZpbHRlclNvdXJjZTogZmlsdGVyLXNvdXJjZScsXG4gICdmaWx0ZXJGdW5jdGlvbjogZmlsdGVyLWZ1bmN0aW9uJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19CQVNFX1RBQkxFX0NFTExfUkVOREVSRVJcbn0pXG5cbmV4cG9ydCBjbGFzcyBPQmFzZVRhYmxlQ2VsbFJlbmRlcmVyIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICBwdWJsaWMgdGVtcGxhdGVyZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyB0YWJsZUNvbHVtbjogT1RhYmxlQ29sdW1uO1xuICBwdWJsaWMgX2ZpbHRlclNvdXJjZTogJ3JlbmRlcicgfCAnZGF0YScgfCAnYm90aCcgPSAncmVuZGVyJztcbiAgcHVibGljIGZpbHRlckZ1bmN0aW9uOiAoY2VsbFZhbHVlOiBhbnksIHJvd1ZhbHVlOiBhbnksIHF1aWNrRmlsdGVyPzogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCB0eXBlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwaXBlQXJndW1lbnRzOiBhbnk7XG4gIHByb3RlY3RlZCBjb21wb25lbnRQaXBlOiBQaXBlVHJhbnNmb3JtO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnRhYmxlQ29sdW1uID0gdGhpcy5pbmplY3Rvci5nZXQoT1RhYmxlQ29sdW1uQ29tcG9uZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXJGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5maWx0ZXJGdW5jdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5yZWdpc3RlclJlbmRlcmVyKCk7XG4gIH1cblxuICBnZXQgdGFibGUoKTogT1RhYmxlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbi50YWJsZTtcbiAgfVxuXG4gIGdldCBjb2x1bW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbi5hdHRyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyByZW5kZXJlclxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUmVuZGVyZXIoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZUNvbHVtbi5yZWdpc3RlclJlbmRlcmVyKHRoaXMpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRhYmxlQ29sdW1uLnR5cGUpKSB7XG4gICAgICB0aGlzLnR5cGUgPSB0aGlzLnRhYmxlQ29sdW1uLnR5cGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpc3BsYXllZCB0YWJsZSBjZWxsIHZhbHVlXG4gICAqIEBwYXJhbSBjZWxsdmFsdWUgdGhlIGludGVybmFsIHRhYmxlIGNlbGwgdmFsdWVcbiAgICogQHBhcmFtIHJvd3ZhbHVlIHRoZSB0YWJsZSByb3cgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBnZXRDZWxsRGF0YShjZWxsdmFsdWU6IGFueSwgcm93dmFsdWU/OiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCBwYXJzZWRWYWx1ZTogc3RyaW5nO1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFBpcGUgJiYgdGhpcy5waXBlQXJndW1lbnRzICE9PSB1bmRlZmluZWQgJiYgY2VsbHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlZFZhbHVlID0gdGhpcy5jb21wb25lbnRQaXBlLnRyYW5zZm9ybShjZWxsdmFsdWUsIHRoaXMucGlwZUFyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZFZhbHVlID0gY2VsbHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9vbHRpcChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbERhdGEoY2VsbFZhbHVlLCByb3dWYWx1ZSk7XG4gIH1cblxuICBzZXQgZmlsdGVyU291cmNlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG93ZXJWYWwgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2ZpbHRlclNvdXJjZSA9IChsb3dlclZhbCA9PT0gJ3JlbmRlcicgfHwgbG93ZXJWYWwgPT09ICdkYXRhJyB8fCBsb3dlclZhbCA9PT0gJ2JvdGgnKSA/IGxvd2VyVmFsIDogJ3JlbmRlcic7XG4gIH1cblxuICBnZXQgZmlsdGVyU291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHZhbHVlcyB0byBmaWx0ZXJcbiAgICogQHBhcmFtIGNlbGxWYWx1ZVxuICAgKiBAcGFyYW0gW3Jvd1ZhbHVlXVxuICAgKiBAcmV0dXJucyBmaWx0ZXJcbiAgICovXG4gIGdldEZpbHRlcihjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU/OiBhbnkpOiBhbnlbXSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBzd2l0Y2ggKHRoaXMuZmlsdGVyU291cmNlKSB7XG4gICAgICBjYXNlICdyZW5kZXInOlxuICAgICAgICByZXN1bHQgPSBbdGhpcy5nZXRDZWxsRGF0YShjZWxsVmFsdWUsIHJvd1ZhbHVlKV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgIHJlc3VsdCA9IFtjZWxsVmFsdWVdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICByZXN1bHQgPSBbY2VsbFZhbHVlLCB0aGlzLmdldENlbGxEYXRhKGNlbGxWYWx1ZSwgcm93VmFsdWUpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmlsdGVyRXhwcmVzc2lvbihxdWlja0ZpbHRlcjogc3RyaW5nKTogRXhwcmVzc2lvbiB7XG4gICAgcmV0dXJuIEZpbHRlckV4cHJlc3Npb25VdGlscy5idWlsZEV4cHJlc3Npb25MaWtlKHRoaXMudGFibGVDb2x1bW4uYXR0ciwgcXVpY2tGaWx0ZXIpO1xuICB9XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtcmVuZGVyZXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9vLWJhc2UtdGFibGUtY2VsbC1yZW5kZXJlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxRQUFRLEVBQXNDLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUc7SUFDdkQsNkJBQTZCO0lBQzdCLGlDQUFpQztDQUNsQyxDQUFDO0FBTUYsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUGpDLGtCQUFhLEdBQStCLFFBQVEsQ0FBQztRQVExRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLFVBQVU7SUFFakIsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBS00sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQU9NLFdBQVcsQ0FBQyxTQUFjLEVBQUUsUUFBYztRQUMvQyxJQUFJLFdBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDckYsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0U7YUFBTTtZQUNMLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDekI7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQWMsRUFBRSxRQUFhO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLE1BQU0sSUFBSSxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ25ILENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFELFNBQVMsQ0FBQyxTQUFjLEVBQUUsUUFBYztRQUN0QyxJQUFJLE1BQU0sQ0FBQztRQUNYLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN6QixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtTQUNUO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFdBQW1CO1FBQzVDLE9BQU8scUJBQXFCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7bUhBcEdVLHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsTUFBTSxFQUFFLHlDQUF5QztpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBEaXJlY3RpdmUsIEluamVjdG9yLCBPbkluaXQsIFBpcGVUcmFuc2Zvcm0sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9UYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4cHJlc3Npb24gfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9leHByZXNzaW9uLnR5cGUnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fQkFTRV9UQUJMRV9DRUxMX1JFTkRFUkVSID0gW1xuICAnZmlsdGVyU291cmNlOiBmaWx0ZXItc291cmNlJyxcbiAgJ2ZpbHRlckZ1bmN0aW9uOiBmaWx0ZXItZnVuY3Rpb24nXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0JBU0VfVEFCTEVfQ0VMTF9SRU5ERVJFUlxufSlcblxuZXhwb3J0IGNsYXNzIE9CYXNlVGFibGVDZWxsUmVuZGVyZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZXJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHVibGljIHRhYmxlQ29sdW1uOiBPVGFibGVDb2x1bW47XG4gIHB1YmxpYyBfZmlsdGVyU291cmNlOiAncmVuZGVyJyB8ICdkYXRhJyB8ICdib3RoJyA9ICdyZW5kZXInO1xuICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSwgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIHR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIHBpcGVBcmd1bWVudHM6IGFueTtcbiAgcHJvdGVjdGVkIGNvbXBvbmVudFBpcGU6IFBpcGVUcmFuc2Zvcm07XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMudGFibGVDb2x1bW4gPSB0aGlzLmluamVjdG9yLmdldChPVGFibGVDb2x1bW5Db21wb25lbnQpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG5cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmZpbHRlckZ1bmN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmZpbHRlckZ1bmN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnJlZ2lzdGVyUmVuZGVyZXIoKTtcbiAgfVxuXG4gIGdldCB0YWJsZSgpOiBPVGFibGVDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29sdW1uLnRhYmxlO1xuICB9XG5cbiAgZ2V0IGNvbHVtbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ29sdW1uLmF0dHI7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHJlbmRlcmVyXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJSZW5kZXJlcigpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlQ29sdW1uLnJlZ2lzdGVyUmVuZGVyZXIodGhpcyk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnR5cGUpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGVDb2x1bW4udHlwZSkpIHtcbiAgICAgIHRoaXMudHlwZSA9IHRoaXMudGFibGVDb2x1bW4udHlwZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheWVkIHRhYmxlIGNlbGwgdmFsdWVcbiAgICogQHBhcmFtIGNlbGx2YWx1ZSB0aGUgaW50ZXJuYWwgdGFibGUgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gcm93dmFsdWUgdGhlIHRhYmxlIHJvdyB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGdldENlbGxEYXRhKGNlbGx2YWx1ZTogYW55LCByb3d2YWx1ZT86IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHBhcnNlZFZhbHVlOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UGlwZSAmJiB0aGlzLnBpcGVBcmd1bWVudHMgIT09IHVuZGVmaW5lZCAmJiBjZWxsdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyc2VkVmFsdWUgPSB0aGlzLmNvbXBvbmVudFBpcGUudHJhbnNmb3JtKGNlbGx2YWx1ZSwgdGhpcy5waXBlQXJndW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkVmFsdWUgPSBjZWxsdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUb29sdGlwKGNlbGxWYWx1ZTogYW55LCByb3dWYWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDZWxsRGF0YShjZWxsVmFsdWUsIHJvd1ZhbHVlKTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJTb3VyY2UodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb3dlclZhbCA9ICh2YWwgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fZmlsdGVyU291cmNlID0gKGxvd2VyVmFsID09PSAncmVuZGVyJyB8fCBsb3dlclZhbCA9PT0gJ2RhdGEnIHx8IGxvd2VyVmFsID09PSAnYm90aCcpID8gbG93ZXJWYWwgOiAncmVuZGVyJztcbiAgfVxuXG4gIGdldCBmaWx0ZXJTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgdmFsdWVzIHRvIGZpbHRlclxuICAgKiBAcGFyYW0gY2VsbFZhbHVlXG4gICAqIEBwYXJhbSBbcm93VmFsdWVdXG4gICAqIEByZXR1cm5zIGZpbHRlclxuICAgKi9cbiAgZ2V0RmlsdGVyKGNlbGxWYWx1ZTogYW55LCByb3dWYWx1ZT86IGFueSk6IGFueVtdIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHN3aXRjaCAodGhpcy5maWx0ZXJTb3VyY2UpIHtcbiAgICAgIGNhc2UgJ3JlbmRlcic6XG4gICAgICAgIHJlc3VsdCA9IFt0aGlzLmdldENlbGxEYXRhKGNlbGxWYWx1ZSwgcm93VmFsdWUpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRhJzpcbiAgICAgICAgcmVzdWx0ID0gW2NlbGxWYWx1ZV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgIHJlc3VsdCA9IFtjZWxsVmFsdWUsIHRoaXMuZ2V0Q2VsbERhdGEoY2VsbFZhbHVlLCByb3dWYWx1ZSldO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJFeHByZXNzaW9uKHF1aWNrRmlsdGVyOiBzdHJpbmcpOiBFeHByZXNzaW9uIHtcbiAgICByZXR1cm4gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkxpa2UodGhpcy50YWJsZUNvbHVtbi5hdHRyLCBxdWlja0ZpbHRlcik7XG4gIH1cbn1cbiJdfQ==
@@ -12,6 +12,7 @@ import { ServiceUtils } from '../../../../../util/service.utils';
12
12
  import { SQLTypes } from '../../../../../util/sqltypes';
13
13
  import { Util } from '../../../../../util/util';
14
14
  import { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class';
15
+ import { FactoryUtil } from '../../../../../util/factory.util';
15
16
  import * as i0 from "@angular/core";
16
17
  export const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_SERVICE = [
17
18
  'entity',
@@ -94,7 +95,7 @@ export class OTableCellRendererServiceComponent extends OBaseTableCellRenderer {
94
95
  filter[this.column] = cellvalue;
95
96
  }
96
97
  const queryArguments = this.getQueryArguments(filter);
97
- this.dataService[this.queryMethod](...this.dataService.queryArgumentAdapter.parseQueryParameters(queryArguments))
98
+ this.dataService[this.queryMethod](...this.dataService.requestArgumentAdapter.parseQueryParameters(queryArguments))
98
99
  .subscribe((resp) => {
99
100
  if (resp.isSuccessful()) {
100
101
  let respData;
@@ -146,7 +147,7 @@ export class OTableCellRendererServiceComponent extends OBaseTableCellRenderer {
146
147
  if (Util.isDefined(this.configureServiceArgs)) {
147
148
  configureServiceArgs = { ...configureServiceArgs, ...this.configureServiceArgs };
148
149
  }
149
- this.dataService = Util.configureService(configureServiceArgs);
150
+ this.dataService = FactoryUtil.configureService(configureServiceArgs);
150
151
  }
151
152
  getCellData(cellvalue, rowvalue) {
152
153
  return this.responseMap[cellvalue];
@@ -190,7 +191,7 @@ export class OTableCellRendererServiceComponent extends OBaseTableCellRenderer {
190
191
  observer.next();
191
192
  }
192
193
  const queryArguments = this.getQueryArguments({});
193
- this.dataService[this.queryMethod](...this.dataService.queryArgumentAdapter.parseQueryParameters(queryArguments))
194
+ this.dataService[this.queryMethod](...this.dataService.requestArgumentAdapter.parseQueryParameters(queryArguments))
194
195
  .subscribe((resp) => {
195
196
  if (resp.isSuccessful()) {
196
197
  let respData = [];
@@ -237,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
237
238
  type: ViewChild,
238
239
  args: ['templateref', { read: TemplateRef, static: true }]
239
240
  }], translate: [] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLXJlbmRlcmVyLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtcmVuZGVyZXIvc2VydmljZS9vLXRhYmxlLWNlbGwtcmVuZGVyZXItc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9zZXJ2aWNlL28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFxQixXQUFXLEVBQVEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWxGLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUdwRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFN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LE1BQU0sYUFDcEM7d0JBRVQsdUJBQXVCO3FCQUN4QjsrRkFNcUUsV0FBVztzQkFBaEYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBWW5ELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFR5cGUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVRyYW5zbGF0ZVBpcGVBcmd1bWVudCwgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZVNlcnZpY2VQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBPbnRpbWl6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9vbnRpbWl6ZS9vbnRpbWl6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9Db25maWd1cmVTZXJ2aWNlQXJncyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2NvbmZpZ3VyZS1zZXJ2aWNlLWFyZ3MudHlwZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBTUUxUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvc3FsdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vby1iYXNlLXRhYmxlLWNlbGwtcmVuZGVyZXIuY2xhc3MnO1xuXG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2Utc2VydmljZS5jbGFzcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX1JFTkRFUkVSX1NFUlZJQ0UgPSBbXG4gICdlbnRpdHknLFxuICAnc2VydmljZScsXG4gICdjb2x1bW5zJyxcbiAgJ3RyYW5zbGF0ZScsXG4gICd2YWx1ZUNvbHVtbjogdmFsdWUtY29sdW1uJyxcbiAgJ3ZhbHVlQ29sdW1uVHlwZTogdmFsdWUtY29sdW1uLXR5cGUnLFxuICAncGFyZW50S2V5czogcGFyZW50LWtleXMnLFxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG4gICd0cmFuc2xhdGVBcmdzRm46IHRyYW5zbGF0ZS1wYXJhbXMnLFxuICAvLyAgY29uZmlndXJlLXNlcnZpY2UtYXJncyBbT0NvbmZpZ3VyZVNlcnZpY2VBcmdzXTogQWxsb3dzIGNvbmZpZ3VyZSBzZXJ2aWNlIC5cbiAgJ2NvbmZpZ3VyZVNlcnZpY2VBcmdzOiBjb25maWd1cmUtc2VydmljZS1hcmdzJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NFTExfUkVOREVSRVJfU0VSVklDRSA9IFtcbiAgJ29uRGF0YUxvYWRlZCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlLmNvbXBvbmVudC5odG1sJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfUkVOREVSRVJfU0VSVklDRSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9TRVJWSUNFLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gU2VydmljZSByZW5kZXJlciBtdXN0IGhhdmUgaXRzIG93biBzZXJ2aWNlIGluc3RhbmNlIGluIG9yZGVyIHRvIGF2b2lkIG92ZXJyaWRpbmcgdGFibGUgc2VydmljZSBjb25maWd1cmF0aW9uXG4gICAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXJcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVDZWxsUmVuZGVyZXJTZXJ2aWNlQ29tcG9uZW50IGV4dGVuZHMgT0Jhc2VUYWJsZUNlbGxSZW5kZXJlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc3RhdGljIERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9TRVJWSUNFID0gREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX1JFTkRFUkVSX1NFUlZJQ0U7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHB1YmxpYyByb3dEYXRhOiBhbnk7XG4gIHB1YmxpYyBjZWxsVmFsdWVzID0gW107XG4gIHB1YmxpYyByZW5kZXJWYWx1ZTogYW55O1xuICBwdWJsaWMgcmVzcG9uc2VNYXAgPSB7fTtcblxuICAvKiBJbnB1dHMgKi9cbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2VydmljZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY29sdW1uczogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmFsdWVDb2x1bW46IHN0cmluZztcbiAgcHVibGljIHZhbHVlQ29sdW1uVHlwZTogc3RyaW5nID0gQ29kZXMuVFlQRV9JTlQ7XG4gIHByb3RlY3RlZCBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBxdWVyeU1ldGhvZDogc3RyaW5nID0gQ29kZXMuUVVFUllfTUVUSE9EO1xuICBwcm90ZWN0ZWQgc2VydmljZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3M7XG5cbiAgLyogT3V0cHV0cyAqL1xuICBwdWJsaWMgb25EYXRhTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyogSW50ZXJuYWwgdmFyaWFibGVzICovXG4gIHByb3RlY3RlZCBjb2xBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCYXNlU2VydmljZTxTZXJ2aWNlUmVzcG9uc2U+O1xuICBwcm90ZWN0ZWQgX3BLZXlzRXF1aXYgPSB7fTtcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG5cbiAgcHVibGljIHRyYW5zbGF0ZUFyZ3NGbjogKHJvd0RhdGE6IGFueSkgPT4gYW55W107XG4gIHByb3RlY3RlZCBjb21wb25lbnRQaXBlOiBPVHJhbnNsYXRlUGlwZTtcbiAgcHJvdGVjdGVkIHBpcGVBcmd1bWVudHM6IElUcmFuc2xhdGVQaXBlQXJndW1lbnQgPSB7fTtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXRwaW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy50YWJsZUNvbHVtbi50eXBlID0gJ3NlcnZpY2UnO1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldDxEaWFsb2dTZXJ2aWNlPihEaWFsb2dTZXJ2aWNlIGFzIFR5cGU8RGlhbG9nU2VydmljZT4pO1xuICAgIHRoaXMuc2V0Q29tcG9uZW50UGlwZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGlmICh0aGlzLnRhYmxlKSB7XG4gICAgICBjb25zdCBvQ29sOiBPQ29sdW1uID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgIG9Db2wuZGVmaW5pdGlvbi5jb250ZW50QWxpZ24gPSBvQ29sLmRlZmluaXRpb24uY29udGVudEFsaWduID8gb0NvbC5kZWZpbml0aW9uLmNvbnRlbnRBbGlnbiA6ICdzdGFydCc7XG4gICAgfVxuXG4gICAgdGhpcy5jb2xBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLmNvbHVtbnMsIHRydWUpO1xuICAgIGNvbnN0IHBrQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5wYXJlbnRLZXlzKTtcbiAgICB0aGlzLl9wS2V5c0VxdWl2ID0gVXRpbC5wYXJzZVBhcmVudEtleXNFcXVpdmFsZW5jZXMocGtBcnJheSk7XG4gICAgdGhpcy5jb25maWd1cmVTZXJ2aWNlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sLmVkaXRvcikpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXRwaW9ucy5hZGQob0NvbC5lZGl0b3Iub25Qb3N0VXBkYXRlUmVjb3JkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnlEYXRhKGRhdGFbdGhpcy50YWJsZUNvbHVtbi5hdHRyXSwgZGF0YSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcml0cGlvbnMpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXRwaW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXREZXNjcmlwdGlvblZhbHVlKGNlbGx2YWx1ZTogYW55LCByb3dWYWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2VsbHZhbHVlKSAmJiB0aGlzLmNlbGxWYWx1ZXMuaW5kZXhPZihjZWxsdmFsdWUpID09PSAtMSkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoY2VsbHZhbHVlLCByb3dWYWx1ZSk7XG4gICAgICB0aGlzLmNlbGxWYWx1ZXMucHVzaChjZWxsdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgcXVlcnlEYXRhKGNlbGx2YWx1ZSwgcGFyZW50SXRlbT86IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSB8fCAhKHRoaXMucXVlcnlNZXRob2QgaW4gdGhpcy5kYXRhU2VydmljZSkgfHwgIXRoaXMuZW50aXR5KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugbm90IHByb3Blcmx5IGNvbmZpZ3VyZWQhIGFib3J0aW5nIHF1ZXJ5Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlciA9IFNlcnZpY2VVdGlscy5nZXRGaWx0ZXJVc2luZ1BhcmVudEtleXMocGFyZW50SXRlbSwgdGhpcy5fcEtleXNFcXVpdik7XG4gICAgY29uc3QgdGFibGVDb2xBbGlhcyA9IE9iamVjdC5rZXlzKHRoaXMuX3BLZXlzRXF1aXYpLmZpbmQoa2V5ID0+IHRoaXMuX3BLZXlzRXF1aXZba2V5XSA9PT0gdGhpcy5jb2x1bW4pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0YWJsZUNvbEFsaWFzKSkge1xuICAgICAgaWYgKCFmaWx0ZXJbdGFibGVDb2xBbGlhc10pIHtcbiAgICAgICAgZmlsdGVyW3RhYmxlQ29sQWxpYXNdID0gY2VsbHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJbdGhpcy5jb2x1bW5dID0gY2VsbHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeUFyZ3VtZW50cyA9IHRoaXMuZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyKTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlW3RoaXMucXVlcnlNZXRob2RdKC4uLnRoaXMuZGF0YVNlcnZpY2UucXVlcnlBcmd1bWVudEFkYXB0ZXIucGFyc2VRdWVyeVBhcmFtZXRlcnMocXVlcnlBcmd1bWVudHMpKVxuICAgICAgLnN1YnNjcmliZSgocmVzcDogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwLmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICAgICAgbGV0IHJlc3BEYXRhO1xuICAgICAgICAgIGlmIChVdGlsLmlzQXJyYXkocmVzcC5kYXRhKSkge1xuICAgICAgICAgICAgcmVzcERhdGEgPSByZXNwLmRhdGFbMF07XG4gICAgICAgICAgfSBlbHNlIGlmIChVdGlsLmlzT2JqZWN0KHJlc3AuZGF0YSkgJiYgT2JqZWN0LmtleXMocmVzcC5kYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXNwRGF0YSA9IHJlc3AuZGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnQgaGFzIHJlY2VpdmVkIG5vdCBzdXBwb3J0ZWQgc2VydmljZSBkYXRhLiBTdXBwb3J0ZWQgZGF0YSBhcmUgQXJyYXkgb3IgT2JqZWN0Jyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3BEYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zZU1hcFtjZWxsdmFsdWVdID0gcmVzcERhdGFbdGhpcy52YWx1ZUNvbHVtbl07XG4gICAgICAgICAgICB0aGlzLm9uRGF0YUxvYWRlZC5lbWl0KHRoaXMucmVzcG9uc2VNYXBbY2VsbHZhbHVlXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIGlmIChlcnIgJiYgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWxlcnQoJ0VSUk9SJywgZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWxlcnQoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX1FVRVJZJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiB7fSk6IGFueSB7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSB0aGlzLmdldFNxbFR5cGVzRm9yRmlsdGVyKGZpbHRlcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICBjb2x1bW5zOiB0aGlzLmNvbEFycmF5LFxuICAgICAgZW50aXR5OiB0aGlzLmVudGl0eSxcbiAgICAgIHNxbFR5cGVzOiBzcWxUeXBlc1xuICAgIH07XG4gIH1cblxuICBnZXRTcWxUeXBlc0ZvckZpbHRlcihmaWx0ZXI6IE9iamVjdCkge1xuICAgIGNvbnN0IHNxbFR5cGUgPSB7fTtcbiAgICBjb25zdCB0YWJsZVNxbFR5cGVzID0gdGhpcy50YWJsZS5nZXRTcWxUeXBlcygpO1xuXG4gICAgT2JqZWN0LmtleXMoZmlsdGVyKS5mb3JFYWNoKGZpbHRlcktleSA9PiB7XG4gICAgICBjb25zdCBwS2V5RXF1aXYgPSBPYmplY3Qua2V5cyh0aGlzLl9wS2V5c0VxdWl2KS5maW5kKGtleUVxdWl2ID0+IGtleUVxdWl2ID09PSBmaWx0ZXJLZXkpO1xuICAgICAgY29uc3Qga2V5RXF1aXYgPSBVdGlsLmlzRGVmaW5lZChwS2V5RXF1aXYpID8gdGhpcy5fcEtleXNFcXVpdltwS2V5RXF1aXZdIDogZmlsdGVyS2V5O1xuICAgICAgc3FsVHlwZVtmaWx0ZXJLZXldID0gdGFibGVTcWxUeXBlc1trZXlFcXVpdl1cbiAgICB9KTtcblxuICAgIHJldHVybiBzcWxUeXBlO1xuICB9XG4gIHB1YmxpYyBjb25maWd1cmVTZXJ2aWNlKCk6IHZvaWQge1xuICAgIGxldCBjb25maWd1cmVTZXJ2aWNlQXJnczogT0NvbmZpZ3VyZVNlcnZpY2VBcmdzID0geyBpbmplY3RvcjogdGhpcy5pbmplY3RvciwgYmFzZVNlcnZpY2U6IE9udGltaXplU2VydmljZSwgZW50aXR5OiB0aGlzLmVudGl0eSwgc2VydmljZTogdGhpcy5zZXJ2aWNlLCBzZXJ2aWNlVHlwZTogdGhpcy5zZXJ2aWNlVHlwZSB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuY29uZmlndXJlU2VydmljZUFyZ3MpKSB7XG4gICAgICBjb25maWd1cmVTZXJ2aWNlQXJncyA9IHsgLi4uY29uZmlndXJlU2VydmljZUFyZ3MsIC4uLnRoaXMuY29uZmlndXJlU2VydmljZUFyZ3MgfTtcbiAgICB9XG4gICAgdGhpcy5kYXRhU2VydmljZSA9IFV0aWwuY29uZmlndXJlU2VydmljZShjb25maWd1cmVTZXJ2aWNlQXJncyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlOiBhbnksIHJvd3ZhbHVlPzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZU1hcFtjZWxsdmFsdWVdO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlckV4cHJlc3Npb24ocXVpY2tGaWx0ZXI6IHN0cmluZyk6IEV4cHJlc3Npb24ge1xuICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb247XG4gICAgbGV0IGNhY2hlVmFsdWUgPSBPYmplY3Qua2V5cyh0aGlzLnJlc3BvbnNlTWFwKS5maW5kKGtleSA9PiBVdGlsLm5vcm1hbGl6ZVN0cmluZyh0aGlzLnJlc3BvbnNlTWFwW2tleV0pLmluZGV4T2YoVXRpbC5ub3JtYWxpemVTdHJpbmcocXVpY2tGaWx0ZXIpKSAhPT0gLTEpO1xuICAgIGlmIChjYWNoZVZhbHVlKSB7XG4gICAgICBjYWNoZVZhbHVlID0gdGhpcy5wYXJzZUJ5VmFsdWVDb2x1bW5UeXBlKGNhY2hlVmFsdWUpO1xuICAgICAgcmVzdWx0ID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkVxdWFscyh0aGlzLmNvbHVtbiwgU1FMVHlwZXMucGFyc2VVc2luZ1NRTFR5cGUoY2FjaGVWYWx1ZSwgU1FMVHlwZXMuZ2V0U1FMVHlwZUtleShvQ29sLnNxbFR5cGUpKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50UGlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFBpcGUgPSBuZXcgT1RyYW5zbGF0ZVBpcGUodGhpcy5pbmplY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgcmVzcG9uc2VWYWx1ZShjZWxsdmFsdWU6IGFueSwgcm93dmFsdWU/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkge1xuICAgICAgdGhpcy5waXBlQXJndW1lbnRzID0gdGhpcy50cmFuc2xhdGVBcmdzRm4gPyB7IHZhbHVlczogdGhpcy50cmFuc2xhdGVBcmdzRm4ocm93dmFsdWUpIH0gOiB7fTtcbiAgICAgIHJldHVybiBzdXBlci5nZXRDZWxsRGF0YShjZWxsdmFsdWUsIHJvd3ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNlbGx2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VCeVZhbHVlQ29sdW1uVHlwZSh2YWw6IGFueSkge1xuICAgIGxldCB2YWx1ZSA9IHZhbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQ29sdW1uVHlwZSA9PT0gQ29kZXMuVFlQRV9JTlQpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgdmFsdWUgPSBwYXJzZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBRdWVyeWluZyBhbGwgZW50aXR5IHJlY29yZHMgdG8gaGF2ZSB0aGUgcmVzcG9uc2VNYXAgZnVsbHkgZmlsbGVkICovXG4gIHF1ZXJ5QWxsRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0YVNlcnZpY2UgfHwgISh0aGlzLnF1ZXJ5TWV0aG9kIGluIHRoaXMuZGF0YVNlcnZpY2UpIHx8ICF0aGlzLmVudGl0eSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugbm90IHByb3Blcmx5IGNvbmZpZ3VyZWQhIGFib3J0aW5nIHF1ZXJ5Jyk7XG4gICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSB0aGlzLmdldFF1ZXJ5QXJndW1lbnRzKHt9KTtcblxuICAgICAgdGhpcy5kYXRhU2VydmljZVt0aGlzLnF1ZXJ5TWV0aG9kXSguLi50aGlzLmRhdGFTZXJ2aWNlLnF1ZXJ5QXJndW1lbnRBZGFwdGVyLnBhcnNlUXVlcnlQYXJhbWV0ZXJzKHF1ZXJ5QXJndW1lbnRzKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcDogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3AuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgICAgIGxldCByZXNwRGF0YSA9IFtdO1xuICAgICAgICAgICAgaWYgKFV0aWwuaXNBcnJheShyZXNwLmRhdGEpKSB7XG4gICAgICAgICAgICAgIHJlc3BEYXRhID0gcmVzcC5kYXRhO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChVdGlsLmlzT2JqZWN0KHJlc3AuZGF0YSkgJiYgT2JqZWN0LmtleXMocmVzcC5kYXRhKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHJlc3BEYXRhID0gW3Jlc3AuZGF0YV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbXBvbmVudCBoYXMgcmVjZWl2ZWQgbm90IHN1cHBvcnRlZCBzZXJ2aWNlIGRhdGEuIFN1cHBvcnRlZCBkYXRhIGFyZSBBcnJheSBvciBPYmplY3QnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzcERhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGl0ZW1bdGhpcy5jb2x1bW5dKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2VsbFZhbHVlcy5wdXNoKGl0ZW1bdGhpcy5jb2x1bW5dKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlTWFwW2l0ZW1bdGhpcy5jb2x1bW5dXSA9IGl0ZW1bdGhpcy52YWx1ZUNvbHVtbl07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFMb2FkZWQuZW1pdCh0aGlzLnJlc3BvbnNlTWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlcmVmIGxldC1jZWxsdmFsdWU9XCJjZWxsdmFsdWVcIiBsZXQtcm93dmFsdWU9XCJyb3d2YWx1ZVwiPlxuICB7eyBnZXREZXNjcmlwdGlvblZhbHVlKGNlbGx2YWx1ZSwgcm93dmFsdWUpIH19e3sgcmVzcG9uc2VWYWx1ZShyZXNwb25zZU1hcFtjZWxsdmFsdWVdKSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLXJlbmRlcmVyLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtcmVuZGVyZXIvc2VydmljZS9vLXRhYmxlLWNlbGwtcmVuZGVyZXItc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9zZXJ2aWNlL28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFxQixXQUFXLEVBQVEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWxGLE9BQU8sRUFBMEIsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUdwRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFN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QUVqQyw0Q0FBNEMsV0FDM0MsNkNBQTZDLG1CQUNyQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUVULHVCQUF1QjtxQkFDeEI7K0ZBTXFFLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVluRCxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBTZXJ2aWNlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbnRlcmZhY2VzL3NlcnZpY2UtcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElUcmFuc2xhdGVQaXBlQXJndW1lbnQsIE9UcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcGlwZXMvby10cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvb250aW1pemUvb250aW1pemUuc2VydmljZSc7XG5pbXBvcnQgeyBPQ29uZmlndXJlU2VydmljZUFyZ3MgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9jb25maWd1cmUtc2VydmljZS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4cHJlc3Npb24udHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvblV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9maWx0ZXItZXhwcmVzc2lvbi51dGlscyc7XG5pbXBvcnQgeyBTZXJ2aWNlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3NlcnZpY2UudXRpbHMnO1xuaW1wb3J0IHsgU1FMVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3NxbHR5cGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Jhc2VUYWJsZUNlbGxSZW5kZXJlciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLXJlbmRlcmVyLmNsYXNzJztcblxuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgRmFjdG9yeVV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2ZhY3RvcnkudXRpbCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX1JFTkRFUkVSX1NFUlZJQ0UgPSBbXG4gICdlbnRpdHknLFxuICAnc2VydmljZScsXG4gICdjb2x1bW5zJyxcbiAgJ3RyYW5zbGF0ZScsXG4gICd2YWx1ZUNvbHVtbjogdmFsdWUtY29sdW1uJyxcbiAgJ3ZhbHVlQ29sdW1uVHlwZTogdmFsdWUtY29sdW1uLXR5cGUnLFxuICAncGFyZW50S2V5czogcGFyZW50LWtleXMnLFxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG4gICd0cmFuc2xhdGVBcmdzRm46IHRyYW5zbGF0ZS1wYXJhbXMnLFxuICAvLyAgY29uZmlndXJlLXNlcnZpY2UtYXJncyBbT0NvbmZpZ3VyZVNlcnZpY2VBcmdzXTogQWxsb3dzIGNvbmZpZ3VyZSBzZXJ2aWNlIC5cbiAgJ2NvbmZpZ3VyZVNlcnZpY2VBcmdzOiBjb25maWd1cmUtc2VydmljZS1hcmdzJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NFTExfUkVOREVSRVJfU0VSVklDRSA9IFtcbiAgJ29uRGF0YUxvYWRlZCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY2VsbC1yZW5kZXJlci1zZXJ2aWNlLmNvbXBvbmVudC5odG1sJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfUkVOREVSRVJfU0VSVklDRSxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9TRVJWSUNFLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gU2VydmljZSByZW5kZXJlciBtdXN0IGhhdmUgaXRzIG93biBzZXJ2aWNlIGluc3RhbmNlIGluIG9yZGVyIHRvIGF2b2lkIG92ZXJyaWRpbmcgdGFibGUgc2VydmljZSBjb25maWd1cmF0aW9uXG4gICAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXJcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVDZWxsUmVuZGVyZXJTZXJ2aWNlQ29tcG9uZW50IGV4dGVuZHMgT0Jhc2VUYWJsZUNlbGxSZW5kZXJlciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc3RhdGljIERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9TRVJWSUNFID0gREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX1JFTkRFUkVSX1NFUlZJQ0U7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHB1YmxpYyByb3dEYXRhOiBhbnk7XG4gIHB1YmxpYyBjZWxsVmFsdWVzID0gW107XG4gIHB1YmxpYyByZW5kZXJWYWx1ZTogYW55O1xuICBwdWJsaWMgcmVzcG9uc2VNYXAgPSB7fTtcblxuICAvKiBJbnB1dHMgKi9cbiAgcHJvdGVjdGVkIGVudGl0eTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2VydmljZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgY29sdW1uczogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmFsdWVDb2x1bW46IHN0cmluZztcbiAgcHVibGljIHZhbHVlQ29sdW1uVHlwZTogc3RyaW5nID0gQ29kZXMuVFlQRV9JTlQ7XG4gIHByb3RlY3RlZCBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBxdWVyeU1ldGhvZDogc3RyaW5nID0gQ29kZXMuUVVFUllfTUVUSE9EO1xuICBwcm90ZWN0ZWQgc2VydmljZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3M7XG5cbiAgLyogT3V0cHV0cyAqL1xuICBwdWJsaWMgb25EYXRhTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyogSW50ZXJuYWwgdmFyaWFibGVzICovXG4gIHByb3RlY3RlZCBjb2xBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCYXNlU2VydmljZTxTZXJ2aWNlUmVzcG9uc2U+O1xuICBwcm90ZWN0ZWQgX3BLZXlzRXF1aXYgPSB7fTtcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG5cbiAgcHVibGljIHRyYW5zbGF0ZUFyZ3NGbjogKHJvd0RhdGE6IGFueSkgPT4gYW55W107XG4gIHByb3RlY3RlZCBjb21wb25lbnRQaXBlOiBPVHJhbnNsYXRlUGlwZTtcbiAgcHJvdGVjdGVkIHBpcGVBcmd1bWVudHM6IElUcmFuc2xhdGVQaXBlQXJndW1lbnQgPSB7fTtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXRwaW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy50YWJsZUNvbHVtbi50eXBlID0gJ3NlcnZpY2UnO1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldDxEaWFsb2dTZXJ2aWNlPihEaWFsb2dTZXJ2aWNlIGFzIFR5cGU8RGlhbG9nU2VydmljZT4pO1xuICAgIHRoaXMuc2V0Q29tcG9uZW50UGlwZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGlmICh0aGlzLnRhYmxlKSB7XG4gICAgICBjb25zdCBvQ29sOiBPQ29sdW1uID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgIG9Db2wuZGVmaW5pdGlvbi5jb250ZW50QWxpZ24gPSBvQ29sLmRlZmluaXRpb24uY29udGVudEFsaWduID8gb0NvbC5kZWZpbml0aW9uLmNvbnRlbnRBbGlnbiA6ICdzdGFydCc7XG4gICAgfVxuXG4gICAgdGhpcy5jb2xBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLmNvbHVtbnMsIHRydWUpO1xuICAgIGNvbnN0IHBrQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5wYXJlbnRLZXlzKTtcbiAgICB0aGlzLl9wS2V5c0VxdWl2ID0gVXRpbC5wYXJzZVBhcmVudEtleXNFcXVpdmFsZW5jZXMocGtBcnJheSk7XG4gICAgdGhpcy5jb25maWd1cmVTZXJ2aWNlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sLmVkaXRvcikpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXRwaW9ucy5hZGQob0NvbC5lZGl0b3Iub25Qb3N0VXBkYXRlUmVjb3JkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucXVlcnlEYXRhKGRhdGFbdGhpcy50YWJsZUNvbHVtbi5hdHRyXSwgZGF0YSk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcml0cGlvbnMpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXRwaW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXREZXNjcmlwdGlvblZhbHVlKGNlbGx2YWx1ZTogYW55LCByb3dWYWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY2VsbHZhbHVlKSAmJiB0aGlzLmNlbGxWYWx1ZXMuaW5kZXhPZihjZWxsdmFsdWUpID09PSAtMSkge1xuICAgICAgdGhpcy5xdWVyeURhdGEoY2VsbHZhbHVlLCByb3dWYWx1ZSk7XG4gICAgICB0aGlzLmNlbGxWYWx1ZXMucHVzaChjZWxsdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgcXVlcnlEYXRhKGNlbGx2YWx1ZSwgcGFyZW50SXRlbT86IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kYXRhU2VydmljZSB8fCAhKHRoaXMucXVlcnlNZXRob2QgaW4gdGhpcy5kYXRhU2VydmljZSkgfHwgIXRoaXMuZW50aXR5KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugbm90IHByb3Blcmx5IGNvbmZpZ3VyZWQhIGFib3J0aW5nIHF1ZXJ5Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlciA9IFNlcnZpY2VVdGlscy5nZXRGaWx0ZXJVc2luZ1BhcmVudEtleXMocGFyZW50SXRlbSwgdGhpcy5fcEtleXNFcXVpdik7XG4gICAgY29uc3QgdGFibGVDb2xBbGlhcyA9IE9iamVjdC5rZXlzKHRoaXMuX3BLZXlzRXF1aXYpLmZpbmQoa2V5ID0+IHRoaXMuX3BLZXlzRXF1aXZba2V5XSA9PT0gdGhpcy5jb2x1bW4pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0YWJsZUNvbEFsaWFzKSkge1xuICAgICAgaWYgKCFmaWx0ZXJbdGFibGVDb2xBbGlhc10pIHtcbiAgICAgICAgZmlsdGVyW3RhYmxlQ29sQWxpYXNdID0gY2VsbHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJbdGhpcy5jb2x1bW5dID0gY2VsbHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeUFyZ3VtZW50cyA9IHRoaXMuZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyKTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlW3RoaXMucXVlcnlNZXRob2RdKC4uLnRoaXMuZGF0YVNlcnZpY2UucmVxdWVzdEFyZ3VtZW50QWRhcHRlci5wYXJzZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeUFyZ3VtZW50cykpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3AuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgICBsZXQgcmVzcERhdGE7XG4gICAgICAgICAgaWYgKFV0aWwuaXNBcnJheShyZXNwLmRhdGEpKSB7XG4gICAgICAgICAgICByZXNwRGF0YSA9IHJlc3AuZGF0YVswXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKFV0aWwuaXNPYmplY3QocmVzcC5kYXRhKSAmJiBPYmplY3Qua2V5cyhyZXNwLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJlc3BEYXRhID0gcmVzcC5kYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvbXBvbmVudCBoYXMgcmVjZWl2ZWQgbm90IHN1cHBvcnRlZCBzZXJ2aWNlIGRhdGEuIFN1cHBvcnRlZCBkYXRhIGFyZSBBcnJheSBvciBPYmplY3QnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQocmVzcERhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlTWFwW2NlbGx2YWx1ZV0gPSByZXNwRGF0YVt0aGlzLnZhbHVlQ29sdW1uXTtcbiAgICAgICAgICAgIHRoaXMub25EYXRhTG9hZGVkLmVtaXQodGhpcy5yZXNwb25zZU1hcFtjZWxsdmFsdWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgaWYgKGVyciAmJiB0eXBlb2YgZXJyICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hbGVydCgnRVJST1InLCBlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hbGVydCgnRVJST1InLCAnTUVTU0FHRVMuRVJST1JfUVVFUlknKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBnZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXI6IHt9KTogYW55IHtcbiAgICBjb25zdCBzcWxUeXBlcyA9IHRoaXMuZ2V0U3FsVHlwZXNGb3JGaWx0ZXIoZmlsdGVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sQXJyYXksXG4gICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxuICAgICAgc3FsVHlwZXM6IHNxbFR5cGVzXG4gICAgfTtcbiAgfVxuXG4gIGdldFNxbFR5cGVzRm9yRmlsdGVyKGZpbHRlcjogT2JqZWN0KSB7XG4gICAgY29uc3Qgc3FsVHlwZSA9IHt9O1xuICAgIGNvbnN0IHRhYmxlU3FsVHlwZXMgPSB0aGlzLnRhYmxlLmdldFNxbFR5cGVzKCk7XG5cbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLmZvckVhY2goZmlsdGVyS2V5ID0+IHtcbiAgICAgIGNvbnN0IHBLZXlFcXVpdiA9IE9iamVjdC5rZXlzKHRoaXMuX3BLZXlzRXF1aXYpLmZpbmQoa2V5RXF1aXYgPT4ga2V5RXF1aXYgPT09IGZpbHRlcktleSk7XG4gICAgICBjb25zdCBrZXlFcXVpdiA9IFV0aWwuaXNEZWZpbmVkKHBLZXlFcXVpdikgPyB0aGlzLl9wS2V5c0VxdWl2W3BLZXlFcXVpdl0gOiBmaWx0ZXJLZXk7XG4gICAgICBzcWxUeXBlW2ZpbHRlcktleV0gPSB0YWJsZVNxbFR5cGVzW2tleUVxdWl2XVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNxbFR5cGU7XG4gIH1cbiAgcHVibGljIGNvbmZpZ3VyZVNlcnZpY2UoKTogdm9pZCB7XG4gICAgbGV0IGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3MgPSB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBiYXNlU2VydmljZTogT250aW1pemVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncykpIHtcbiAgICAgIGNvbmZpZ3VyZVNlcnZpY2VBcmdzID0geyAuLi5jb25maWd1cmVTZXJ2aWNlQXJncywgLi4udGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncyB9O1xuICAgIH1cbiAgICB0aGlzLmRhdGFTZXJ2aWNlID0gRmFjdG9yeVV0aWwuY29uZmlndXJlU2VydmljZShjb25maWd1cmVTZXJ2aWNlQXJncyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlOiBhbnksIHJvd3ZhbHVlPzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZU1hcFtjZWxsdmFsdWVdO1xuICB9XG5cbiAgcHVibGljIGdldEZpbHRlckV4cHJlc3Npb24ocXVpY2tGaWx0ZXI6IHN0cmluZyk6IEV4cHJlc3Npb24ge1xuICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIGxldCByZXN1bHQ6IEV4cHJlc3Npb247XG4gICAgbGV0IGNhY2hlVmFsdWUgPSBPYmplY3Qua2V5cyh0aGlzLnJlc3BvbnNlTWFwKS5maW5kKGtleSA9PiBVdGlsLm5vcm1hbGl6ZVN0cmluZyh0aGlzLnJlc3BvbnNlTWFwW2tleV0pLmluZGV4T2YoVXRpbC5ub3JtYWxpemVTdHJpbmcocXVpY2tGaWx0ZXIpKSAhPT0gLTEpO1xuICAgIGlmIChjYWNoZVZhbHVlKSB7XG4gICAgICBjYWNoZVZhbHVlID0gdGhpcy5wYXJzZUJ5VmFsdWVDb2x1bW5UeXBlKGNhY2hlVmFsdWUpO1xuICAgICAgcmVzdWx0ID0gRmlsdGVyRXhwcmVzc2lvblV0aWxzLmJ1aWxkRXhwcmVzc2lvbkVxdWFscyh0aGlzLmNvbHVtbiwgU1FMVHlwZXMucGFyc2VVc2luZ1NRTFR5cGUoY2FjaGVWYWx1ZSwgU1FMVHlwZXMuZ2V0U1FMVHlwZUtleShvQ29sLnNxbFR5cGUpKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29tcG9uZW50UGlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFBpcGUgPSBuZXcgT1RyYW5zbGF0ZVBpcGUodGhpcy5pbmplY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgcmVzcG9uc2VWYWx1ZShjZWxsdmFsdWU6IGFueSwgcm93dmFsdWU/OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkge1xuICAgICAgdGhpcy5waXBlQXJndW1lbnRzID0gdGhpcy50cmFuc2xhdGVBcmdzRm4gPyB7IHZhbHVlczogdGhpcy50cmFuc2xhdGVBcmdzRm4ocm93dmFsdWUpIH0gOiB7fTtcbiAgICAgIHJldHVybiBzdXBlci5nZXRDZWxsRGF0YShjZWxsdmFsdWUsIHJvd3ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNlbGx2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VCeVZhbHVlQ29sdW1uVHlwZSh2YWw6IGFueSkge1xuICAgIGxldCB2YWx1ZSA9IHZhbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQ29sdW1uVHlwZSA9PT0gQ29kZXMuVFlQRV9JTlQpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgdmFsdWUgPSBwYXJzZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBRdWVyeWluZyBhbGwgZW50aXR5IHJlY29yZHMgdG8gaGF2ZSB0aGUgcmVzcG9uc2VNYXAgZnVsbHkgZmlsbGVkICovXG4gIHF1ZXJ5QWxsRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGF0YVNlcnZpY2UgfHwgISh0aGlzLnF1ZXJ5TWV0aG9kIGluIHRoaXMuZGF0YVNlcnZpY2UpIHx8ICF0aGlzLmVudGl0eSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugbm90IHByb3Blcmx5IGNvbmZpZ3VyZWQhIGFib3J0aW5nIHF1ZXJ5Jyk7XG4gICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSB0aGlzLmdldFF1ZXJ5QXJndW1lbnRzKHt9KTtcblxuICAgICAgdGhpcy5kYXRhU2VydmljZVt0aGlzLnF1ZXJ5TWV0aG9kXSguLi50aGlzLmRhdGFTZXJ2aWNlLnJlcXVlc3RBcmd1bWVudEFkYXB0ZXIucGFyc2VRdWVyeVBhcmFtZXRlcnMocXVlcnlBcmd1bWVudHMpKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAocmVzcC5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICAgICAgbGV0IHJlc3BEYXRhID0gW107XG4gICAgICAgICAgICBpZiAoVXRpbC5pc0FycmF5KHJlc3AuZGF0YSkpIHtcbiAgICAgICAgICAgICAgcmVzcERhdGEgPSByZXNwLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFV0aWwuaXNPYmplY3QocmVzcC5kYXRhKSAmJiBPYmplY3Qua2V5cyhyZXNwLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgcmVzcERhdGEgPSBbcmVzcC5kYXRhXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IGhhcyByZWNlaXZlZCBub3Qgc3VwcG9ydGVkIHNlcnZpY2UgZGF0YS4gU3VwcG9ydGVkIGRhdGEgYXJlIEFycmF5IG9yIE9iamVjdCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNwRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoaXRlbVt0aGlzLmNvbHVtbl0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsVmFsdWVzLnB1c2goaXRlbVt0aGlzLmNvbHVtbl0pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VNYXBbaXRlbVt0aGlzLmNvbHVtbl1dID0gaXRlbVt0aGlzLnZhbHVlQ29sdW1uXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm9uRGF0YUxvYWRlZC5lbWl0KHRoaXMucmVzcG9uc2VNYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KCk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVyZWYgbGV0LWNlbGx2YWx1ZT1cImNlbGx2YWx1ZVwiIGxldC1yb3d2YWx1ZT1cInJvd3ZhbHVlXCI+XG4gIHt7IGdldERlc2NyaXB0aW9uVmFsdWUoY2VsbHZhbHVlLCByb3d2YWx1ZSkgfX17eyByZXNwb25zZVZhbHVlKHJlc3BvbnNlTWFwW2NlbGx2YWx1ZV0pIH19XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -79,6 +79,7 @@ export class OColumn {
79
79
  if (Util.isDefined(column.filterExpressionFunction)) {
80
80
  this.filterExpressionFunction = column.filterExpressionFunction;
81
81
  }
82
+ this.valueColumn = column.valueColumn ?? this.attr;
82
83
  }
83
84
  set searchable(val) {
84
85
  this._searchable = val;
@@ -198,4 +199,4 @@ export class OColumn {
198
199
  return this.searching && this.visible && !(this.renderer != null && this.renderer.filterFunction != null);
199
200
  }
200
201
  }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb2x1bW4uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vby1jb2x1bW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQVFuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVDLE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBY1ksYUFBUSxHQUFZLEtBQUssQ0FBQztRQVk1QixxQkFBZ0IsR0FBNkIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xGLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQW1PakYsQ0FBQztJQWhPQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENB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QyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPVGFibGVDb2x1bW5DYWxjdWxhdGVkIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWNvbHVtbi1jYWxjdWxhdGVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vcGVyYXRpb24tZnVuY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uQWdncmVnYXRlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tYWdncmVnYXRlLnR5cGUnO1xuaW1wb3J0IHsgT0NvbHVtblRvb2x0aXAgfSBmcm9tICcuLi8uLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi10b29sdGlwLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi9jZWxsLXJlbmRlcmVyL28tYmFzZS10YWJsZS1jZWxsLXJlbmRlcmVyLmNsYXNzJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5cbmV4cG9ydCBjbGFzcyBPQ29sdW1uIHtcbiAgYXR0cjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgc3FsVHlwZTogbnVtYmVyO1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgb3JkZXJhYmxlOiBib29sZWFuO1xuICBncm91cGFibGU6IGJvb2xlYW47XG4gIF9zZWFyY2hhYmxlOiBib29sZWFuO1xuICBzZWFyY2hpbmc6IGJvb2xlYW47IC8vIHRoaXMgY29sdW1uIGlzIHVzZWQgdG8gZmlsdGVyIGluIHF1aWNrZmlsdGVyXG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHJlbmRlcmVyOiBPQmFzZVRhYmxlQ2VsbFJlbmRlcmVyO1xuICBlZGl0b3I6IGFueTtcbiAgcHJvdGVjdGVkIF9lZGl0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIF93aWR0aDogc3RyaW5nO1xuICBtaW5XaWR0aDogc3RyaW5nO1xuICBtYXhXaWR0aDogc3RyaW5nO1xuICBhZ2dyZWdhdGU6IE9Db2x1bW5BZ2dyZWdhdGU7XG4gIGNhbGN1bGF0ZTogc3RyaW5nIHwgT3BlcmF0b3JGdW5jdGlvbjtcbiAgZGVmaW5pdGlvbjogT1RhYmxlQ29sdW1uO1xuICB0b29sdGlwOiBPQ29sdW1uVG9vbHRpcDtcbiAgcmVzaXphYmxlOiBib29sZWFuO1xuICBET01XaWR0aDogbnVtYmVyO1xuICBmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IChjb2x1bW5BdHRyOiBzdHJpbmcsIHF1aWNrRmlsdGVyPzogc3RyaW5nKSA9PiBFeHByZXNzaW9uO1xuXG4gIHByaXZhdGUgbXVsdGlsaW5lU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLm11bHRpbGluZSk7XG4gIHB1YmxpYyBpc011bHRpbGluZTogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMubXVsdGlsaW5lU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBfbXVsdGlsaW5lOiBib29sZWFuO1xuXG4gIGdldCBlZGl0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lZGl0aW5nO1xuICB9XG5cbiAgc2V0IGVkaXRpbmcodmFsOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2Jvb2xlYW4nICYmIHRoaXMuZWRpdG9yICYmIHRoaXMuZWRpdG9yLmF1dG9Db21taXQpIHtcbiAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5fZWRpdGluZyA9IHRoaXMuZWRpdG9yICE9IG51bGwgJiYgdmFsO1xuICAgIHRoaXMuZWRpdG9yLnNldEVkaXRpbmdSb3dDbGFzcyh0aGlzLl9lZGl0aW5nKVxuICB9XG5cbiAgc2V0RGVmYXVsdFByb3BlcnRpZXMoYXJnczogYW55KSB7XG4gICAgdGhpcy50eXBlID0gJ3N0cmluZyc7XG4gICAgdGhpcy5jbGFzc05hbWUgPSAnby1jb2x1bW4tJyArICh0aGlzLnR5cGUpICsgJyAnO1xuICAgIHRoaXMub3JkZXJhYmxlID0gYXJncy5vcmRlcmFibGU7XG4gICAgdGhpcy5yZXNpemFibGUgPSBhcmdzLnJlc2l6YWJsZTtcbiAgICB0aGlzLmdyb3VwYWJsZSA9IGFyZ3MuZ3JvdXBhYmxlO1xuICAgIHRoaXMuc2VhcmNoYWJsZSA9ICEodGhpcy50eXBlID09PSAnZGF0ZScgJiYgYXJncy5wYWdlYWJsZSk7XG4gICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuICAgIC8vIGNvbHVtbiB3aXRob3V0ICdhdHRyJyBzaG91bGQgY29udGFpbiBvbmx5IHJlbmRlcmVycyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gY2VsbCBkYXRhLCBidXQgcm93IGRhdGEgKGUuZy4gYWN0aW9ucylcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmF0dHI7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuYXR0cjtcbiAgICB0aGlzLm11bHRpbGluZSA9IGZhbHNlO1xuICB9XG5cbiAgc2V0Q29sdW1uUHJvcGVydGllcyhjb2x1bW46IE9UYWJsZUNvbHVtbiAmIE9UYWJsZUNvbHVtbkNhbGN1bGF0ZWQpIHtcbiAgICB0aGlzLnRpdGxlID0gVXRpbC5pc0RlZmluZWQoY29sdW1uLnRpdGxlKSA/IGNvbHVtbi50aXRsZSA6IGNvbHVtbi5hdHRyO1xuICAgIHRoaXMuZGVmaW5pdGlvbiA9IGNvbHVtbjtcbiAgICB0aGlzLm11bHRpbGluZSA9IGNvbHVtbi5tdWx0aWxpbmU7XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLm1pbldpZHRoKSkge1xuICAgICAgdGhpcy5taW5XaWR0aCA9IGNvbHVtbi5taW5XaWR0aDtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5tYXhXaWR0aCkpIHtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBjb2x1bW4ubWF4V2lkdGg7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4ub3JkZXJhYmxlKSkge1xuICAgICAgdGhpcy5vcmRlcmFibGUgPSBjb2x1bW4ub3JkZXJhYmxlO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnJlc2l6YWJsZSkpIHtcbiAgICAgIHRoaXMucmVzaXphYmxlID0gY29sdW1uLnJlc2l6YWJsZTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnNlYXJjaGFibGUpKSB7XG4gICAgICB0aGlzLnNlYXJjaGFibGUgPSBjb2x1bW4uc2VhcmNoYWJsZTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLmdyb3VwYWJsZSkpIHtcbiAgICAgIHRoaXMuZ3JvdXBhYmxlID0gY29sdW1uLmdyb3VwYWJsZTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5yZW5kZXJlcikpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIgPSBjb2x1bW4ucmVuZGVyZXI7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4uZWRpdG9yKSkge1xuICAgICAgdGhpcy5lZGl0b3IgPSBjb2x1bW4uZWRpdG9yO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnR5cGUpKSB7XG4gICAgICB0aGlzLnR5cGUgPSBjb2x1bW4udHlwZTtcbiAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ28tY29sdW1uLScgKyAodGhpcy50eXBlKSArICcgJztcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnR5cGUpKSB7XG4gICAgICB0aGlzLnNxbFR5cGUgPSBjb2x1bW4uZ2V0U1FMVHlwZSgpO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4uY2xhc3MpKSB7XG4gICAgICB0aGlzLmNsYXNzTmFtZSA9IFV0aWwuaXNEZWZpbmVkKHRoaXMuY2xhc3NOYW1lKSA/ICh0aGlzLmNsYXNzTmFtZSArICcgJyArIGNvbHVtbi5jbGFzcykgOiBjb2x1bW4uY2xhc3M7XG4gICAgfVxuICAgIC8vIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBPVGFibGVDb2x1bW5DYWxjdWxhdGVkQ29tcG9uZW50KSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5vcGVyYXRpb24pIHx8IFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5mdW5jdGlvbk9wZXJhdGlvbikpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlID0gY29sdW1uLm9wZXJhdGlvbiA/IGNvbHVtbi5vcGVyYXRpb24gOiBjb2x1bW4uZnVuY3Rpb25PcGVyYXRpb247XG4gICAgfVxuICAgIC8vIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnRvb2x0aXApICYmIGNvbHVtbi50b29sdGlwKSB7XG4gICAgICB0aGlzLnRvb2x0aXAgPSB7XG4gICAgICAgIHZhbHVlOiBjb2x1bW4udG9vbHRpcFZhbHVlLFxuICAgICAgICBmdW5jdGlvbjogY29sdW1uLnRvb2x0aXBGdW5jdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb24pKSB7XG4gICAgICB0aGlzLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbiA9IGNvbHVtbi5maWx0ZXJFeHByZXNzaW9uRnVuY3Rpb247XG4gICAgfVxuICB9XG5cbiAgc2V0IHNlYXJjaGFibGUodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VhcmNoYWJsZSA9IHZhbDtcbiAgICB0aGlzLnNlYXJjaGluZyA9IHZhbDtcbiAgfVxuXG4gIGdldCBzZWFyY2hhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hhYmxlO1xuICB9XG5cbiAgc2V0IG11bHRpbGluZSh2YWw6IGJvb2xlYW4pIHtcbiAgICB2YWwgPSBVdGlsLnBhcnNlQm9vbGVhbihTdHJpbmcodmFsKSk7XG4gICAgdGhpcy5fbXVsdGlsaW5lID0gdmFsO1xuICAgIHRoaXMubXVsdGlsaW5lU3ViamVjdC5uZXh0KHRoaXMuX211bHRpbGluZSk7XG4gIH1cblxuICBnZXQgbXVsdGlsaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aWxpbmU7XG4gIH1cblxuICBoYXNUb29sdGlwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRvb2x0aXApO1xuICB9XG5cbiAgZ2V0VG9vbHRpcChyb3dEYXRhOiBhbnkpOiBhbnkge1xuICAgIGlmICghdGhpcy5oYXNUb29sdGlwKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCB0b29sdGlwO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnRvb2x0aXAudmFsdWUpKSB7XG4gICAgICB0b29sdGlwID0gdGhpcy50b29sdGlwLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy50b29sdGlwLmZ1bmN0aW9uKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdG9vbHRpcCA9IHRoaXMudG9vbHRpcC5mdW5jdGlvbihyb3dEYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdvLXRhYmxlLWNvbHVtbiB0b29sdGlwLWZ1bmN0aW9uIGRpZG50IHdvcmtlZCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0b29sdGlwID0gVXRpbC5pc0RlZmluZWQodGhpcy5yZW5kZXJlcikgPyB0aGlzLnJlbmRlcmVyLmdldFRvb2x0aXAocm93RGF0YVt0aGlzLm5hbWVdLCByb3dEYXRhKSA6IHJvd0RhdGFbdGhpcy5uYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBnZXRNaW5XaWR0aCgpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy53aWR0aCkpIHtcbiAgICAgIHJldHVybiB0aGlzLndpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5taW5XaWR0aDtcbiAgfVxuXG4gIGdldE1pbldpZHRoVmFsdWUoKSB7XG4gICAgcmV0dXJuIFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKHRoaXMubWluV2lkdGgsIENvZGVzLkRFRkFVTFRfQ09MVU1OX01JTl9XSURUSCk7XG4gIH1cblxuICBnZXRNYXhXaWR0aFZhbHVlKCkge1xuICAgIGNvbnN0IHZhbHVlID0gVXRpbC5leHRyYWN0UGl4ZWxzVmFsdWUodGhpcy5tYXhXaWR0aCk7XG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRSZW5kZXJXaWR0aChob3Jpem9udGFsU2Nyb2xsZWQ6IGJvb2xlYW4sIGNsaWVudFdpZHRoOiBudW1iZXIpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy53aWR0aCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0V2lkdGggPSAoaG9yaXpvbnRhbFNjcm9sbGVkKSA/IHVuZGVmaW5lZCA6ICdhdXRvJztcbiAgICB0aGlzLndpZHRoID0gVXRpbC5pc0RlZmluZWQodGhpcy5ET01XaWR0aCkgPyAodGhpcy5nZXRET01XaWR0aChjbGllbnRXaWR0aCkgKyAncHgnKSA6IGRlZmF1bHRXaWR0aDtcbiAgfVxuXG4gIGdldERPTVdpZHRoKHZhbDogYW55KTogbnVtYmVyIHtcbiAgICBsZXQgRE9NV2lkdGg7XG4gICAgY29uc3QgcHhWYWwgPSBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZSh2YWwpO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHB4VmFsKSkge1xuICAgICAgRE9NV2lkdGggPSBweFZhbDtcbiAgICAgIGNvbnN0IG1pblZhbHVlID0gdGhpcy5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobWluVmFsdWUpICYmIHB4VmFsID4gMCAmJiBweFZhbCA8IG1pblZhbHVlKSB7XG4gICAgICAgIERPTVdpZHRoID0gbWluVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm1heFdpZHRoKSkge1xuICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKHRoaXMubWF4V2lkdGgpO1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQobWF4VmFsdWUpICYmIHB4VmFsID4gbWF4VmFsdWUpIHtcbiAgICAgICAgICBET01XaWR0aCA9IG1heFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gICAgcmV0dXJuIERPTVdpZHRoO1xuICB9XG5cbiAgc2V0IHdpZHRoKHZhbDogc3RyaW5nKSB7XG4gICAgbGV0IHdpZHRoVmFsID0gdmFsO1xuICAgIGxldCBET01XaWR0aCA9IHRoaXMuZ2V0RE9NV2lkdGgodmFsKTtcbiAgICBjb25zdCBweFZhbCA9IFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKERPTVdpZHRoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocHhWYWwpKSB7XG4gICAgICB0aGlzLkRPTVdpZHRoID0gcHhWYWw7XG4gICAgICB3aWR0aFZhbCA9IHB4VmFsICsgJ3B4JztcbiAgICB9XG5cbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoVmFsO1xuICB9XG5cbiAgZ2V0IHdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICB9XG5cblxuICBnZXRXaWR0aFRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gIH1cblxuICBzZXRXaWR0aCh2YWw6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGggPSB2YWwgKyAncHgnO1xuICAgIHRoaXMuRE9NV2lkdGggPSB2YWw7XG4gIH1cblxuICBnZXRUaXRsZUFsaWduQ2xhc3MoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZGVmaW5pdGlvbikpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmluaXRpb24udGl0bGVBbGlnbiB8fCBDb2Rlcy5DT0xVTU5fVElUTEVfQUxJR05fQ0VOVEVSO1xuICAgIH1cbiAgICAvLyBkZWZhdWx0IHRpdGxlIGFsaWduXG4gICAgcmV0dXJuIENvZGVzLkNPTFVNTl9USVRMRV9BTElHTl9DRU5URVI7XG4gIH1cblxuICBnZXRGaWx0ZXJWYWx1ZShjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU/OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMucmVuZGVyZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmdldEZpbHRlcihjZWxsVmFsdWUsIHJvd1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtjZWxsVmFsdWVdO1xuICAgIH1cbiAgfVxuXG4gIHVzZUN1c3RvbUZpbHRlckZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGluZyAmJiB0aGlzLnZpc2libGUgJiYgdGhpcy5yZW5kZXJlciAhPSBudWxsICYmIHRoaXMucmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24gIT0gbnVsbDtcbiAgfVxuXG4gIHVzZVF1aWNrZmlsdGVyRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoaW5nICYmIHRoaXMudmlzaWJsZSAmJiAhKHRoaXMucmVuZGVyZXIgIT0gbnVsbCAmJiB0aGlzLnJlbmRlcmVyLmZpbHRlckZ1bmN0aW9uICE9IG51bGwpO1xuICB9XG5cbn1cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb2x1bW4uY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vby1jb2x1bW4uY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQVFuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVDLE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBY1ksYUFBUSxHQUFZLEtBQUssQ0FBQztRQWE1QixxQkFBZ0IsR0FBNkIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xGLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQXFPakYsQ0FBQztJQWxPQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENB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cEIsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPVGFibGVDb2x1bW5DYWxjdWxhdGVkIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWNvbHVtbi1jYWxjdWxhdGVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9vcGVyYXRpb24tZnVuY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBPQ29sdW1uQWdncmVnYXRlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tYWdncmVnYXRlLnR5cGUnO1xuaW1wb3J0IHsgT0NvbHVtblRvb2x0aXAgfSBmcm9tICcuLi8uLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi10b29sdGlwLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9CYXNlVGFibGVDZWxsUmVuZGVyZXIgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXIvby1iYXNlLXRhYmxlLWNlbGwtcmVuZGVyZXIuY2xhc3MnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcblxuZXhwb3J0IGNsYXNzIE9Db2x1bW4ge1xuICBhdHRyOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzcWxUeXBlOiBudW1iZXI7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBvcmRlcmFibGU6IGJvb2xlYW47XG4gIGdyb3VwYWJsZTogYm9vbGVhbjtcbiAgX3NlYXJjaGFibGU6IGJvb2xlYW47XG4gIHNlYXJjaGluZzogYm9vbGVhbjsgLy8gdGhpcyBjb2x1bW4gaXMgdXNlZCB0byBmaWx0ZXIgaW4gcXVpY2tmaWx0ZXJcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgcmVuZGVyZXI6IE9CYXNlVGFibGVDZWxsUmVuZGVyZXI7XG4gIGVkaXRvcjogYW55O1xuICBwcm90ZWN0ZWQgX2VkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX3dpZHRoOiBzdHJpbmc7XG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIG1heFdpZHRoOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0ZTogT0NvbHVtbkFnZ3JlZ2F0ZTtcbiAgY2FsY3VsYXRlOiBzdHJpbmcgfCBPcGVyYXRvckZ1bmN0aW9uO1xuICBkZWZpbml0aW9uOiBPVGFibGVDb2x1bW47XG4gIHRvb2x0aXA6IE9Db2x1bW5Ub29sdGlwO1xuICByZXNpemFibGU6IGJvb2xlYW47XG4gIERPTVdpZHRoOiBudW1iZXI7XG4gIHZhbHVlQ29sdW1uOiBzdHJpbmc7XG4gIGZpbHRlckV4cHJlc3Npb25GdW5jdGlvbjogKGNvbHVtbkF0dHI6IHN0cmluZywgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IEV4cHJlc3Npb247XG5cbiAgcHJpdmF0ZSBtdWx0aWxpbmVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMubXVsdGlsaW5lKTtcbiAgcHVibGljIGlzTXVsdGlsaW5lOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5tdWx0aWxpbmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBwcml2YXRlIF9tdWx0aWxpbmU6IGJvb2xlYW47XG5cbiAgZ2V0IGVkaXRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRpbmc7XG4gIH1cblxuICBzZXQgZWRpdGluZyh2YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicgJiYgdGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuYXV0b0NvbW1pdCkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9lZGl0aW5nID0gdGhpcy5lZGl0b3IgIT0gbnVsbCAmJiB2YWw7XG4gICAgdGhpcy5lZGl0b3Iuc2V0RWRpdGluZ1Jvd0NsYXNzKHRoaXMuX2VkaXRpbmcpXG4gIH1cblxuICBzZXREZWZhdWx0UHJvcGVydGllcyhhcmdzOiBhbnkpIHtcbiAgICB0aGlzLnR5cGUgPSAnc3RyaW5nJztcbiAgICB0aGlzLmNsYXNzTmFtZSA9ICdvLWNvbHVtbi0nICsgKHRoaXMudHlwZSkgKyAnICc7XG4gICAgdGhpcy5vcmRlcmFibGUgPSBhcmdzLm9yZGVyYWJsZTtcbiAgICB0aGlzLnJlc2l6YWJsZSA9IGFyZ3MucmVzaXphYmxlO1xuICAgIHRoaXMuZ3JvdXBhYmxlID0gYXJncy5ncm91cGFibGU7XG4gICAgdGhpcy5zZWFyY2hhYmxlID0gISh0aGlzLnR5cGUgPT09ICdkYXRlJyAmJiBhcmdzLnBhZ2VhYmxlKTtcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG4gICAgLy8gY29sdW1uIHdpdGhvdXQgJ2F0dHInIHNob3VsZCBjb250YWluIG9ubHkgcmVuZGVyZXJzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBjZWxsIGRhdGEsIGJ1dCByb3cgZGF0YSAoZS5nLiBhY3Rpb25zKVxuICAgIHRoaXMubmFtZSA9IHRoaXMuYXR0cjtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5hdHRyO1xuICAgIHRoaXMubXVsdGlsaW5lID0gZmFsc2U7XG4gIH1cblxuICBzZXRDb2x1bW5Qcm9wZXJ0aWVzKGNvbHVtbjogT1RhYmxlQ29sdW1uICYgT1RhYmxlQ29sdW1uQ2FsY3VsYXRlZCkge1xuICAgIHRoaXMudGl0bGUgPSBVdGlsLmlzRGVmaW5lZChjb2x1bW4udGl0bGUpID8gY29sdW1uLnRpdGxlIDogY29sdW1uLmF0dHI7XG4gICAgdGhpcy5kZWZpbml0aW9uID0gY29sdW1uO1xuICAgIHRoaXMubXVsdGlsaW5lID0gY29sdW1uLm11bHRpbGluZTtcblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4ubWluV2lkdGgpKSB7XG4gICAgICB0aGlzLm1pbldpZHRoID0gY29sdW1uLm1pbldpZHRoO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLm1heFdpZHRoKSkge1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGNvbHVtbi5tYXhXaWR0aDtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5vcmRlcmFibGUpKSB7XG4gICAgICB0aGlzLm9yZGVyYWJsZSA9IGNvbHVtbi5vcmRlcmFibGU7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4ucmVzaXphYmxlKSkge1xuICAgICAgdGhpcy5yZXNpemFibGUgPSBjb2x1bW4ucmVzaXphYmxlO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4uc2VhcmNoYWJsZSkpIHtcbiAgICAgIHRoaXMuc2VhcmNoYWJsZSA9IGNvbHVtbi5zZWFyY2hhYmxlO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4uZ3JvdXBhYmxlKSkge1xuICAgICAgdGhpcy5ncm91cGFibGUgPSBjb2x1bW4uZ3JvdXBhYmxlO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLnJlbmRlcmVyKSkge1xuICAgICAgdGhpcy5yZW5kZXJlciA9IGNvbHVtbi5yZW5kZXJlcjtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5lZGl0b3IpKSB7XG4gICAgICB0aGlzLmVkaXRvciA9IGNvbHVtbi5lZGl0b3I7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4udHlwZSkpIHtcbiAgICAgIHRoaXMudHlwZSA9IGNvbHVtbi50eXBlO1xuICAgICAgdGhpcy5jbGFzc05hbWUgPSAnby1jb2x1bW4tJyArICh0aGlzLnR5cGUpICsgJyAnO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4udHlwZSkpIHtcbiAgICAgIHRoaXMuc3FsVHlwZSA9IGNvbHVtbi5nZXRTUUxUeXBlKCk7XG4gICAgfVxuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbi5jbGFzcykpIHtcbiAgICAgIHRoaXMuY2xhc3NOYW1lID0gVXRpbC5pc0RlZmluZWQodGhpcy5jbGFzc05hbWUpID8gKHRoaXMuY2xhc3NOYW1lICsgJyAnICsgY29sdW1uLmNsYXNzKSA6IGNvbHVtbi5jbGFzcztcbiAgICB9XG4gICAgLy8gaWYgKGNvbHVtbiBpbnN0YW5jZW9mIE9UYWJsZUNvbHVtbkNhbGN1bGF0ZWRDb21wb25lbnQpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLm9wZXJhdGlvbikgfHwgVXRpbC5pc0RlZmluZWQoY29sdW1uLmZ1bmN0aW9uT3BlcmF0aW9uKSkge1xuICAgICAgdGhpcy5jYWxjdWxhdGUgPSBjb2x1bW4ub3BlcmF0aW9uID8gY29sdW1uLm9wZXJhdGlvbiA6IGNvbHVtbi5mdW5jdGlvbk9wZXJhdGlvbjtcbiAgICB9XG4gICAgLy8gfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW4udG9vbHRpcCkgJiYgY29sdW1uLnRvb2x0aXApIHtcbiAgICAgIHRoaXMudG9vbHRpcCA9IHtcbiAgICAgICAgdmFsdWU6IGNvbHVtbi50b29sdGlwVmFsdWUsXG4gICAgICAgIGZ1bmN0aW9uOiBjb2x1bW4udG9vbHRpcEZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29sdW1uLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbikpIHtcbiAgICAgIHRoaXMuZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uID0gY29sdW1uLmZpbHRlckV4cHJlc3Npb25GdW5jdGlvbjtcbiAgICB9XG4gICAgdGhpcy52YWx1ZUNvbHVtbiA9IGNvbHVtbi52YWx1ZUNvbHVtbiA/PyB0aGlzLmF0dHI7XG5cbiAgfVxuXG4gIHNldCBzZWFyY2hhYmxlKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlYXJjaGFibGUgPSB2YWw7XG4gICAgdGhpcy5zZWFyY2hpbmcgPSB2YWw7XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoYWJsZTtcbiAgfVxuXG4gIHNldCBtdWx0aWxpbmUodmFsOiBib29sZWFuKSB7XG4gICAgdmFsID0gVXRpbC5wYXJzZUJvb2xlYW4oU3RyaW5nKHZhbCkpO1xuICAgIHRoaXMuX211bHRpbGluZSA9IHZhbDtcbiAgICB0aGlzLm11bHRpbGluZVN1YmplY3QubmV4dCh0aGlzLl9tdWx0aWxpbmUpO1xuICB9XG5cbiAgZ2V0IG11bHRpbGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlsaW5lO1xuICB9XG5cbiAgaGFzVG9vbHRpcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy50b29sdGlwKTtcbiAgfVxuXG4gIGdldFRvb2x0aXAocm93RGF0YTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMuaGFzVG9vbHRpcCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgdG9vbHRpcDtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy50b29sdGlwLnZhbHVlKSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudG9vbHRpcC52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMudG9vbHRpcC5mdW5jdGlvbikpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRvb2x0aXAgPSB0aGlzLnRvb2x0aXAuZnVuY3Rpb24ocm93RGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybignby10YWJsZS1jb2x1bW4gdG9vbHRpcC1mdW5jdGlvbiBkaWRudCB3b3JrZWQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9vbHRpcCA9IFV0aWwuaXNEZWZpbmVkKHRoaXMucmVuZGVyZXIpID8gdGhpcy5yZW5kZXJlci5nZXRUb29sdGlwKHJvd0RhdGFbdGhpcy5uYW1lXSwgcm93RGF0YSkgOiByb3dEYXRhW3RoaXMubmFtZV07XG4gICAgfVxuICAgIHJldHVybiB0b29sdGlwO1xuICB9XG5cbiAgZ2V0TWluV2lkdGgoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMud2lkdGgpKSB7XG4gICAgICByZXR1cm4gdGhpcy53aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWluV2lkdGg7XG4gIH1cblxuICBnZXRNaW5XaWR0aFZhbHVlKCkge1xuICAgIHJldHVybiBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZSh0aGlzLm1pbldpZHRoLCBDb2Rlcy5ERUZBVUxUX0NPTFVNTl9NSU5fV0lEVEgpO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhWYWx1ZSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKHRoaXMubWF4V2lkdGgpO1xuICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0UmVuZGVyV2lkdGgoaG9yaXpvbnRhbFNjcm9sbGVkOiBib29sZWFuLCBjbGllbnRXaWR0aDogbnVtYmVyKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMud2lkdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFdpZHRoID0gKGhvcml6b250YWxTY3JvbGxlZCkgPyB1bmRlZmluZWQgOiAnYXV0byc7XG4gICAgdGhpcy53aWR0aCA9IFV0aWwuaXNEZWZpbmVkKHRoaXMuRE9NV2lkdGgpID8gKHRoaXMuZ2V0RE9NV2lkdGgoY2xpZW50V2lkdGgpICsgJ3B4JykgOiBkZWZhdWx0V2lkdGg7XG4gIH1cblxuICBnZXRET01XaWR0aCh2YWw6IGFueSk6IG51bWJlciB7XG4gICAgbGV0IERPTVdpZHRoO1xuICAgIGNvbnN0IHB4VmFsID0gVXRpbC5leHRyYWN0UGl4ZWxzVmFsdWUodmFsKTtcblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChweFZhbCkpIHtcbiAgICAgIERPTVdpZHRoID0gcHhWYWw7XG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHRoaXMuZ2V0TWluV2lkdGhWYWx1ZSgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG1pblZhbHVlKSAmJiBweFZhbCA+IDAgJiYgcHhWYWwgPCBtaW5WYWx1ZSkge1xuICAgICAgICBET01XaWR0aCA9IG1pblZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5tYXhXaWR0aCkpIHtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZSh0aGlzLm1heFdpZHRoKTtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG1heFZhbHVlKSAmJiBweFZhbCA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgRE9NV2lkdGggPSBtYXhWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiBET01XaWR0aDtcbiAgfVxuXG4gIHNldCB3aWR0aCh2YWw6IHN0cmluZykge1xuICAgIGxldCB3aWR0aFZhbCA9IHZhbDtcbiAgICBsZXQgRE9NV2lkdGggPSB0aGlzLmdldERPTVdpZHRoKHZhbCk7XG4gICAgY29uc3QgcHhWYWwgPSBVdGlsLmV4dHJhY3RQaXhlbHNWYWx1ZShET01XaWR0aCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHB4VmFsKSkge1xuICAgICAgdGhpcy5ET01XaWR0aCA9IHB4VmFsO1xuICAgICAgd2lkdGhWYWwgPSBweFZhbCArICdweCc7XG4gICAgfVxuXG4gICAgdGhpcy5fd2lkdGggPSB3aWR0aFZhbDtcbiAgfVxuXG4gIGdldCB3aWR0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgfVxuXG5cbiAgZ2V0V2lkdGhUb1N0b3JlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICB9XG5cbiAgc2V0V2lkdGgodmFsOiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gdmFsICsgJ3B4JztcbiAgICB0aGlzLkRPTVdpZHRoID0gdmFsO1xuICB9XG5cbiAgZ2V0VGl0bGVBbGlnbkNsYXNzKCkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmRlZmluaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9uLnRpdGxlQWxpZ24gfHwgQ29kZXMuQ09MVU1OX1RJVExFX0FMSUdOX0NFTlRFUjtcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB0aXRsZSBhbGlnblxuICAgIHJldHVybiBDb2Rlcy5DT0xVTU5fVElUTEVfQUxJR05fQ0VOVEVSO1xuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWUoY2VsbFZhbHVlOiBhbnksIHJvd1ZhbHVlPzogYW55KTogYW55W10ge1xuICAgIGlmICh0aGlzLnJlbmRlcmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5nZXRGaWx0ZXIoY2VsbFZhbHVlLCByb3dWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbY2VsbFZhbHVlXTtcbiAgICB9XG4gIH1cblxuICB1c2VDdXN0b21GaWx0ZXJGdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hpbmcgJiYgdGhpcy52aXNpYmxlICYmIHRoaXMucmVuZGVyZXIgIT0gbnVsbCAmJiB0aGlzLnJlbmRlcmVyLmZpbHRlckZ1bmN0aW9uICE9IG51bGw7XG4gIH1cblxuICB1c2VRdWlja2ZpbHRlckZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGluZyAmJiB0aGlzLnZpc2libGUgJiYgISh0aGlzLnJlbmRlcmVyICE9IG51bGwgJiYgdGhpcy5yZW5kZXJlci5maWx0ZXJGdW5jdGlvbiAhPSBudWxsKTtcbiAgfVxuXG59XG4iXX0=