@one-paragon/angular-utilities 1.2.9-beta.1 → 1.2.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 (122) hide show
  1. package/README.md +24 -24
  2. package/action-state/ngrx.d.ts +1 -1
  3. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +3 -3
  4. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +1 -1
  5. package/esm2022/action-state/index.mjs +1 -1
  6. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +1 -1
  7. package/esm2022/action-state/ngrx.mjs +1 -1
  8. package/esm2022/http-request-state/directives/index.mjs +1 -1
  9. package/esm2022/http-request-state/index.mjs +1 -1
  10. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +1 -1
  11. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +1 -1
  12. package/esm2022/http-request-state/rxjs/index.mjs +1 -1
  13. package/esm2022/ngrx/actionable-selector.mjs +1 -1
  14. package/esm2022/public-api.mjs +1 -1
  15. package/esm2022/rxjs/defaultShareReplay.mjs +1 -1
  16. package/esm2022/rxjs/index.mjs +1 -1
  17. package/esm2022/rxjs/mapError.mjs +1 -1
  18. package/esm2022/rxjs/rxjs-operators.mjs +1 -1
  19. package/esm2022/rxjs/subjectifier.mjs +1 -1
  20. package/esm2022/rxjs/subscriber.directive.mjs +1 -1
  21. package/esm2022/table-builder/classes/DefaultSettings.mjs +1 -1
  22. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +1 -1
  23. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +1 -1
  24. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +12 -18
  25. package/esm2022/table-builder/classes/TableState.mjs +3 -5
  26. package/esm2022/table-builder/classes/display-col.mjs +1 -1
  27. package/esm2022/table-builder/classes/filter-info.mjs +1 -1
  28. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +4 -11
  29. package/esm2022/table-builder/classes/table-builder.mjs +3 -3
  30. package/esm2022/table-builder/classes/table-store.mjs +46 -71
  31. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +4 -4
  32. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +1 -1
  33. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +3 -3
  34. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +3 -3
  35. package/esm2022/table-builder/components/filter/filter.component.mjs +3 -3
  36. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +19 -19
  37. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +3 -3
  38. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +61 -94
  39. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +28 -30
  40. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +3 -3
  41. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +3 -3
  42. package/esm2022/table-builder/components/index.mjs +1 -1
  43. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +3 -3
  44. package/esm2022/table-builder/components/link-column.component.mjs +31 -31
  45. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +3 -3
  46. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +3 -3
  47. package/esm2022/table-builder/components/scroll-strategy.mjs +1 -1
  48. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +2 -4
  49. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +3 -3
  50. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +1 -1
  51. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +1 -1
  52. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +1 -1
  53. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +1 -1
  54. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +1 -1
  55. package/esm2022/table-builder/components/table-container/table-container.mjs +31 -42
  56. package/esm2022/table-builder/components/table-container/tableProps.mjs +2 -1
  57. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +15 -17
  58. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +6 -5
  59. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +11 -9
  60. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +1 -1
  61. package/esm2022/table-builder/directives/custom-cell-directive.mjs +13 -12
  62. package/esm2022/table-builder/directives/index.mjs +1 -1
  63. package/esm2022/table-builder/directives/multi-sort.directive.mjs +1 -1
  64. package/esm2022/table-builder/directives/resize-column.directive.mjs +1 -1
  65. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +1 -1
  66. package/esm2022/table-builder/directives/tb-filter.directive.mjs +1 -1
  67. package/esm2022/table-builder/enums/filterTypes.mjs +1 -1
  68. package/esm2022/table-builder/functions/boolean-filter-function.mjs +1 -1
  69. package/esm2022/table-builder/functions/date-filter-function.mjs +1 -1
  70. package/esm2022/table-builder/functions/download-data.mjs +1 -1
  71. package/esm2022/table-builder/functions/null-filter-function.mjs +1 -1
  72. package/esm2022/table-builder/functions/number-filter-function.mjs +1 -1
  73. package/esm2022/table-builder/functions/sort-data-function.mjs +1 -1
  74. package/esm2022/table-builder/functions/string-filter-function.mjs +1 -1
  75. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +1 -1
  76. package/esm2022/table-builder/interfaces/report-def.mjs +1 -1
  77. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +1 -1
  78. package/esm2022/table-builder/pipes/column-total.pipe.mjs +1 -1
  79. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +1 -1
  80. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +1 -1
  81. package/esm2022/table-builder/services/export-to-csv.service.mjs +3 -3
  82. package/esm2022/table-builder/services/link-creator.service.mjs +1 -1
  83. package/esm2022/table-builder/services/table-template-service.mjs +1 -1
  84. package/esm2022/table-builder/services/transform-creator.mjs +1 -1
  85. package/esm2022/table-builder/table-builder.module.mjs +1 -1
  86. package/esm2022/utilities/array-helpers.mjs +1 -1
  87. package/esm2022/utilities/directives/auto-focus.directive.mjs +1 -1
  88. package/esm2022/utilities/directives/clickEmitterDirective.mjs +1 -1
  89. package/esm2022/utilities/directives/clickSubject.mjs +1 -1
  90. package/esm2022/utilities/directives/conditional-classes.directive.mjs +1 -1
  91. package/esm2022/utilities/directives/dialog-service.mjs +1 -1
  92. package/esm2022/utilities/directives/dialog.mjs +1 -1
  93. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +1 -1
  94. package/esm2022/utilities/directives/prevent-enter.directive.mjs +1 -1
  95. package/esm2022/utilities/directives/stop-propagation.directive.mjs +1 -1
  96. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +1 -1
  97. package/esm2022/utilities/index.mjs +1 -1
  98. package/esm2022/utilities/module.mjs +1 -1
  99. package/esm2022/utilities/pipes/function.pipe.mjs +1 -1
  100. package/esm2022/utilities/pipes/phone.pipe.mjs +1 -1
  101. package/esm2022/utilities/pipes/space-case.pipes.mjs +1 -1
  102. package/fesm2022/one-paragon-angular-utilities.mjs +289 -381
  103. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  104. package/package.json +1 -1
  105. package/table-builder/classes/TableBuilderDataSource.d.ts +3 -2
  106. package/table-builder/classes/TableState.d.ts +4 -14
  107. package/table-builder/classes/table-builder-general-settings.d.ts +2 -4
  108. package/table-builder/classes/table-store.d.ts +28 -16
  109. package/table-builder/components/generic-table/generic-table.component.d.ts +11 -19
  110. package/table-builder/components/generic-table/paginator.component.d.ts +0 -1
  111. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +0 -1
  112. package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
  113. package/table-builder/components/table-container/table-container.d.ts +8 -10
  114. package/table-builder/components/table-container/tableProps.d.ts +1 -0
  115. package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -1
  116. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +3 -2
  117. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +3 -1
  118. package/table-builder/directives/custom-cell-directive.d.ts +4 -6
  119. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
  120. package/table-builder/interfaces/ColumnInfo.d.ts +1 -1
  121. package/esm2022/table-builder/classes/data-store.mjs +0 -15
  122. package/table-builder/classes/data-store.d.ts +0 -8
@@ -80,4 +80,4 @@ function filtersInfosUpdated(previousFilterInfos, currentFilterInfos) {
80
80
  return currentFilterInfos[key].filterType === val.filterType && currentFilterInfos[key].filterValue === val.filterValue;
81
81
  });
82
82
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0YXRlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3RhYmxlLWNvbnRhaW5lci90YWJsZS1jb250YWluZXIuaGVscGVycy9maWx0ZXItc3RhdGUuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbEQsMExBQTBMO0FBQzFMLGlKQUFpSjtBQUVqSixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFJLGFBQWlDLEVBQUUsV0FBMkIsRUFBRSxFQUFFO0lBQ3pHLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBdUI7UUFDdkMsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7S0FDN0UsQ0FBQTtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUksQ0FBcUIsRUFBMkIsRUFBRTtJQUN0RyxNQUFNLGFBQWEsR0FBcUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzNJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxP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ekgsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZXN0YW1wIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvLCBjcmVhdGVGaWx0ZXJGdW5jIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm9cIjtcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnlcIjtcclxuaW1wb3J0IHsgUHJlZGljYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZGlmZmVyZW5jZSwgaW50ZXJzZWN0aW9uIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuLy9UaGUgaWRlYSBvZiB0aGlzIGlzIHRoYXQgaWYgZmlsdGVycyB3ZXJlIG9ubHkgYWRkZWQsIGFuZCBub25lIHdlcmUgcmVtb3ZlZCBvciBjaGFuZ2VkLCB0aGVuIHdlIG9ubHkgbmVlZCB0byB0YWcgbW9yZSByb3dzIHRvIG5vdCBiZSBzaG93bi4gV2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgYW55ICdkb250IHNob3cnIHRhZ3MuXHJcbi8vIFNvIGlmIGZpbHRlcnMgd2VyZSBvbmx5IGFkZGVkIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBhZGRlZCBmaWx0ZXJzLCBpZiBmaWx0ZXJzIHdlcmUgcmVtb3ZlZCBvciBjaGFuZ2VkIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cclxuXHJcbmV4cG9ydCBjb25zdCB1cGRhdGVGaWx0ZXJJbmZvU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVySW5mb1N0YXRlPFQ+LCBmaWx0ZXJJbmZvczogRmlsdGVySW5mb0RpY3QpID0+IHtcclxuICBmaWx0ZXJJbmZvcyA9IGZpbHRlck5vbkFjdGl2ZUZpbHRlcnMoZmlsdGVySW5mb3MpO1xyXG4gIGNvbnN0IGN1cnJlbnRTdGF0ZTogRmlsdGVySW5mb1N0YXRlPFQ+ID0ge1xyXG4gICAgYWxsRmlsdGVyczogZmlsdGVySW5mb3MsXHJcbiAgICBvbmx5QWRkZWRGaWx0ZXJzOiBmaWx0ZXJJbmZvT25seUFkZGVkKHByZXZpb3VzU3RhdGUuYWxsRmlsdGVycywgZmlsdGVySW5mb3MpXHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50U3RhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYXBGaWx0ZXJJbmZvU3RhdGVUb1ByZWRpY2F0ZVN0YXRlID0gPFQ+KHM6IEZpbHRlckluZm9TdGF0ZTxUPik6IEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+ID0+IHtcclxuICBjb25zdCBtYXBwZWRBZGRPbmx5OiB7W2tleSBpbiBrZXlvZiBUXTogUHJlZGljYXRlPFQ+fSA9IHMub25seUFkZGVkRmlsdGVycyA/IE9iamVjdC5lbnRyaWVzKHMub25seUFkZGVkRmlsdGVycykucmVkdWNlKChvYmosIFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgb2JqW2tleV0gPSBjcmVhdGVGaWx0ZXJGdW5jKHZhbHVlKTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30gYXMge1trZXkgaW4ga2V5b2YgVF06IFByZWRpY2F0ZTxUPn0pIDoge30gYXMge1trZXkgaW4ga2V5b2YgVF06IFByZWRpY2F0ZTxUPn07XHJcbiAgY29uc3QgbWFwcGVkQWxsID0gT2JqZWN0LmVudHJpZXMocy5hbGxGaWx0ZXJzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gbWFwcGVkQWRkT25seVtrZXldIHx8IGNyZWF0ZUZpbHRlckZ1bmModmFsdWUpKTtcclxuICByZXR1cm4gKHtcclxuICAgIGFsbEZpbHRlcnM6IG1hcHBlZEFsbCxcclxuICAgIG9ubHlBZGRlZEZpbHRlcnM6IHMub25seUFkZGVkRmlsdGVycyA/IE9iamVjdC52YWx1ZXMobWFwcGVkQWRkT25seSkgOiB1bmRlZmluZWRcclxuICB9KVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4sIGZpbHRlcnM6IFByZWRpY2F0ZTxhbnk+W10pID0+IHtcclxuICBjb25zdCBjdXJyZW50U3RhdGU6IEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+ID0ge1xyXG4gICAgYWxsRmlsdGVyczogZmlsdGVycyxcclxuICAgIG9ubHlBZGRlZEZpbHRlcnM6IHByZWRpY2F0ZXNPbmx5QWRkZWQocHJldmlvdXNTdGF0ZS5hbGxGaWx0ZXJzLCBmaWx0ZXJzKVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudFN0YXRlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyU3RhdGUgPSA8VD4oZmlsdGVySW5mb3M6IFRpbWVzdGFtcDxGaWx0ZXJJbmZvU3RhdGU8VD4+LCBwcmVkaWNhdGVzOiBUaW1lc3RhbXA8RmlsdGVyUHJlZGljYXRlU3RhdGU8VD4+KTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4gPT4ge1xyXG4gIGNvbnN0IGluZm9zID0gbWFwRmlsdGVySW5mb1N0YXRlVG9QcmVkaWNhdGVTdGF0ZShmaWx0ZXJJbmZvcy52YWx1ZSk7XHJcbiAgY29uc3QgZmlsdGVyc1N0YXRlOiBGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPiA9IHtcclxuICAgIGFsbEZpbHRlcnM6IFsuLi5pbmZvcy5hbGxGaWx0ZXJzLCAuLi5wcmVkaWNhdGVzLnZhbHVlLmFsbEZpbHRlcnNdXHJcbiAgfVxyXG4gIGlmKGZpbHRlckluZm9zLnRpbWVzdGFtcCA+IHByZWRpY2F0ZXMudGltZXN0YW1wICYmICEhZmlsdGVySW5mb3MudmFsdWUub25seUFkZGVkRmlsdGVycyl7XHJcbiAgICBmaWx0ZXJzU3RhdGUub25seUFkZGVkRmlsdGVycyA9IGluZm9zLm9ubHlBZGRlZEZpbHRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIGZpbHRlcnNTdGF0ZS5vbmx5QWRkZWRGaWx0ZXJzID0gcHJlZGljYXRlcy52YWx1ZS5vbmx5QWRkZWRGaWx0ZXJzXHJcbiAgfVxyXG4gIHJldHVybiBmaWx0ZXJzU3RhdGVcclxufVxyXG5cclxuXHJcbmNvbnN0IGZpbHRlck5vbkFjdGl2ZUZpbHRlcnMgPSA8VD4oZmlsdGVyc0RpY3QgOiBGaWx0ZXJJbmZvRGljdCkgPT4gT2JqZWN0LmVudHJpZXMoZmlsdGVyc0RpY3QpLnJlZHVjZSgob2JqICxba2V5LCB2YWx1ZV0pID0+IHsgXHJcbiAgaWYodmFsdWUuYWN0aXZlICE9PSBmYWxzZSl7XHJcbiAgICBvYmpba2V5XSA9IHZhbHVlXHJcbiAgfTtcclxuICByZXR1cm4gb2JqO1xyXG59LCB7fSBhcyBEaWN0aW9uYXJ5PEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXI+KTtcclxuXHJcblxyXG5mdW5jdGlvbiBmaWx0ZXJJbmZvT25seUFkZGVkKHByZXZpb3VzRmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0LCBjdXJyZW50RmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0KTogRmlsdGVySW5mb0RpY3QgfCB1bmRlZmluZWR7XHJcbiAgY29uc3QgcHJldmlvdXNLZXlzID0gT2JqZWN0LmtleXMocHJldmlvdXNGaWx0ZXJJbmZvcyk7XHJcbiAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RmlsdGVySW5mb3MpO1xyXG4gIGNvbnN0IGtleXNJbkJvdGggPSBpbnRlcnNlY3Rpb24ocHJldmlvdXNLZXlzLCBjdXJyZW50S2V5cyk7XHJcbiAgY29uc3Qgc29tZVJlbW92ZWQgPSBwcmV2aW91c0tleXMubGVuZ3RoID4ga2V5c0luQm90aC5sZW5ndGg7XHJcbiAgaWYoc29tZVJlbW92ZWQgfHwgIXByZXZpb3VzS2V5cy5sZW5ndGgpe1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaWYoZmlsdGVyc0luZm9zVXBkYXRlZChwcmV2aW91c0ZpbHRlckluZm9zLCBjdXJyZW50RmlsdGVySW5mb3MpKXtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGNvbnN0IGFkZGVkRmlsdGVycyA9IGRpZmZlcmVuY2UoY3VycmVudEtleXMsIGtleXNJbkJvdGgpLnJlZHVjZSgoZGljdCwga2V5KSA9PiB7XHJcbiAgICBkaWN0W2tleV0gPSBjdXJyZW50RmlsdGVySW5mb3Nba2V5XTtcclxuICAgIHJldHVybiBkaWN0O1xyXG4gIH0sIHt9IGFzIEZpbHRlckluZm9EaWN0KTtcclxuICByZXR1cm4gYWRkZWRGaWx0ZXJzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcmVkaWNhdGVzT25seUFkZGVkKHByZXZpb3VzUHJlZGljYXRlczogUHJlZGljYXRlPGFueT5bXSwgY3VycmVudFByZWRpY2F0ZXM6IFByZWRpY2F0ZTxhbnk+W10pe1xyXG4gIGlmKCFwcmV2aW91c1ByZWRpY2F0ZXMubGVuZ3RoKXtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGNvbnN0IHByZWRpY2F0ZUZpbHRlcnNSZW1vdmVkID0gZGlmZmVyZW5jZShwcmV2aW91c1ByZWRpY2F0ZXMsIGN1cnJlbnRQcmVkaWNhdGVzKS5sZW5ndGg7XHJcbiAgaWYocHJlZGljYXRlRmlsdGVyc1JlbW92ZWQpe1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcmV0dXJuIGRpZmZlcmVuY2UoY3VycmVudFByZWRpY2F0ZXMsIHByZXZpb3VzUHJlZGljYXRlcyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbHRlcnNJbmZvc1VwZGF0ZWQocHJldmlvdXNGaWx0ZXJJbmZvczogRmlsdGVySW5mb0RpY3Q8YW55PiwgY3VycmVudEZpbHRlckluZm9zOiBGaWx0ZXJJbmZvRGljdDxhbnk+KXtcclxuICByZXR1cm4gIU9iamVjdC5lbnRyaWVzKHByZXZpb3VzRmlsdGVySW5mb3MpLmV2ZXJ5KChba2V5LCB2YWxdKSA9PiB7XHJcbiAgICByZXR1cm4gY3VycmVudEZpbHRlckluZm9zW2tleV0uZmlsdGVyVHlwZSA9PT0gdmFsLmZpbHRlclR5cGUgJiYgY3VycmVudEZpbHRlckluZm9zW2tleV0uZmlsdGVyVmFsdWUgPT09IHZhbC5maWx0ZXJWYWx1ZVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVySW5mb1N0YXRlPFQ+IHtcclxuICBhbGxGaWx0ZXJzOiBGaWx0ZXJJbmZvRGljdDxUPiwgXHJcbiAgb25seUFkZGVkRmlsdGVycz86IEZpbHRlckluZm9EaWN0PFQ+IHwgdW5kZWZpbmVkLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+IHtcclxuICBhbGxGaWx0ZXJzOiBQcmVkaWNhdGU8VD5bXSwgXHJcbiAgb25seUFkZGVkRmlsdGVycz86IFByZWRpY2F0ZTxUPltdIHwgdW5kZWZpbmVkLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJJbmZvRGljdDxUID0gYW55PiA9IERpY3Rpb25hcnk8RmlsdGVySW5mbzxhbnksIFQ+IHwgQ3VzdG9tRmlsdGVyPGFueT4+OyJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0YXRlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3RhYmxlLWNvbnRhaW5lci90YWJsZS1jb250YWluZXIuaGVscGVycy9maWx0ZXItc3RhdGUuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbEQsMExBQTBMO0FBQzFMLGlKQUFpSjtBQUVqSixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFJLGFBQWlDLEVBQUUsV0FBMkIsRUFBRSxFQUFFO0lBQ3pHLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBdUI7UUFDdkMsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7S0FDN0UsQ0FBQTtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUksQ0FBcUIsRUFBMkIsRUFBRTtJQUN0RyxNQUFNLGFBQWEsR0FBcUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzNJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxP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ekgsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZXN0YW1wIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbywgY3JlYXRlRmlsdGVyRnVuYyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvXCI7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeVwiO1xuaW1wb3J0IHsgUHJlZGljYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2UsIGludGVyc2VjdGlvbiB9IGZyb20gXCJsb2Rhc2hcIjtcblxuLy9UaGUgaWRlYSBvZiB0aGlzIGlzIHRoYXQgaWYgZmlsdGVycyB3ZXJlIG9ubHkgYWRkZWQsIGFuZCBub25lIHdlcmUgcmVtb3ZlZCBvciBjaGFuZ2VkLCB0aGVuIHdlIG9ubHkgbmVlZCB0byB0YWcgbW9yZSByb3dzIHRvIG5vdCBiZSBzaG93bi4gV2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgYW55ICdkb250IHNob3cnIHRhZ3MuXG4vLyBTbyBpZiBmaWx0ZXJzIHdlcmUgb25seSBhZGRlZCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgYWRkZWQgZmlsdGVycywgaWYgZmlsdGVycyB3ZXJlIHJlbW92ZWQgb3IgY2hhbmdlZCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB1bmRlZmluZWQuXG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGaWx0ZXJJbmZvU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVySW5mb1N0YXRlPFQ+LCBmaWx0ZXJJbmZvczogRmlsdGVySW5mb0RpY3QpID0+IHtcbiAgZmlsdGVySW5mb3MgPSBmaWx0ZXJOb25BY3RpdmVGaWx0ZXJzKGZpbHRlckluZm9zKTtcbiAgY29uc3QgY3VycmVudFN0YXRlOiBGaWx0ZXJJbmZvU3RhdGU8VD4gPSB7XG4gICAgYWxsRmlsdGVyczogZmlsdGVySW5mb3MsXG4gICAgb25seUFkZGVkRmlsdGVyczogZmlsdGVySW5mb09ubHlBZGRlZChwcmV2aW91c1N0YXRlLmFsbEZpbHRlcnMsIGZpbHRlckluZm9zKVxuICB9XG4gIHJldHVybiBjdXJyZW50U3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBtYXBGaWx0ZXJJbmZvU3RhdGVUb1ByZWRpY2F0ZVN0YXRlID0gPFQ+KHM6IEZpbHRlckluZm9TdGF0ZTxUPik6IEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+ID0+IHtcbiAgY29uc3QgbWFwcGVkQWRkT25seToge1trZXkgaW4ga2V5b2YgVF06IFByZWRpY2F0ZTxUPn0gPSBzLm9ubHlBZGRlZEZpbHRlcnMgPyBPYmplY3QuZW50cmllcyhzLm9ubHlBZGRlZEZpbHRlcnMpLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBvYmpba2V5XSA9IGNyZWF0ZUZpbHRlckZ1bmModmFsdWUpO1xuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9IGFzIHtba2V5IGluIGtleW9mIFRdOiBQcmVkaWNhdGU8VD59KSA6IHt9IGFzIHtba2V5IGluIGtleW9mIFRdOiBQcmVkaWNhdGU8VD59O1xuICBjb25zdCBtYXBwZWRBbGwgPSBPYmplY3QuZW50cmllcyhzLmFsbEZpbHRlcnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBtYXBwZWRBZGRPbmx5W2tleV0gfHwgY3JlYXRlRmlsdGVyRnVuYyh2YWx1ZSkpO1xuICByZXR1cm4gKHtcbiAgICBhbGxGaWx0ZXJzOiBtYXBwZWRBbGwsXG4gICAgb25seUFkZGVkRmlsdGVyczogcy5vbmx5QWRkZWRGaWx0ZXJzID8gT2JqZWN0LnZhbHVlcyhtYXBwZWRBZGRPbmx5KSA6IHVuZGVmaW5lZFxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4sIGZpbHRlcnM6IFByZWRpY2F0ZTxhbnk+W10pID0+IHtcbiAgY29uc3QgY3VycmVudFN0YXRlOiBGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPiA9IHtcbiAgICBhbGxGaWx0ZXJzOiBmaWx0ZXJzLFxuICAgIG9ubHlBZGRlZEZpbHRlcnM6IHByZWRpY2F0ZXNPbmx5QWRkZWQocHJldmlvdXNTdGF0ZS5hbGxGaWx0ZXJzLCBmaWx0ZXJzKVxuICB9XG4gIHJldHVybiBjdXJyZW50U3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGaWx0ZXJTdGF0ZSA9IDxUPihmaWx0ZXJJbmZvczogVGltZXN0YW1wPEZpbHRlckluZm9TdGF0ZTxUPj4sIHByZWRpY2F0ZXM6IFRpbWVzdGFtcDxGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPj4pOiBGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPiA9PiB7XG4gIGNvbnN0IGluZm9zID0gbWFwRmlsdGVySW5mb1N0YXRlVG9QcmVkaWNhdGVTdGF0ZShmaWx0ZXJJbmZvcy52YWx1ZSk7XG4gIGNvbnN0IGZpbHRlcnNTdGF0ZTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4gPSB7XG4gICAgYWxsRmlsdGVyczogWy4uLmluZm9zLmFsbEZpbHRlcnMsIC4uLnByZWRpY2F0ZXMudmFsdWUuYWxsRmlsdGVyc11cbiAgfVxuICBpZihmaWx0ZXJJbmZvcy50aW1lc3RhbXAgPiBwcmVkaWNhdGVzLnRpbWVzdGFtcCAmJiAhIWZpbHRlckluZm9zLnZhbHVlLm9ubHlBZGRlZEZpbHRlcnMpe1xuICAgIGZpbHRlcnNTdGF0ZS5vbmx5QWRkZWRGaWx0ZXJzID0gaW5mb3Mub25seUFkZGVkRmlsdGVycztcbiAgfSBlbHNlIHtcbiAgICBmaWx0ZXJzU3RhdGUub25seUFkZGVkRmlsdGVycyA9IHByZWRpY2F0ZXMudmFsdWUub25seUFkZGVkRmlsdGVyc1xuICB9XG4gIHJldHVybiBmaWx0ZXJzU3RhdGVcbn1cblxuXG5jb25zdCBmaWx0ZXJOb25BY3RpdmVGaWx0ZXJzID0gPFQ+KGZpbHRlcnNEaWN0IDogRmlsdGVySW5mb0RpY3QpID0+IE9iamVjdC5lbnRyaWVzKGZpbHRlcnNEaWN0KS5yZWR1Y2UoKG9iaiAsW2tleSwgdmFsdWVdKSA9PiB7IFxuICBpZih2YWx1ZS5hY3RpdmUgIT09IGZhbHNlKXtcbiAgICBvYmpba2V5XSA9IHZhbHVlXG4gIH07XG4gIHJldHVybiBvYmo7XG59LCB7fSBhcyBEaWN0aW9uYXJ5PEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXI+KTtcblxuXG5mdW5jdGlvbiBmaWx0ZXJJbmZvT25seUFkZGVkKHByZXZpb3VzRmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0LCBjdXJyZW50RmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0KTogRmlsdGVySW5mb0RpY3QgfCB1bmRlZmluZWR7XG4gIGNvbnN0IHByZXZpb3VzS2V5cyA9IE9iamVjdC5rZXlzKHByZXZpb3VzRmlsdGVySW5mb3MpO1xuICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRGaWx0ZXJJbmZvcyk7XG4gIGNvbnN0IGtleXNJbkJvdGggPSBpbnRlcnNlY3Rpb24ocHJldmlvdXNLZXlzLCBjdXJyZW50S2V5cyk7XG4gIGNvbnN0IHNvbWVSZW1vdmVkID0gcHJldmlvdXNLZXlzLmxlbmd0aCA+IGtleXNJbkJvdGgubGVuZ3RoO1xuICBpZihzb21lUmVtb3ZlZCB8fCAhcHJldmlvdXNLZXlzLmxlbmd0aCl7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZihmaWx0ZXJzSW5mb3NVcGRhdGVkKHByZXZpb3VzRmlsdGVySW5mb3MsIGN1cnJlbnRGaWx0ZXJJbmZvcykpe1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgYWRkZWRGaWx0ZXJzID0gZGlmZmVyZW5jZShjdXJyZW50S2V5cywga2V5c0luQm90aCkucmVkdWNlKChkaWN0LCBrZXkpID0+IHtcbiAgICBkaWN0W2tleV0gPSBjdXJyZW50RmlsdGVySW5mb3Nba2V5XTtcbiAgICByZXR1cm4gZGljdDtcbiAgfSwge30gYXMgRmlsdGVySW5mb0RpY3QpO1xuICByZXR1cm4gYWRkZWRGaWx0ZXJzO1xufVxuXG5mdW5jdGlvbiBwcmVkaWNhdGVzT25seUFkZGVkKHByZXZpb3VzUHJlZGljYXRlczogUHJlZGljYXRlPGFueT5bXSwgY3VycmVudFByZWRpY2F0ZXM6IFByZWRpY2F0ZTxhbnk+W10pe1xuICBpZighcHJldmlvdXNQcmVkaWNhdGVzLmxlbmd0aCl7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwcmVkaWNhdGVGaWx0ZXJzUmVtb3ZlZCA9IGRpZmZlcmVuY2UocHJldmlvdXNQcmVkaWNhdGVzLCBjdXJyZW50UHJlZGljYXRlcykubGVuZ3RoO1xuICBpZihwcmVkaWNhdGVGaWx0ZXJzUmVtb3ZlZCl7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gZGlmZmVyZW5jZShjdXJyZW50UHJlZGljYXRlcywgcHJldmlvdXNQcmVkaWNhdGVzKTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyc0luZm9zVXBkYXRlZChwcmV2aW91c0ZpbHRlckluZm9zOiBGaWx0ZXJJbmZvRGljdDxhbnk+LCBjdXJyZW50RmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0PGFueT4pe1xuICByZXR1cm4gIU9iamVjdC5lbnRyaWVzKHByZXZpb3VzRmlsdGVySW5mb3MpLmV2ZXJ5KChba2V5LCB2YWxdKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRGaWx0ZXJJbmZvc1trZXldLmZpbHRlclR5cGUgPT09IHZhbC5maWx0ZXJUeXBlICYmIGN1cnJlbnRGaWx0ZXJJbmZvc1trZXldLmZpbHRlclZhbHVlID09PSB2YWwuZmlsdGVyVmFsdWVcbiAgfSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJJbmZvU3RhdGU8VD4ge1xuICBhbGxGaWx0ZXJzOiBGaWx0ZXJJbmZvRGljdDxUPiwgXG4gIG9ubHlBZGRlZEZpbHRlcnM/OiBGaWx0ZXJJbmZvRGljdDxUPiB8IHVuZGVmaW5lZCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPiB7XG4gIGFsbEZpbHRlcnM6IFByZWRpY2F0ZTxUPltdLCBcbiAgb25seUFkZGVkRmlsdGVycz86IFByZWRpY2F0ZTxUPltdIHwgdW5kZWZpbmVkLFxufVxuXG5leHBvcnQgdHlwZSBGaWx0ZXJJbmZvRGljdDxUID0gYW55PiA9IERpY3Rpb25hcnk8RmlsdGVySW5mbzxhbnksIFQ+IHwgQ3VzdG9tRmlsdGVyPGFueT4+OyJdfQ==
@@ -68,4 +68,4 @@ const getGroupHeaders = (data, filterFunc, arr = []) => {
68
68
  getGroupHeaders(h.children, filterFunc, arr); });
69
69
  return arr;
70
70
  };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCeS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZ3JvdXBCeS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELFNBQVMsY0FBYyxDQUFDLElBQVcsRUFBRSxXQUFxQjtJQUN4RCxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBVyxFQUFFLFdBQXFCLEVBQUUsZUFBcUIsRUFBUyxFQUFFO0lBQ3JGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsT0FBTyxN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QUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUE7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQVcsRUFBRSxVQUE4QixFQUFFLE1BQVksRUFBRSxFQUFXLEVBQUU7SUFDL0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgVGltZXN0YW1wIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR3JvdXAsIEdyb3VwZWREYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvVGFibGVTdGF0ZVwiO1xyXG5pbXBvcnQgeyBpbml0SW5kZXhTeW1ib2wgfSBmcm9tIFwiLi9zb3J0LXN0YXRlLmhlbHBlcnNcIjtcclxuXHJcbmZ1bmN0aW9uIGdldEdyb3VwZWREYXRhKGRhdGE6IGFueVtdLCBncm91cEJ5S2V5czogc3RyaW5nW10pOiBhbnlbXSB7XHJcbiAgcmV0dXJuIHRiR3JvdXBCeShkYXRhLCBncm91cEJ5S2V5cyk7XHJcbn1cclxuXHJcbmNvbnN0IHRiR3JvdXBCeSA9IChkYXRhOiBhbnlbXSwgZ3JvdXBCeUtleXM6IHN0cmluZ1tdLCBwYXJlbnRHcm91cE5hbWU/OiBhbnkpOiBhbnlbXSA9PiB7XHJcbiAgY29uc3QgY3VycmVudEtleSA9IGdyb3VwQnlLZXlzWzBdO1xyXG4gIGNvbnN0IHJlcyA9IGdyb3VwQnkoZGF0YSwgY3VycmVudEtleSk7XHJcbiAgY29uc3QgcmVtYWluaW5nR3JvdXBCeUtleXMgPSBncm91cEJ5S2V5cy5zbGljZSgxKTtcclxuICBjb25zdCBmaW5hbEdyb3VwcyA9ICFyZW1haW5pbmdHcm91cEJ5S2V5cy5sZW5ndGg7XHJcbiAgaWYgKHJlbWFpbmluZ0dyb3VwQnlLZXlzLmxlbmd0aCkge1xyXG4gICAgT2JqZWN0LmtleXMocmVzKS5mb3JFYWNoKGtleSA9PiByZXNba2V5XSA9IHRiR3JvdXBCeShyZXNba2V5XSwgcmVtYWluaW5nR3JvdXBCeUtleXMsIGtleSkpXHJcbiAgfVxyXG4gIHJldHVybiBPYmplY3Qua2V5cyhyZXMpLm1hcCgoZ3JvdXBOYW1lLCBpKSA9PiB7XHJcbiAgICBjb25zdCB1bmlxTmFtZSA9IHBhcmVudEdyb3VwTmFtZSA/IGAke3BhcmVudEdyb3VwTmFtZX0tJHtncm91cE5hbWV9YCA6IGAke2dyb3VwTmFtZX1gO1xyXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJzID0gcmVzW2dyb3VwTmFtZV0/LmZpbHRlcihyb3cgPT4gcm93LmlzR3JvdXBIZWFkZXIpID8/IFtdO1xyXG4gICAgcmV0dXJuICh7XHJcbiAgICAgICAgaXNHcm91cEhlYWRlcjogdHJ1ZSxcclxuICAgICAgICBncm91cEhlYWRlckRpc3BsYXk6IGdyb3VwTmFtZSxcclxuICAgICAgICBoYXNUaGVEYXRhOiBmaW5hbEdyb3VwcyxcclxuICAgICAgICBjaGlsZHJlbjogZmluYWxHcm91cHMgPyByZXNbZ3JvdXBOYW1lXSA6IHJlc1tncm91cE5hbWVdLm1hcChkID0+IHtkLnBhZGRpbmcgKz0gMjA7IHJldHVybiBkfSksXHJcbiAgICAgICAgZ3JvdXBOYW1lOiBgdGJfZ3JvdXBfJHt1bmlxTmFtZX1gLFxyXG4gICAgICAgIHBhZGRpbmc6IDEsXHJcbiAgICAgICAga2V5OiBjdXJyZW50S2V5LFxyXG4gICAgICAgIGxlbmd0aCA6IGdyb3VwSGVhZGVycy5yZWR1Y2UoKGFjYywgY3VycikgPT4gY3Vyci5sZW5ndGggKyBhY2MsMCkgKyAoKHJlc1tncm91cE5hbWVdID8/IFtdKS5sZW5ndGggLSBncm91cEhlYWRlcnMubGVuZ3RoKSxcclxuICAgICAgICBbaW5pdEluZGV4U3ltYm9sXTogdW5pcU5hbWUsXHJcbiAgICAgIH0gYXMgR3JvdXBcclxuICAgICk7XHJcbiAgfSlcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUdyb3VwQnlTdGF0ZSh7IGdyb3VwZWREYXRhIH06R3JvdXBCeVN0YXRlLCBbZGF0YSwgZ3JvdXBzLCBleHBhbmRlZEdyb3Vwc10gOiBbVGltZXN0YW1wPGFueVtdPiwgVGltZXN0YW1wPHN0cmluZ1tdPiwgVGltZXN0YW1wPEdyb3VwZWREYXRhW10+XSwgaW5kZXg6IG51bWJlcil7XHJcbiAgaWYoXHJcbiAgICBpbmRleCA9PT0gMFxyXG4gICAgfHwgZGF0YVVwZGF0ZWQoZGF0YSwgZ3JvdXBzLCBleHBhbmRlZEdyb3VwcylcclxuICAgIHx8IGdyb3Vwc1VwZGF0ZWQoZ3JvdXBzLCBleHBhbmRlZEdyb3VwcylcclxuICApe1xyXG4gICAgZ3JvdXBlZERhdGEgPSBncm91cHMudmFsdWUubGVuZ3RoID8gZ2V0R3JvdXBlZERhdGEoZGF0YS52YWx1ZSwgZ3JvdXBzLnZhbHVlKSA6IGRhdGEudmFsdWU7XHJcbiAgfVxyXG4gIGNvbnN0IG5ld0Rpc3BsYXlEYXRhID0gZXhwYW5kZWRHcm91cHMudmFsdWUubGVuZ3RoID09PSAwXHJcbiAgICA/IGdyb3VwZWREYXRhXHJcbiAgICA6IGdyb3VwZWREYXRhLm1hcChncm91cCA9PiBtYXBHcm91cEhlYWRlcihncm91cCwgZXhwYW5kZWRHcm91cHMudmFsdWUpKS5mbGF0KCk7XHJcbiAgcmV0dXJuICh7ZGlzcGxheURhdGE6IG5ld0Rpc3BsYXlEYXRhLCBncm91cGVkRGF0YX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXBHcm91cEhlYWRlcihvYmo6IGFueSwgZGF0YTogR3JvdXBlZERhdGFbXSl7XHJcbiAgY29uc3Qgc2hvd0NoaWxkcmVuID0gZGF0YS5maW5kKGEgPT4gYS5leHBhbmRlZEhlYWRlcnMuaW5jbHVkZXMob2JqLmdyb3VwTmFtZSkpO1xyXG4gIGNvbnN0IGNoaWxkcmVuID0gIXNob3dDaGlsZHJlbiA/IFtdIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5oYXNUaGVEYXRhID8gIG9iai5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogb2JqLmNoaWxkcmVuLm1hcChhID0+IG1hcEdyb3VwSGVhZGVyKGEsIGRhdGEpKVxyXG5cclxuICByZXR1cm4gW29iaiwgLi4uY2hpbGRyZW5dLmZsYXQoKVxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRhVXBkYXRlZChkYXRhOiBUaW1lc3RhbXA8YW55W10+LCBncm91cHM6IFRpbWVzdGFtcDxzdHJpbmdbXT4sIGV4cGFuZGVkR3JvdXBzOiBUaW1lc3RhbXA8R3JvdXBlZERhdGFbXT4pe1xyXG4gIHJldHVybiBkYXRhLnRpbWVzdGFtcCA+IGdyb3Vwcy50aW1lc3RhbXAgJiYgZGF0YS50aW1lc3RhbXAgPiBleHBhbmRlZEdyb3Vwcy50aW1lc3RhbXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdyb3Vwc1VwZGF0ZWQoZ3JvdXBzOiBUaW1lc3RhbXA8c3RyaW5nW10+LCBleHBhbmRlZEdyb3VwczogVGltZXN0YW1wPEdyb3VwZWREYXRhW10+KXtcclxuICByZXR1cm4gZ3JvdXBzLnRpbWVzdGFtcCA+IGV4cGFuZGVkR3JvdXBzLnRpbWVzdGFtcDtcclxufVxyXG5cclxuaW50ZXJmYWNlIEdyb3VwQnlTdGF0ZSB7IGRpc3BsYXlEYXRhOiBhbnlbXSwgZ3JvdXBlZERhdGE6IGFueVtdfTtcclxuXHJcbmV4cG9ydCBjb25zdCBpbml0aWFsR3JvdXBCeVN0YXRlID0geyBkaXNwbGF5RGF0YTogW10sIGdyb3VwZWREYXRhOiBbXX1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRBbGxHcm91cEhlYWRlck5hbWVzID0gKGRhdGE6IGFueVtdKSA9PiB7XHJcbiAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBIZWFkZXJzKGRhdGEsIChkOmFueSkgPT4gZC5pc0dyb3VwSGVhZGVyKTtcclxuICByZXR1cm4gZ3JvdXBCeShncm91cHMsICdrZXknKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0QWxsR3JvdXBIZWFkZXJOYW1lc0J5S2V5cyA9IChkYXRhOiBhbnlbXSwga2V5czogc3RyaW5nW10pID0+IHtcclxuICBjb25zdCBncm91cHMgPSBnZXRHcm91cEhlYWRlcnMoZGF0YSwgKGQ6YW55KSA9PiBkLmlzR3JvdXBIZWFkZXIgJiYga2V5cy5pbmNsdWRlcyhkLmtleSkpO1xyXG4gIHJldHVybiBncm91cEJ5KGdyb3VwcywgJ2tleScpXHJcbn1cclxuXHJcbmNvbnN0IGdldEdyb3VwSGVhZGVycyA9IChkYXRhOiBhbnlbXSwgZmlsdGVyRnVuYzogKGQ6YW55KSA9PiBib29sZWFuLCBhcnI6YW55W10gPSBbXSk6IEdyb3VwW10gPT4ge1xyXG4gIGNvbnN0IGhlYWRlcnMgPSBkYXRhLmZpbHRlcihmaWx0ZXJGdW5jKTtcclxuICBhcnIucHVzaCguLi5oZWFkZXJzKTtcclxuICBoZWFkZXJzLmZvckVhY2goaCA9PiB7aWYoISFoLmNoaWxkcmVuLmxlbmd0aCkgZ2V0R3JvdXBIZWFkZXJzKGguY2hpbGRyZW4sIGZpbHRlckZ1bmMsIGFycil9KTtcclxuICByZXR1cm4gYXJyO1xyXG59Il19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCeS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZ3JvdXBCeS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELFNBQVMsY0FBYyxDQUFDLElBQVcsRUFBRSxXQUFxQjtJQUN4RCxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBVyxFQUFFLFdBQXFCLEVBQUUsZUFBcUIsRUFBUyxFQUFFO0lBQ3JGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsT0FBTyxN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QUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUE7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQVcsRUFBRSxVQUE4QixFQUFFLE1BQVksRUFBRSxFQUFXLEVBQUU7SUFDL0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IFRpbWVzdGFtcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBHcm91cCwgR3JvdXBlZERhdGEgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9UYWJsZVN0YXRlXCI7XG5pbXBvcnQgeyBpbml0SW5kZXhTeW1ib2wgfSBmcm9tIFwiLi9zb3J0LXN0YXRlLmhlbHBlcnNcIjtcblxuZnVuY3Rpb24gZ2V0R3JvdXBlZERhdGEoZGF0YTogYW55W10sIGdyb3VwQnlLZXlzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgcmV0dXJuIHRiR3JvdXBCeShkYXRhLCBncm91cEJ5S2V5cyk7XG59XG5cbmNvbnN0IHRiR3JvdXBCeSA9IChkYXRhOiBhbnlbXSwgZ3JvdXBCeUtleXM6IHN0cmluZ1tdLCBwYXJlbnRHcm91cE5hbWU/OiBhbnkpOiBhbnlbXSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRLZXkgPSBncm91cEJ5S2V5c1swXTtcbiAgY29uc3QgcmVzID0gZ3JvdXBCeShkYXRhLCBjdXJyZW50S2V5KTtcbiAgY29uc3QgcmVtYWluaW5nR3JvdXBCeUtleXMgPSBncm91cEJ5S2V5cy5zbGljZSgxKTtcbiAgY29uc3QgZmluYWxHcm91cHMgPSAhcmVtYWluaW5nR3JvdXBCeUtleXMubGVuZ3RoO1xuICBpZiAocmVtYWluaW5nR3JvdXBCeUtleXMubGVuZ3RoKSB7XG4gICAgT2JqZWN0LmtleXMocmVzKS5mb3JFYWNoKGtleSA9PiByZXNba2V5XSA9IHRiR3JvdXBCeShyZXNba2V5XSwgcmVtYWluaW5nR3JvdXBCeUtleXMsIGtleSkpXG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKHJlcykubWFwKChncm91cE5hbWUsIGkpID0+IHtcbiAgICBjb25zdCB1bmlxTmFtZSA9IHBhcmVudEdyb3VwTmFtZSA/IGAke3BhcmVudEdyb3VwTmFtZX0tJHtncm91cE5hbWV9YCA6IGAke2dyb3VwTmFtZX1gO1xuICAgIGNvbnN0IGdyb3VwSGVhZGVycyA9IHJlc1tncm91cE5hbWVdPy5maWx0ZXIocm93ID0+IHJvdy5pc0dyb3VwSGVhZGVyKSA/PyBbXTtcbiAgICByZXR1cm4gKHtcbiAgICAgICAgaXNHcm91cEhlYWRlcjogdHJ1ZSxcbiAgICAgICAgZ3JvdXBIZWFkZXJEaXNwbGF5OiBncm91cE5hbWUsXG4gICAgICAgIGhhc1RoZURhdGE6IGZpbmFsR3JvdXBzLFxuICAgICAgICBjaGlsZHJlbjogZmluYWxHcm91cHMgPyByZXNbZ3JvdXBOYW1lXSA6IHJlc1tncm91cE5hbWVdLm1hcChkID0+IHtkLnBhZGRpbmcgKz0gMjA7IHJldHVybiBkfSksXG4gICAgICAgIGdyb3VwTmFtZTogYHRiX2dyb3VwXyR7dW5pcU5hbWV9YCxcbiAgICAgICAgcGFkZGluZzogMSxcbiAgICAgICAga2V5OiBjdXJyZW50S2V5LFxuICAgICAgICBsZW5ndGggOiBncm91cEhlYWRlcnMucmVkdWNlKChhY2MsIGN1cnIpID0+IGN1cnIubGVuZ3RoICsgYWNjLDApICsgKChyZXNbZ3JvdXBOYW1lXSA/PyBbXSkubGVuZ3RoIC0gZ3JvdXBIZWFkZXJzLmxlbmd0aCksXG4gICAgICAgIFtpbml0SW5kZXhTeW1ib2xdOiB1bmlxTmFtZSxcbiAgICAgIH0gYXMgR3JvdXBcbiAgICApO1xuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlR3JvdXBCeVN0YXRlKHsgZ3JvdXBlZERhdGEgfTpHcm91cEJ5U3RhdGUsIFtkYXRhLCBncm91cHMsIGV4cGFuZGVkR3JvdXBzXSA6IFtUaW1lc3RhbXA8YW55W10+LCBUaW1lc3RhbXA8c3RyaW5nW10+LCBUaW1lc3RhbXA8R3JvdXBlZERhdGFbXT5dLCBpbmRleDogbnVtYmVyKXtcbiAgaWYoXG4gICAgaW5kZXggPT09IDBcbiAgICB8fCBkYXRhVXBkYXRlZChkYXRhLCBncm91cHMsIGV4cGFuZGVkR3JvdXBzKVxuICAgIHx8IGdyb3Vwc1VwZGF0ZWQoZ3JvdXBzLCBleHBhbmRlZEdyb3VwcylcbiAgKXtcbiAgICBncm91cGVkRGF0YSA9IGdyb3Vwcy52YWx1ZS5sZW5ndGggPyBnZXRHcm91cGVkRGF0YShkYXRhLnZhbHVlLCBncm91cHMudmFsdWUpIDogZGF0YS52YWx1ZTtcbiAgfVxuICBjb25zdCBuZXdEaXNwbGF5RGF0YSA9IGV4cGFuZGVkR3JvdXBzLnZhbHVlLmxlbmd0aCA9PT0gMFxuICAgID8gZ3JvdXBlZERhdGFcbiAgICA6IGdyb3VwZWREYXRhLm1hcChncm91cCA9PiBtYXBHcm91cEhlYWRlcihncm91cCwgZXhwYW5kZWRHcm91cHMudmFsdWUpKS5mbGF0KCk7XG4gIHJldHVybiAoe2Rpc3BsYXlEYXRhOiBuZXdEaXNwbGF5RGF0YSwgZ3JvdXBlZERhdGF9KTtcbn1cblxuZnVuY3Rpb24gbWFwR3JvdXBIZWFkZXIob2JqOiBhbnksIGRhdGE6IEdyb3VwZWREYXRhW10pe1xuICBjb25zdCBzaG93Q2hpbGRyZW4gPSBkYXRhLmZpbmQoYSA9PiBhLmV4cGFuZGVkSGVhZGVycy5pbmNsdWRlcyhvYmouZ3JvdXBOYW1lKSk7XG4gIGNvbnN0IGNoaWxkcmVuID0gIXNob3dDaGlsZHJlbiA/IFtdIDogXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmouaGFzVGhlRGF0YSA/ICBvYmouY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBvYmouY2hpbGRyZW4ubWFwKGEgPT4gbWFwR3JvdXBIZWFkZXIoYSwgZGF0YSkpXG5cbiAgcmV0dXJuIFtvYmosIC4uLmNoaWxkcmVuXS5mbGF0KClcbn1cblxuZnVuY3Rpb24gZGF0YVVwZGF0ZWQoZGF0YTogVGltZXN0YW1wPGFueVtdPiwgZ3JvdXBzOiBUaW1lc3RhbXA8c3RyaW5nW10+LCBleHBhbmRlZEdyb3VwczogVGltZXN0YW1wPEdyb3VwZWREYXRhW10+KXtcbiAgcmV0dXJuIGRhdGEudGltZXN0YW1wID4gZ3JvdXBzLnRpbWVzdGFtcCAmJiBkYXRhLnRpbWVzdGFtcCA+IGV4cGFuZGVkR3JvdXBzLnRpbWVzdGFtcDtcbn1cblxuZnVuY3Rpb24gZ3JvdXBzVXBkYXRlZChncm91cHM6IFRpbWVzdGFtcDxzdHJpbmdbXT4sIGV4cGFuZGVkR3JvdXBzOiBUaW1lc3RhbXA8R3JvdXBlZERhdGFbXT4pe1xuICByZXR1cm4gZ3JvdXBzLnRpbWVzdGFtcCA+IGV4cGFuZGVkR3JvdXBzLnRpbWVzdGFtcDtcbn1cblxuaW50ZXJmYWNlIEdyb3VwQnlTdGF0ZSB7IGRpc3BsYXlEYXRhOiBhbnlbXSwgZ3JvdXBlZERhdGE6IGFueVtdfTtcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxHcm91cEJ5U3RhdGUgPSB7IGRpc3BsYXlEYXRhOiBbXSwgZ3JvdXBlZERhdGE6IFtdfVxuXG5leHBvcnQgY29uc3QgZ2V0QWxsR3JvdXBIZWFkZXJOYW1lcyA9IChkYXRhOiBhbnlbXSkgPT4ge1xuICBjb25zdCBncm91cHMgPSBnZXRHcm91cEhlYWRlcnMoZGF0YSwgKGQ6YW55KSA9PiBkLmlzR3JvdXBIZWFkZXIpO1xuICByZXR1cm4gZ3JvdXBCeShncm91cHMsICdrZXknKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0QWxsR3JvdXBIZWFkZXJOYW1lc0J5S2V5cyA9IChkYXRhOiBhbnlbXSwga2V5czogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBIZWFkZXJzKGRhdGEsIChkOmFueSkgPT4gZC5pc0dyb3VwSGVhZGVyICYmIGtleXMuaW5jbHVkZXMoZC5rZXkpKTtcbiAgcmV0dXJuIGdyb3VwQnkoZ3JvdXBzLCAna2V5Jylcbn1cblxuY29uc3QgZ2V0R3JvdXBIZWFkZXJzID0gKGRhdGE6IGFueVtdLCBmaWx0ZXJGdW5jOiAoZDphbnkpID0+IGJvb2xlYW4sIGFycjphbnlbXSA9IFtdKTogR3JvdXBbXSA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSBkYXRhLmZpbHRlcihmaWx0ZXJGdW5jKTtcbiAgYXJyLnB1c2goLi4uaGVhZGVycyk7XG4gIGhlYWRlcnMuZm9yRWFjaChoID0+IHtpZighIWguY2hpbGRyZW4ubGVuZ3RoKSBnZXRHcm91cEhlYWRlcnMoaC5jaGlsZHJlbiwgZmlsdGVyRnVuYywgYXJyKX0pO1xuICByZXR1cm4gYXJyO1xufSJdfQ==
@@ -33,4 +33,4 @@ function getSameTailLength(previousSorts, currentSorts) {
33
33
  }
34
34
  export const initIndexSymbol = Symbol('tb_init_index');
35
35
  export const initialSortState = { sortsToRun: [], allSorts: [] };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1zdGF0ZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsbUtBQW1LO0FBQ25LLGlLQUFpSztBQUNqSyw4R0FBOEc7QUFDOUcsOEpBQThKO0FBQzlKLGFBQWE7QUFDYixnSEFBZ0g7QUFDaEgsTUFBTSxVQUFVLGVBQWUsQ0FBQyxhQUF3QixFQUFFLFlBQW9CO0lBQzVFLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBRyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0UsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUMvRSxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUlELFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLGVBQW9DLEVBQUUsU0FBUyxFQUFFLEtBQXNCLEVBQUMsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQy9ELE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBR0QsU0FBUyxpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQ3BFLGFBQWEsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNJLElBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDcEUsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xyXG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZlwiO1xyXG5pbXBvcnQgeyBkaWZmZXJlbmNlIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuLy8gSWYgd2UgYXJlIG9ubHkgc29ydGluZyBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIFNvcnRzW10gd2UgY2FuICdvcHRpbWl6ZScuIElmIHRoZSBzb3J0IGFycmF5IHdhcyBmaXJzdCBieSBjb2x1bW4gYSBhc2MgdGhlbiBieSBjb2x1bW4gYiBkZXNjIHRoZW4gYnkgY29sdW1uIGMgYXNjLFxyXG4vLyBhbmQgbm93IGl0IGlzIGZpcnN0IGJ5IGNvbHVtbiBkIGFzYyB0aGVuIGJ5IGNvbHVtbiBhIGRlc2MgdGhlbiBieSBjb2x1bW4gYiBkZXNjIHRoZW4gYnkgY29sdW1uIGMgYXNjLCB3ZSBkb250IG5lZWQgdG8gcmVydW4gdGhlIHRhaWwsIGkuZS4gZm9yIGN1bHVtbiBiIGFuZCBjLlxyXG4vLyBTbyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbWF0Y2hpbmcgdGFpbCBvZiB0aGUgc29ydCBhcnJheS4gVGhlbiBzb3J0c1RvUnVuIHdpbGwgYmUgdGhlIG5vbi1tYXRjaGluZyBoZWFkLlxyXG4vLyBCdXQgaWYgYW55IHNvcnRzIHdlcmUgcmVtb3ZlZCB0aGUgb25seSB3YXkgdG8gJ3Vuc29ydCcgaXMgdG8gc3RhcnQgYnkgdGhlIG9yaWdpbmFsIGRhdGEgYW5kIHJ1biBhbGwgdGhlIGV4aXN0aW5nIHNvcnRzIGFnYWluLCBzbyAnc29ydHMgdG8gcnVuJyB3aWxsIGJlIGFsbFxyXG4vLyB0aGUgc29ydHMuXHJcbi8vIFdlIGFsd2F5cyBwYXNzIGFsbFNvcnRzIHRvIHRoZSBjb250YWluZXIgYmVjYXVzZSBpZiB0aGUgdGFibGUgZGF0YSBjaGFuZ2VzIGFsbCB0aGUgc29ydHMgd2lsbCBuZWVkIHRvIGJlIHJ1bi5cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNvcnRTdGF0ZShwcmV2aW91c1NvcnRzOiBTb3J0U3RhdGUsIGN1cnJlbnRTb3J0czogU29ydFtdKTogU29ydFN0YXRle1xyXG4gIGN1cnJlbnRTb3J0cyA9IGFkZEluaXRTb3J0KGN1cnJlbnRTb3J0cyk7XHJcbiAgaWYoc29ydHNSZW1vdmVkKHByZXZpb3VzU29ydHMuYWxsU29ydHMsIGN1cnJlbnRTb3J0cykpe1xyXG4gICAgcmV0dXJuICh7c29ydHNUb1J1bjogY3VycmVudFNvcnRzLCBhbGxTb3J0czogY3VycmVudFNvcnRzfSk7XHJcbiAgfVxyXG4gIGNvbnN0IHNhbWVUYWlsTGVuZ3RoID0gZ2V0U2FtZVRhaWxMZW5ndGgocHJldmlvdXNTb3J0cy5hbGxTb3J0cywgY3VycmVudFNvcnRzKTtcclxuICBjb25zdCBzb3J0c1RvUnVuID0gY3VycmVudFNvcnRzLnNsaWNlKDAsIGN1cnJlbnRTb3J0cy5sZW5ndGggLSBzYW1lVGFpbExlbmd0aCk7XHJcbiAgcmV0dXJuICh7c29ydHNUb1J1biwgYWxsU29ydHM6IGN1cnJlbnRTb3J0c30pO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7IHNvcnRzVG9SdW46IFNvcnRbXSwgYWxsU29ydHM6IFNvcnRbXX1cclxuXHJcbmZ1bmN0aW9uIGFkZEluaXRTb3J0KHNvcnRzOiBTb3J0W10pe1xyXG4gIHJldHVybiBbLi4uc29ydHMsIHthY3RpdmU6IGluaXRJbmRleFN5bWJvbCBhcyB1bmtub3duIGFzIHN0cmluZywgZGlyZWN0aW9uOiAnYXNjJyBhcyBTb3J0RGlyZWN0aW9ufV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNvcnRzUmVtb3ZlZChwcmV2aW91c1NvcnRzOiBTb3J0W10sIGN1cnJlbnRTb3J0czogU29ydFtdKTogYm9vbGVhbntcclxuICBjb25zdCBwcmV2aW91c1NvcnRlZENvbHVtbnMgPSBwcmV2aW91c1NvcnRzLm1hcChzID0+IHMuYWN0aXZlKTtcclxuICBjb25zdCBjdXJyZW50U29ydGVkQ29sdW1ucyA9IGN1cnJlbnRTb3J0cy5tYXAocyA9PiBzLmFjdGl2ZSk7XHJcbiAgY29uc3Qgc29ydHNSZW1vdmVkID0gISFkaWZmZXJlbmNlKHByZXZpb3VzU29ydGVkQ29sdW1ucywgY3VycmVudFNvcnRlZENvbHVtbnMpLmxlbmd0aDtcclxuICByZXR1cm4gc29ydHNSZW1vdmVkO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0U2FtZVRhaWxMZW5ndGgocHJldmlvdXNTb3J0czogU29ydFtdLCBjdXJyZW50U29ydHM6IFNvcnRbXSl7XHJcbiAgcHJldmlvdXNTb3J0cyA9IFsuLi5wcmV2aW91c1NvcnRzXS5yZXZlcnNlKCk7XHJcbiAgY3VycmVudFNvcnRzID0gWy4uLmN1cnJlbnRTb3J0c10ucmV2ZXJzZSgpO1xyXG4gIGxldCBpbmRleE9mQ2hhbmdlID0gY3VycmVudFNvcnRzLmZpbmRJbmRleCgocywgaSkgPT4gcy5hY3RpdmUgIT09IHByZXZpb3VzU29ydHNbaV0/LmFjdGl2ZSB8fCBzLmRpcmVjdGlvbiAhPT0gcHJldmlvdXNTb3J0c1tpXT8uZGlyZWN0aW9uKTtcclxuICBpZihpbmRleE9mQ2hhbmdlID09PSAtMSkgcmV0dXJuIGluZGV4T2ZDaGFuZ2UgPSBjdXJyZW50U29ydHMubGVuZ3RoO1xyXG4gIHJldHVybiBpbmRleE9mQ2hhbmdlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdEluZGV4U3ltYm9sID0gU3ltYm9sKCd0Yl9pbml0X2luZGV4Jyk7XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdGlhbFNvcnRTdGF0ZTogU29ydFN0YXRlID0geyBzb3J0c1RvUnVuOiBbXSwgYWxsU29ydHM6IFtdfTsiXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1zdGF0ZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsbUtBQW1LO0FBQ25LLGlLQUFpSztBQUNqSyw4R0FBOEc7QUFDOUcsOEpBQThKO0FBQzlKLGFBQWE7QUFDYixnSEFBZ0g7QUFDaEgsTUFBTSxVQUFVLGVBQWUsQ0FBQyxhQUF3QixFQUFFLFlBQW9CO0lBQzVFLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBRyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0UsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUMvRSxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUlELFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLGVBQW9DLEVBQUUsU0FBUyxFQUFFLEtBQXNCLEVBQUMsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQy9ELE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBR0QsU0FBUyxpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQ3BFLGFBQWEsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNJLElBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDcEUsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWZcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5cbi8vIElmIHdlIGFyZSBvbmx5IHNvcnRpbmcgZHVlIHRvIGEgY2hhbmdlIGluIHRoZSBTb3J0c1tdIHdlIGNhbiAnb3B0aW1pemUnLiBJZiB0aGUgc29ydCBhcnJheSB3YXMgZmlyc3QgYnkgY29sdW1uIGEgYXNjIHRoZW4gYnkgY29sdW1uIGIgZGVzYyB0aGVuIGJ5IGNvbHVtbiBjIGFzYyxcbi8vIGFuZCBub3cgaXQgaXMgZmlyc3QgYnkgY29sdW1uIGQgYXNjIHRoZW4gYnkgY29sdW1uIGEgZGVzYyB0aGVuIGJ5IGNvbHVtbiBiIGRlc2MgdGhlbiBieSBjb2x1bW4gYyBhc2MsIHdlIGRvbnQgbmVlZCB0byByZXJ1biB0aGUgdGFpbCwgaS5lLiBmb3IgY3VsdW1uIGIgYW5kIGMuXG4vLyBTbyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbWF0Y2hpbmcgdGFpbCBvZiB0aGUgc29ydCBhcnJheS4gVGhlbiBzb3J0c1RvUnVuIHdpbGwgYmUgdGhlIG5vbi1tYXRjaGluZyBoZWFkLlxuLy8gQnV0IGlmIGFueSBzb3J0cyB3ZXJlIHJlbW92ZWQgdGhlIG9ubHkgd2F5IHRvICd1bnNvcnQnIGlzIHRvIHN0YXJ0IGJ5IHRoZSBvcmlnaW5hbCBkYXRhIGFuZCBydW4gYWxsIHRoZSBleGlzdGluZyBzb3J0cyBhZ2Fpbiwgc28gJ3NvcnRzIHRvIHJ1bicgd2lsbCBiZSBhbGxcbi8vIHRoZSBzb3J0cy5cbi8vIFdlIGFsd2F5cyBwYXNzIGFsbFNvcnRzIHRvIHRoZSBjb250YWluZXIgYmVjYXVzZSBpZiB0aGUgdGFibGUgZGF0YSBjaGFuZ2VzIGFsbCB0aGUgc29ydHMgd2lsbCBuZWVkIHRvIGJlIHJ1bi5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTb3J0U3RhdGUocHJldmlvdXNTb3J0czogU29ydFN0YXRlLCBjdXJyZW50U29ydHM6IFNvcnRbXSk6IFNvcnRTdGF0ZXtcbiAgY3VycmVudFNvcnRzID0gYWRkSW5pdFNvcnQoY3VycmVudFNvcnRzKTtcbiAgaWYoc29ydHNSZW1vdmVkKHByZXZpb3VzU29ydHMuYWxsU29ydHMsIGN1cnJlbnRTb3J0cykpe1xuICAgIHJldHVybiAoe3NvcnRzVG9SdW46IGN1cnJlbnRTb3J0cywgYWxsU29ydHM6IGN1cnJlbnRTb3J0c30pO1xuICB9XG4gIGNvbnN0IHNhbWVUYWlsTGVuZ3RoID0gZ2V0U2FtZVRhaWxMZW5ndGgocHJldmlvdXNTb3J0cy5hbGxTb3J0cywgY3VycmVudFNvcnRzKTtcbiAgY29uc3Qgc29ydHNUb1J1biA9IGN1cnJlbnRTb3J0cy5zbGljZSgwLCBjdXJyZW50U29ydHMubGVuZ3RoIC0gc2FtZVRhaWxMZW5ndGgpO1xuICByZXR1cm4gKHtzb3J0c1RvUnVuLCBhbGxTb3J0czogY3VycmVudFNvcnRzfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFN0YXRlIHsgc29ydHNUb1J1bjogU29ydFtdLCBhbGxTb3J0czogU29ydFtdfVxuXG5mdW5jdGlvbiBhZGRJbml0U29ydChzb3J0czogU29ydFtdKXtcbiAgcmV0dXJuIFsuLi5zb3J0cywge2FjdGl2ZTogaW5pdEluZGV4U3ltYm9sIGFzIHVua25vd24gYXMgc3RyaW5nLCBkaXJlY3Rpb246ICdhc2MnIGFzIFNvcnREaXJlY3Rpb259XTtcbn1cblxuZnVuY3Rpb24gc29ydHNSZW1vdmVkKHByZXZpb3VzU29ydHM6IFNvcnRbXSwgY3VycmVudFNvcnRzOiBTb3J0W10pOiBib29sZWFue1xuICBjb25zdCBwcmV2aW91c1NvcnRlZENvbHVtbnMgPSBwcmV2aW91c1NvcnRzLm1hcChzID0+IHMuYWN0aXZlKTtcbiAgY29uc3QgY3VycmVudFNvcnRlZENvbHVtbnMgPSBjdXJyZW50U29ydHMubWFwKHMgPT4gcy5hY3RpdmUpO1xuICBjb25zdCBzb3J0c1JlbW92ZWQgPSAhIWRpZmZlcmVuY2UocHJldmlvdXNTb3J0ZWRDb2x1bW5zLCBjdXJyZW50U29ydGVkQ29sdW1ucykubGVuZ3RoO1xuICByZXR1cm4gc29ydHNSZW1vdmVkO1xufVxuXG5cbmZ1bmN0aW9uIGdldFNhbWVUYWlsTGVuZ3RoKHByZXZpb3VzU29ydHM6IFNvcnRbXSwgY3VycmVudFNvcnRzOiBTb3J0W10pe1xuICBwcmV2aW91c1NvcnRzID0gWy4uLnByZXZpb3VzU29ydHNdLnJldmVyc2UoKTtcbiAgY3VycmVudFNvcnRzID0gWy4uLmN1cnJlbnRTb3J0c10ucmV2ZXJzZSgpO1xuICBsZXQgaW5kZXhPZkNoYW5nZSA9IGN1cnJlbnRTb3J0cy5maW5kSW5kZXgoKHMsIGkpID0+IHMuYWN0aXZlICE9PSBwcmV2aW91c1NvcnRzW2ldPy5hY3RpdmUgfHwgcy5kaXJlY3Rpb24gIT09IHByZXZpb3VzU29ydHNbaV0/LmRpcmVjdGlvbik7XG4gIGlmKGluZGV4T2ZDaGFuZ2UgPT09IC0xKSByZXR1cm4gaW5kZXhPZkNoYW5nZSA9IGN1cnJlbnRTb3J0cy5sZW5ndGg7XG4gIHJldHVybiBpbmRleE9mQ2hhbmdlO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdEluZGV4U3ltYm9sID0gU3ltYm9sKCd0Yl9pbml0X2luZGV4Jyk7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsU29ydFN0YXRlOiBTb3J0U3RhdGUgPSB7IHNvcnRzVG9SdW46IFtdLCBhbGxTb3J0czogW119OyJdfQ==
@@ -1,11 +1,11 @@
1
1
  import { Component, Input, EventEmitter, Output, ContentChildren, ChangeDetectionStrategy, ViewChild, inject, ContentChild, ElementRef, Injector, contentChildren, computed, effect, untracked, } from '@angular/core';
2
2
  import { BehaviorSubject, ReplaySubject, combineLatest, of } from 'rxjs';
3
3
  import { FieldType } from '../../interfaces/report-def';
4
- import { map, tap, withLatestFrom, mergeAll, scan, switchAll, startWith, timestamp, mergeMap, filter, switchMap } from 'rxjs/operators';
4
+ import { map, tap, withLatestFrom, mergeAll, scan, switchAll, startWith, timestamp, mergeMap, filter } from 'rxjs/operators';
5
5
  import { MatRowDef } from '@angular/material/table';
6
6
  import { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';
7
7
  import { stateIs, TableStore } from '../../classes/table-store';
8
- import { notNull } from '../../../rxjs/rxjs-operators';
8
+ import { mapArray, notNull } from '../../../rxjs/rxjs-operators';
9
9
  import { ExportToCsvService } from '../../services/export-to-csv.service';
10
10
  import { ArrayDefaults } from '../../classes/DefaultSettings';
11
11
  import { TableBuilderConfigToken } from '../../classes/TableBuilderConfig';
@@ -28,7 +28,6 @@ import { PaginatorComponent } from '../generic-table/paginator.component';
28
28
  import { TableBuilderDataSource } from '../../classes/TableBuilderDataSource';
29
29
  import { GenericTableComponent } from '../generic-table/generic-table.component';
30
30
  import { toObservable, toSignal } from '@angular/core/rxjs-interop';
31
- import { DataStore } from '../../classes/data-store';
32
31
  import * as i0 from "@angular/core";
33
32
  import * as i1 from "@angular/common";
34
33
  import * as i2 from "../generic-table/paginator.component";
@@ -51,7 +50,6 @@ export class TableContainerComponent {
51
50
  props = { ...defaultProps };
52
51
  dataSubject = new ReplaySubject(1);
53
52
  state = inject(TableStore);
54
- dataStore = inject(DataStore);
55
53
  config = inject(TableBuilderConfigToken);
56
54
  exportToCsvService = inject((ExportToCsvService));
57
55
  wrapper = inject(TableWrapperDirective, { optional: true });
@@ -94,10 +92,7 @@ export class TableContainerComponent {
94
92
  paginatorComponent;
95
93
  genericTable;
96
94
  customRows;
97
- $customCells = contentChildren(CustomCellDirective);
98
- $myColumns = computed(() => {
99
- return this.state.$metaDataArray().map(metaData => ({ metaData, customCell: this.$customCells().find(cc => cc.customCell === metaData.key) }));
100
- });
95
+ customCells;
101
96
  tableElRef;
102
97
  tableBuilder;
103
98
  tableId;
@@ -119,6 +114,9 @@ export class TableContainerComponent {
119
114
  set groupHeaderTemplate(template) {
120
115
  this.props.groupHeaderTemplate = template;
121
116
  }
117
+ set groupHeaderHeight(value) {
118
+ this.props.groupHeaderHeight = value;
119
+ }
122
120
  trackBy;
123
121
  inputFilters;
124
122
  selection$ = new EventEmitter();
@@ -133,6 +131,7 @@ export class TableContainerComponent {
133
131
  displayData = this.displayDataSubject.pipe(switchAll(), defaultShareReplay());
134
132
  $displayData = toSignal(this.displayData, { initialValue: [] });
135
133
  collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));
134
+ myColumns$;
136
135
  ngOnDestroy() {
137
136
  if (this.tableId) {
138
137
  this.stateService.saveTableStateToLocal({ tableId: this.tableId, tableState: this.state.getSavableStateSignal() });
@@ -181,21 +180,11 @@ export class TableContainerComponent {
181
180
  this.displayDataSubject.next(flatGrouped$);
182
181
  this.dataSubject.next(sortedAndFilteredData$);
183
182
  this.state.on(this.displayData, (data) => {
184
- this.dataStore.patchState({ dataLen: data.length });
183
+ this.state.updateState({ dataLen: data.length });
185
184
  });
186
185
  }
187
186
  ngOnInit() {
188
- const customCells$ = toObservable(this.$customCells, { injector: this.injector });
189
- this.state.setLinkMaps(this.tableBuilder.metaData$.pipe(map(createLinkCreatorDict)));
190
- const c = customCells$.pipe(switchMap(c => c.length ? combineLatest(c.map(c => c.$metaData)) : of([])));
191
- this.state.setMetaData(combineLatest([this.tableBuilder.metaData$, c]).pipe(map(([mds, customCells]) => {
192
- mds = mds.map(this.mapArrayFieldsMetaDatas);
193
- return [
194
- ...mds,
195
- ...customCells.map(md => this.mergeMetaData(md, mds.find(item => item.key === md.key)))
196
- ];
197
- })));
198
- const ds = new TableBuilderDataSource(this.displayData, this.state, this.dataStore);
187
+ const ds = new TableBuilderDataSource(this.displayData, this.state);
199
188
  this.state.updateState({ props: {
200
189
  dataSource: ds,
201
190
  ...this.props
@@ -203,24 +192,6 @@ export class TableContainerComponent {
203
192
  this.initializeState();
204
193
  this.initializeData();
205
194
  }
206
- mergeMetaData(metaData1, metaData2) {
207
- if (!metaData2) {
208
- metaData1.noExport = true;
209
- return metaData1;
210
- }
211
- if (!metaData1.displayName)
212
- metaData1.displayName = metaData2.displayName;
213
- if (!metaData1.preSort)
214
- metaData1.preSort = metaData2.preSort;
215
- if (!metaData1.order)
216
- metaData1.order = metaData2.order;
217
- if (!metaData1.width)
218
- metaData1.width = metaData2.width;
219
- if (metaData2.fieldType)
220
- metaData1.fieldType = metaData2.fieldType;
221
- metaData1.noExport = !metaData2;
222
- return metaData1;
223
- }
224
195
  exportToCsv() {
225
196
  const sorted = this.data.pipe(withLatestFrom(this.state.sort$), map(([data, sorted]) => sortData(data, sorted)));
226
197
  this.exportToCsvService.exportToCsv(sorted);
@@ -231,12 +202,25 @@ export class TableContainerComponent {
231
202
  };
232
203
  collapseAllGroups = () => this.state.collapseAll();
233
204
  ngAfterContentInit() {
205
+ this.initializeColumns();
234
206
  this.state.runOnceWhen(stateIs(InitializationState.LoadedFromStore), state => {
235
207
  this.addFilterDirectives(state);
236
208
  this.state.updateState({ initializationState: InitializationState.Ready });
237
209
  });
238
210
  }
239
- mapArrayFieldsMetaDatas = (meta) => {
211
+ initializeColumns() {
212
+ const customCellMap = new Map(this.customCells.map(cc => [cc.customCell, cc]));
213
+ this.state.setMetaData(this.tableBuilder.metaData$.pipe(map((mds) => {
214
+ mds = mds.map(this.mapMetaDatas);
215
+ return [
216
+ ...mds,
217
+ ...this.customCells.map(cc => cc.getMetaData(mds.find(item => item.key === cc.customCell)))
218
+ ];
219
+ })));
220
+ this.state.setLinkMaps(this.tableBuilder.metaData$.pipe(map(createLinkCreatorDict)));
221
+ this.myColumns$ = this.state.metaDataArray$.pipe(mapArray(metaData => ({ metaData, customCell: customCellMap.get(metaData.key) })), defaultShareReplay());
222
+ }
223
+ mapMetaDatas = (meta) => {
240
224
  if (meta.fieldType === FieldType.Array) {
241
225
  const additional = { ...meta.additional };
242
226
  additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;
@@ -264,11 +248,11 @@ export class TableContainerComponent {
264
248
  };
265
249
  $useVirtual = this.state.$isVirtual;
266
250
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
267
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TableContainerComponent, isStandalone: true, selector: "tb-table-container", inputs: { tableBuilder: "tableBuilder", tableId: "tableId", indexColumn: "indexColumn", selectionColumn: "selectionColumn", isSticky: "isSticky", stickyFooter: "stickyFooter", pageSize: "pageSize", groupHeaderTemplate: "groupHeaderTemplate", trackBy: "trackBy", inputFilters: "inputFilters" }, outputs: { selection$: "selection$", data: "data", onStateReset: "onStateReset", onSaveState: "onSaveState", state$: "state$" }, providers: [TableStore, ExportToCsvService, WrapperFilterStore, DataStore], queries: [{ propertyName: "filterDirectives", predicate: TableFilterDirective, descendants: true, isSignal: true }, { propertyName: "customFilterDirectives", predicate: TableCustomFilterDirective, descendants: true, isSignal: true }, { propertyName: "$customCells", predicate: CustomCellDirective, isSignal: true }, { propertyName: "tableElRef", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "customRows", predicate: MatRowDef }], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }, { propertyName: "genericTable", first: true, predicate: GenericTableComponent, descendants: true }], ngImport: i0, template: "<ng-content select=\"[before]\" />\r\n\r\n<ng-container multiSort *ngrxLet=\"state.tableSettings$ as tableSettings\">\r\n <div class=\"header-wrapper\">\r\n <div class=\"title\">\r\n @if ((!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed) {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n @if((state.groupByKeys$ | async)?.length){\r\n <group-by-list />\r\n }\r\n </div>\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!(collapseHeader$ | async)) {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #mainMenu='matMenu'>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n @else {\r\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n <div class=\"table-wrapper\">\r\n @if($useVirtual())\r\n {\r\n <tb-virtual-scroll-container>\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n </tb-virtual-scroll-container>\r\n }\r\n @else\r\n {\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n }\r\n\r\n </div>\r\n @if(tableSettings.usePaginator)\r\n {\r\n <div class=\"paginator\">\r\n <tb-paginator #tbPaginator [data$]=\"data\" [tableElRef]=\"tableElRef\" />\r\n\r\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\r\n (click)=\"state.toggleCollapseFooter()\">\r\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n </div>\r\n }\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n @if (!!tableId) {<tb-profiles-menu [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>}\r\n </ng-template>\r\n\r\n <ng-template #headerMenuExtra>\r\n <button mat-menu-item (click)=\"resetState()\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset table</span>\r\n </button>\r\n @if (!tableSettings.hideExport) {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (tableId) {\r\n <button stop-propagation mat-menu-item (click)=\"pm.trigger()?.toggleMenu()\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n <span>Profiles</span>\r\n </button>\r\n <tb-profiles-menu class=\"profiles-menu\" #pm [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>\r\n }\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.table-wrapper{overflow-x:auto}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}.pointer{cursor:pointer}.add-key{width:90%}.paginator{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff;bottom:0;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.profiles-menu{visibility:hidden;width:0px;height:0px;display:block;overflow:hidden;position:absolute;top:50px}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"], dependencies: [{ kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.PaginatorComponent, selector: "tb-paginator", inputs: ["data$", "tableElRef"] }, { kind: "directive", type: i3.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: i4.MultiSortDirective, selector: "[multiSort]", inputs: ["matSortDisabled"], exportAs: ["multiSort"] }, { kind: "component", type: i5.GroupByListComponent, selector: "group-by-list" }, { kind: "component", type: i6.FilterChipsComponent, selector: "lib-filter-list" }, { kind: "component", type: i7.GenFilterDisplayerComponent, selector: "tb-filter-displayer" }, { kind: "component", type: i8.GenColDisplayerComponent, selector: "tb-col-displayer" }, { kind: "component", type: i9.SortMenuComponent, selector: "tb-sort-menu" }, { kind: "component", type: i10.GenericTableComponent, selector: "tb-generic-table", inputs: ["trackBy", "displayData", "data", "rows", "columnBuilders", "columnInfos"], outputs: ["selection$"] }, { kind: "directive", type: i11.StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "component", type: i12.ProfilesMenuComponent, selector: "tb-profiles-menu", inputs: ["$tableId"], outputs: ["onSaveState"] }, { kind: "ngmodule", type: i13.MatButtonModule }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: i14.MatMenuModule }, { kind: "component", type: i14.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i14.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i14.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i15.MatIconModule }, { kind: "component", type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i16.MatTooltipModule }, { kind: "directive", type: i16.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i17.VirtualScrollContainer, selector: "tb-virtual-scroll-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
251
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TableContainerComponent, isStandalone: true, selector: "tb-table-container", inputs: { tableBuilder: "tableBuilder", tableId: "tableId", indexColumn: "indexColumn", selectionColumn: "selectionColumn", isSticky: "isSticky", stickyFooter: "stickyFooter", pageSize: "pageSize", groupHeaderTemplate: "groupHeaderTemplate", groupHeaderHeight: "groupHeaderHeight", trackBy: "trackBy", inputFilters: "inputFilters" }, outputs: { selection$: "selection$", data: "data", onStateReset: "onStateReset", onSaveState: "onSaveState", state$: "state$" }, providers: [TableStore, ExportToCsvService, WrapperFilterStore], queries: [{ propertyName: "filterDirectives", predicate: TableFilterDirective, descendants: true, isSignal: true }, { propertyName: "customFilterDirectives", predicate: TableCustomFilterDirective, descendants: true, isSignal: true }, { propertyName: "tableElRef", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "customRows", predicate: MatRowDef }, { propertyName: "customCells", predicate: CustomCellDirective }], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }, { propertyName: "genericTable", first: true, predicate: GenericTableComponent, descendants: true }], ngImport: i0, template: "<ng-content select=\"[before]\" />\n\n<ng-container multiSort *ngrxLet=\"state.tableSettings$ as tableSettings\">\n <div class=\"header-wrapper\">\n <div class=\"title\">\n @if ((!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed) {\n <ng-content select=\".tb-header-title\"/>\n }\n @if((state.groupByKeys$ | async)?.length){\n <group-by-list />\n }\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list />\n @if (!tableSettings.hideHeader) {\n @if (!(collapseHeader$ | async)) {\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\n </mat-menu>\n }\n @else {\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\n </mat-menu>\n }\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n }\n\n </div>\n </div>\n <div class=\"table-wrapper\">\n @if($useVirtual())\n {\n <tb-virtual-scroll-container>\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData$]=\"displayData\"\n (selection$)='selection$.emit($event)' [columnInfos]='myColumns$' [trackBy]=\"trackBy\" />\n </tb-virtual-scroll-container>\n }\n @else\n {\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData$]=\"displayData\"\n (selection$)='selection$.emit($event)' [columnInfos]='myColumns$' [trackBy]=\"trackBy\" />\n }\n\n </div>\n @if(tableSettings.usePaginator)\n {\n <div class=\"paginator\">\n <tb-paginator #tbPaginator [data$]=\"data\" [tableElRef]=\"tableElRef\" />\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\n (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n </div>\n }\n\n <ng-template #headerMenu>\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\n @if (!!tableId) {<tb-profiles-menu [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>}\n </ng-template>\n\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n @if (!tableSettings.hideExport) {\n <button mat-menu-item (click)=\"exportToCsv()\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n }\n @if (tableId) {\n <button stop-propagation mat-menu-item (click)=\"pm.trigger()?.toggleMenu()\">\n <mat-icon color=\"primary\">people</mat-icon>\n <span>Profiles</span>\n </button>\n <tb-profiles-menu class=\"profiles-menu\" #pm [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>\n }\n </ng-template>\n</ng-container>\n", styles: [".header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.table-wrapper{overflow-x:auto}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}.pointer{cursor:pointer}.add-key{width:90%}.paginator{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff;bottom:0;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.profiles-menu{visibility:hidden;width:0px;height:0px;display:block;overflow:hidden;position:absolute;top:50px}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"], dependencies: [{ kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.PaginatorComponent, selector: "tb-paginator", inputs: ["data$", "tableElRef"] }, { kind: "directive", type: i3.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: i4.MultiSortDirective, selector: "[multiSort]", inputs: ["matSortDisabled"], exportAs: ["multiSort"] }, { kind: "component", type: i5.GroupByListComponent, selector: "group-by-list" }, { kind: "component", type: i6.FilterChipsComponent, selector: "lib-filter-list" }, { kind: "component", type: i7.GenFilterDisplayerComponent, selector: "tb-filter-displayer" }, { kind: "component", type: i8.GenColDisplayerComponent, selector: "tb-col-displayer" }, { kind: "component", type: i9.SortMenuComponent, selector: "tb-sort-menu" }, { kind: "component", type: i10.GenericTableComponent, selector: "tb-generic-table", inputs: ["trackBy", "displayData$", "data", "rows", "columnBuilders", "columnInfos"], outputs: ["selection$"] }, { kind: "directive", type: i11.StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "component", type: i12.ProfilesMenuComponent, selector: "tb-profiles-menu", inputs: ["$tableId"], outputs: ["onSaveState"] }, { kind: "ngmodule", type: i13.MatButtonModule }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: i14.MatMenuModule }, { kind: "component", type: i14.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i14.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i14.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i15.MatIconModule }, { kind: "component", type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i16.MatTooltipModule }, { kind: "directive", type: i16.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i17.VirtualScrollContainer, selector: "tb-virtual-scroll-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
268
252
  }
269
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableContainerComponent, decorators: [{
270
254
  type: Component,
271
- args: [{ selector: 'tb-table-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableStore, ExportToCsvService, WrapperFilterStore, DataStore], standalone: true, imports: containerImports, template: "<ng-content select=\"[before]\" />\r\n\r\n<ng-container multiSort *ngrxLet=\"state.tableSettings$ as tableSettings\">\r\n <div class=\"header-wrapper\">\r\n <div class=\"title\">\r\n @if ((!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed) {\r\n <ng-content select=\".tb-header-title\"/>\r\n }\r\n @if((state.groupByKeys$ | async)?.length){\r\n <group-by-list />\r\n }\r\n </div>\r\n <div class=\"flx-row-end\">\r\n <lib-filter-list />\r\n @if (!tableSettings.hideHeader) {\r\n @if (!(collapseHeader$ | async)) {\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #mainMenu='matMenu'>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n @else {\r\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\r\n <mat-menu #mainMenu='matMenu'>\r\n <div class=\"flex-column\">\r\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\r\n </mat-menu>\r\n }\r\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\r\n (click)=\"state.toggleCollapseHeader()\">\r\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n }\r\n\r\n </div>\r\n </div>\r\n <div class=\"table-wrapper\">\r\n @if($useVirtual())\r\n {\r\n <tb-virtual-scroll-container>\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n </tb-virtual-scroll-container>\r\n }\r\n @else\r\n {\r\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData]=\"$displayData()\"\r\n (selection$)='selection$.emit($event)' [columnInfos]='$myColumns()' [trackBy]=\"trackBy\" />\r\n }\r\n\r\n </div>\r\n @if(tableSettings.usePaginator)\r\n {\r\n <div class=\"paginator\">\r\n <tb-paginator #tbPaginator [data$]=\"data\" [tableElRef]=\"tableElRef\" />\r\n\r\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\r\n (click)=\"state.toggleCollapseFooter()\">\r\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\r\n </mat-icon>\r\n </div>\r\n }\r\n\r\n <ng-template #headerMenu>\r\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\r\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\r\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\r\n @if (!!tableId) {<tb-profiles-menu [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>}\r\n </ng-template>\r\n\r\n <ng-template #headerMenuExtra>\r\n <button mat-menu-item (click)=\"resetState()\">\r\n <mat-icon color=\"primary\">autorenew</mat-icon>\r\n <span>Reset table</span>\r\n </button>\r\n @if (!tableSettings.hideExport) {\r\n <button mat-menu-item (click)=\"exportToCsv()\">\r\n <mat-icon color=\"primary\">file_download</mat-icon>\r\n <span>Export Table</span>\r\n </button>\r\n }\r\n @if (tableId) {\r\n <button stop-propagation mat-menu-item (click)=\"pm.trigger()?.toggleMenu()\">\r\n <mat-icon color=\"primary\">people</mat-icon>\r\n <span>Profiles</span>\r\n </button>\r\n <tb-profiles-menu class=\"profiles-menu\" #pm [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>\r\n }\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.table-wrapper{overflow-x:auto}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}.pointer{cursor:pointer}.add-key{width:90%}.paginator{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff;bottom:0;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.profiles-menu{visibility:hidden;width:0px;height:0px;display:block;overflow:hidden;position:absolute;top:50px}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"] }]
255
+ args: [{ selector: 'tb-table-container', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableStore, ExportToCsvService, WrapperFilterStore], standalone: true, imports: containerImports, template: "<ng-content select=\"[before]\" />\n\n<ng-container multiSort *ngrxLet=\"state.tableSettings$ as tableSettings\">\n <div class=\"header-wrapper\">\n <div class=\"title\">\n @if ((!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed) {\n <ng-content select=\".tb-header-title\"/>\n }\n @if((state.groupByKeys$ | async)?.length){\n <group-by-list />\n }\n </div>\n <div class=\"flx-row-end\">\n <lib-filter-list />\n @if (!tableSettings.hideHeader) {\n @if (!(collapseHeader$ | async)) {\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\n <button mat-icon-button color='primary' [matMenuTriggerFor]=\"mainMenu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mainMenu='matMenu'>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\n </mat-menu>\n }\n @else {\n <mat-icon color=\"primary\" [matMenuTriggerFor]=\"mainMenu\" class=\"flat-menu-button pointer\">more_horiz</mat-icon>\n <mat-menu #mainMenu='matMenu'>\n <div class=\"flex-column\">\n <ng-container *ngTemplateOutlet=\"headerMenu\"/>\n </div>\n <ng-container *ngTemplateOutlet=\"headerMenuExtra\"/>\n </mat-menu>\n }\n <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n (click)=\"state.toggleCollapseHeader()\">\n {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n </mat-icon>\n }\n\n </div>\n </div>\n <div class=\"table-wrapper\">\n @if($useVirtual())\n {\n <tb-virtual-scroll-container>\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData$]=\"displayData\"\n (selection$)='selection$.emit($event)' [columnInfos]='myColumns$' [trackBy]=\"trackBy\" />\n </tb-virtual-scroll-container>\n }\n @else\n {\n <tb-generic-table [rows]='customRows' [data]=\"(data | async)!\" [displayData$]=\"displayData\"\n (selection$)='selection$.emit($event)' [columnInfos]='myColumns$' [trackBy]=\"trackBy\" />\n }\n\n </div>\n @if(tableSettings.usePaginator)\n {\n <div class=\"paginator\">\n <tb-paginator #tbPaginator [data$]=\"data\" [tableElRef]=\"tableElRef\" />\n\n <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\"\n (click)=\"state.toggleCollapseFooter()\">\n {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n </mat-icon>\n </div>\n }\n\n <ng-template #headerMenu>\n @if (!tableSettings.hideFilter) {<tb-filter-displayer/>}\n @if (!tableSettings.hideColumnSettings) {<tb-col-displayer/>}\n @if (!tableSettings.hideSort) {<tb-sort-menu/>}\n @if (!!tableId) {<tb-profiles-menu [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>}\n </ng-template>\n\n <ng-template #headerMenuExtra>\n <button mat-menu-item (click)=\"resetState()\">\n <mat-icon color=\"primary\">autorenew</mat-icon>\n <span>Reset table</span>\n </button>\n @if (!tableSettings.hideExport) {\n <button mat-menu-item (click)=\"exportToCsv()\">\n <mat-icon color=\"primary\">file_download</mat-icon>\n <span>Export Table</span>\n </button>\n }\n @if (tableId) {\n <button stop-propagation mat-menu-item (click)=\"pm.trigger()?.toggleMenu()\">\n <mat-icon color=\"primary\">people</mat-icon>\n <span>Profiles</span>\n </button>\n <tb-profiles-menu class=\"profiles-menu\" #pm [$tableId]=\"tableId\" (onSaveState)=\"onSaveState.emit($event)\"/>\n }\n </ng-template>\n</ng-container>\n", styles: [".header-wrapper{display:flex;flex-direction:row;justify-content:space-between;width:100%}.table-wrapper{overflow-x:auto}.flx-row-end{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.flat-menu{line-height:initial;height:initial}.pointer{cursor:pointer}.add-key{width:90%}.paginator{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;background-color:#fff;bottom:0;position:sticky;border-top:.5px solid rgba(0,0,0,.12)}.profiles-menu{visibility:hidden;width:0px;height:0px;display:block;overflow:hidden;position:absolute;top:50px}\n", ".collapse-icon{font-size:16px;height:16px;color:#3f51b5;align-self:flex-start}.collapse-icon:hover{cursor:pointer}.hide{display:none}.paginator-row{display:flex;align-items:center}\n"] }]
272
256
  }], propDecorators: { paginatorComponent: [{
273
257
  type: ViewChild,
274
258
  args: [PaginatorComponent]
@@ -278,6 +262,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
278
262
  }], customRows: [{
279
263
  type: ContentChildren,
280
264
  args: [MatRowDef]
265
+ }], customCells: [{
266
+ type: ContentChildren,
267
+ args: [CustomCellDirective]
281
268
  }], tableElRef: [{
282
269
  type: ContentChild,
283
270
  args: ['table', { read: ElementRef }]
@@ -298,6 +285,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
298
285
  type: Input
299
286
  }], groupHeaderTemplate: [{
300
287
  type: Input
288
+ }], groupHeaderHeight: [{
289
+ type: Input
301
290
  }], trackBy: [{
302
291
  type: Input
303
292
  }], inputFilters: [{
@@ -313,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
313
302
  }], state$: [{
314
303
  type: Output
315
304
  }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixlQUFlLEVBRWYsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sWUFBWSxFQUNaLFVBQVUsRUFHVixRQUFRLEVBQ1IsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFtQixTQUFTLEVBQVksTUFBTSw2QkFBNkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhJLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUs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QjtzQkFBL0IsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFLRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFByZWRpY2F0ZSxcclxuICBWaWV3Q2hpbGQsXHJcbiAgaW5qZWN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5qZWN0b3IsXHJcbiAgY29udGVudENoaWxkcmVuLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICB1bnRyYWNrZWQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXJyYXlBZGRpdGlvbmFsLCBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgbWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tLCBtZXJnZUFsbCwgc2Nhbiwgc3dpdGNoQWxsLCBzdGFydFdpdGgsIHRpbWVzdGFtcCwgbWVyZ2VNYXAsIGZpbHRlciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBNYXRSb3dEZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IEN1c3RvbUNlbGxEaXJlY3RpdmUsIFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCBUYWJsZUZpbHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBzdGF0ZUlzLCBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IG5vdE51bGwgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRXhwb3J0VG9Dc3ZTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhwb3J0LXRvLWNzdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXJyYXlEZWZhdWx0cyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvRGVmYXVsdFNldHRpbmdzJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU3RhdGUsIFRhYmxlU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBzb3J0RGF0YSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zb3J0LWRhdGEtZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBXcmFwcGVyRmlsdGVyU3RvcmUgfSBmcm9tICcuLi90YWJsZS1jb250YWluZXItZmlsdGVyL3RhYmxlLXdyYXBwZXItZmlsdGVyLXN0b3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgZGVmYXVsdFNoYXJlUmVwbGF5IH0gZnJvbSAnLi4vLi4vLi4vcnhqcyc7XHJcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckZ1bmMsIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGljdGlvbmFyeSc7XHJcbmltcG9ydCB7IFRhYmxlV3JhcHBlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGFibGUtd3JhcHBlci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBjcmVhdGVMaW5rQ3JlYXRvckRpY3QgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLWNyZWF0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlclN0YXRlU3RvcmUgfSBmcm9tICcuLi8uLi9uZ3J4L3RhYmxlQnVpbGRlclN0YXRlU3RvcmUnO1xyXG5pbXBvcnQgeyBjb250YWluZXJJbXBvcnRzIH0gZnJvbSAnLi90YWJsZS1jb250YWluZXItaW1wb3J0cyc7XHJcbmltcG9ydCB7IHVwZGF0ZUZpbHRlckluZm9TdGF0ZSwgdXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUsIHVwZGF0ZUZpbHRlclN0YXRlIH0gZnJvbSAnLi90YWJsZS1jb250YWluZXIuaGVscGVycy9maWx0ZXItc3RhdGUuaGVscGVycyc7XHJcbmltcG9ydCB7IGluaXRpYWxTb3J0U3RhdGUsIHVwZGF0ZVNvcnRTdGF0ZSB9IGZyb20gJy4vdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzJztcclxuaW1wb3J0IHsgZ2V0QWxsR3JvdXBIZWFkZXJOYW1lcywgaW5pdGlhbEdyb3VwQnlTdGF0ZSwgdXBkYXRlR3JvdXBCeVN0YXRlIH0gZnJvbSAnLi90YWJsZS1jb250YWluZXIuaGVscGVycy9ncm91cEJ5LmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBzb3J0QW5kRmlsdGVyRGF0YSB9IGZyb20gJy4vdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZGF0YS1zdGF0ZS5oZWxwZXJzJztcclxuaW1wb3J0IHsgVGFibGVQcm9wcywgZGVmYXVsdFByb3BzIH0gZnJvbSAnLi90YWJsZVByb3BzJztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVCdWlsZGVyRGF0YVNvdXJjZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyaWMtdGFibGUvZ2VuZXJpYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc3RvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0Yi10YWJsZS1jb250YWluZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNvbnRhaW5lci5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLWNvbnRhaW5lci5jc3MnLCAnLi4vLi4vc3R5bGVzL2NvbGxhcHNlci5zdHlsZXMuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtUYWJsZVN0b3JlLCBFeHBvcnRUb0NzdlNlcnZpY2UsIFdyYXBwZXJGaWx0ZXJTdG9yZSwgRGF0YVN0b3JlXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBjb250YWluZXJJbXBvcnRzXHJcbn0pIGV4cG9ydCBjbGFzcyBUYWJsZUNvbnRhaW5lckNvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcm9wczogVGFibGVQcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzIH07XHJcbiAgZGF0YVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPFRbXT4+KDEpO1xyXG5cclxuICBwdWJsaWMgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSBkYXRhU3RvcmUgPSBpbmplY3QoRGF0YVN0b3JlKTtcclxuICBwdWJsaWMgY29uZmlnID0gaW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKTtcclxuICBwdWJsaWMgZXhwb3J0VG9Dc3ZTZXJ2aWNlID0gaW5qZWN0KEV4cG9ydFRvQ3N2U2VydmljZTxUPik7XHJcbiAgcHVibGljIHdyYXBwZXIgPSBpbmplY3QoVGFibGVXcmFwcGVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gIHB1YmxpYyBzdGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVCdWlsZGVyU3RhdGVTdG9yZSk7XHJcbiAgcHVibGljIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgZmlsdGVyRGlyZWN0aXZlcyA9IGNvbnRlbnRDaGlsZHJlbihUYWJsZUZpbHRlckRpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSk7XHJcbiAgY3VzdG9tRmlsdGVyRGlyZWN0aXZlcyA9IGNvbnRlbnRDaGlsZHJlbihUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSk7XHJcblxyXG4gIGFsbEZpbHRlckRpcmVjdGl2ZXMgPSBjb21wdXRlZCggKCkgPT4gIHtcclxuICAgICAgaWYodGhpcy53cmFwcGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmZpbHRlckRpcmVjdGl2ZXMoKSwgLi4udGhpcy5jdXN0b21GaWx0ZXJEaXJlY3RpdmVzKCksIC4uLnRoaXMud3JhcHBlci4kcmVnaXN0cmF0aW9ucygpXTtcclxuICAgICAgfSB7XHJcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmZpbHRlckRpcmVjdGl2ZXMoKSwgLi4udGhpcy5jdXN0b21GaWx0ZXJEaXJlY3RpdmVzKCldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgKTtcclxuXHJcblxyXG4gIHRhYmxlU3RhdGUgPSB0b1NpZ25hbCh0aGlzLnN0YXRlLnN0YXRlJC5waXBlKGZpbHRlcihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKSkpKSA7XHJcblxyXG4gIGFsbEZpbHRlckRpcmVjdGl2ZXNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRhYmxlU3RhdGUoKTtcclxuICAgIGlmKHN0YXRlKSB7XHJcbiAgICAgIHRoaXMuYWxsRmlsdGVyRGlyZWN0aXZlcygpLmZpbHRlciggZiA9PiAhZi51c2VkKS5mb3JFYWNoKCBmID0+IHtcclxuICAgICAgICBmLnVzZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmKGYuc2F2YWJsZSkge1xyXG4gICAgICAgICAgdmFyIGZpbHRlciA9IHN0YXRlLmZpbHRlcnNbZi5maWx0ZXJJZF07XHJcbiAgICAgICAgICBpZihpc0ZpbHRlckluZm8oZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJEaXJlY3RpdmU6IFRhYmxlRmlsdGVyRGlyZWN0aXZlID0gZiBhcyBUYWJsZUZpbHRlckRpcmVjdGl2ZTtcclxuICAgICAgICAgICAgZmlsdGVyRGlyZWN0aXZlLmZpZWxkVHlwZSA9IGZpbHRlci5maWVsZFR5cGU7XHJcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5maWx0ZXJUeXBlID0gZmlsdGVyLmZpbHRlclR5cGU7XHJcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5zZXRGaWx0ZXJWYWx1ZShmaWx0ZXIuZmlsdGVyVmFsdWUpO1xyXG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUua2V5ID0gZmlsdGVyLmtleTtcclxuICAgICAgICAgICAgZmlsdGVyRGlyZWN0aXZlLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoaXNDdXN0b21GaWx0ZXIoZmlsdGVyKSkge1xyXG4gICAgICAgICAgICBmLmFjdGl2ZSA9IGZpbHRlci5hY3RpdmUgPz8gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zdGF0ZS5hZGRGaWx0ZXIoKGYuZmlsdGVyJCBhcyBhbnkpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgQFZpZXdDaGlsZChQYWdpbmF0b3JDb21wb25lbnQpICBwYWdpbmF0b3JDb21wb25lbnQ/OiBQYWdpbmF0b3JDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChHZW5lcmljVGFibGVDb21wb25lbnQpICBnZW5lcmljVGFibGU/OiBHZW5lcmljVGFibGVDb21wb25lbnQ7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYpIGN1c3RvbVJvd3MhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPGFueT4+O1xyXG4gICRjdXN0b21DZWxscyA9IGNvbnRlbnRDaGlsZHJlbihDdXN0b21DZWxsRGlyZWN0aXZlKTtcclxuICAkbXlDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuJG1ldGFEYXRhQXJyYXkoKS5tYXAoIG1ldGFEYXRhID0+ICh7bWV0YURhdGEsIGN1c3RvbUNlbGw6IHRoaXMuJGN1c3RvbUNlbGxzKCkuZmluZChjYyA9PiBjYy5jdXN0b21DZWxsID09PSBtZXRhRGF0YS5rZXkpfSkpXHJcbiAgfSlcclxuICBAQ29udGVudENoaWxkKCd0YWJsZScsIHtyZWFkOiBFbGVtZW50UmVmfSkgdGFibGVFbFJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhYmxlQnVpbGRlciE6IFRhYmxlQnVpbGRlcjtcclxuICBASW5wdXQoKSB0YWJsZUlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNldCBpbmRleENvbHVtbih2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJvcHMuaW5kZXhDb2x1bW4gPSB2YWw7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3Rpb25Db2x1bW4odmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnByb3BzLnNlbGVjdGlvbkNvbHVtbiA9IHZhbDtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGlzU3RpY2t5KHZhbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5wcm9wcy5pc1N0aWNreSA9IHZhbDtcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IHN0aWNreUZvb3Rlcih2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucHJvcHMuc3RpY2t5Rm9vdGVyID0gdmFsO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgcGFnZVNpemUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBncm91cEhlYWRlclRlbXBsYXRlKCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xyXG4gICAgdGhpcy5wcm9wcy5ncm91cEhlYWRlclRlbXBsYXRlID0gdGVtcGxhdGU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHRyYWNrQnkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5wdXRGaWx0ZXJzPzogT2JzZXJ2YWJsZTxBcnJheTxQcmVkaWNhdGU8VD4+PjtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbiQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXHJcbiAgICBzd2l0Y2hBbGwoKSxcclxuICAgIHN0YXJ0V2l0aChbXSBhcyBUW10pLFxyXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXHJcbiAgKTtcclxuICBAT3V0cHV0KCkgb25TdGF0ZVJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNhdmVTdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc3RhdGUkID0gdGhpcy5zdGF0ZS5nZXRTYXZhYmxlU3RhdGUoKS5waXBlKFxyXG4gICAgbWFwKHN0YXRlID0+IGNsb25lRGVlcChzdGF0ZSkpLFxyXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXHJcbiAgKTtcclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25zKCl7XHJcbiAgICB0aGlzLmdlbmVyaWNUYWJsZT8uc2VsZWN0aW9uLmNsZWFyKHRydWUpO1xyXG4gIH1cclxuICBkaXNwbGF5RGF0YVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPFRbXT4+KDEpO1xyXG4gIGRpc3BsYXlEYXRhID0gdGhpcy5kaXNwbGF5RGF0YVN1YmplY3QucGlwZShcclxuICAgIHN3aXRjaEFsbCgpLFxyXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXHJcbiAgKTtcclxuICAkZGlzcGxheURhdGEgPSB0b1NpZ25hbCh0aGlzLmRpc3BsYXlEYXRhLCB7IGluaXRpYWxWYWx1ZTogW10gfSk7XHJcblxyXG5cclxuXHJcbiAgY29sbGFwc2VGb290ZXIkID0gdGhpcy5zdGF0ZS5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcikpO1xyXG5cclxuXHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpe1xyXG4gICAgaWYodGhpcy50YWJsZUlkKSB7XHJcbiAgICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNhdmVUYWJsZVN0YXRlVG9Mb2NhbCh7IHRhYmxlSWQ6dGhpcy50YWJsZUlkLCB0YWJsZVN0YXRlOiB0aGlzLnN0YXRlLmdldFNhdmFibGVTdGF0ZVNpZ25hbCgpIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlyc3RQYWdlKCk6IHZvaWQge1xyXG4gICB0aGlzLnBhZ2luYXRvckNvbXBvbmVudD8ucGFnaW5hdG9yPy5maXJzdFBhZ2UoKTtcclxuICB9XHJcblxyXG4gIGxhc3RQYWdlKCk6IHZvaWQge1xyXG4gICB0aGlzLnBhZ2luYXRvckNvbXBvbmVudD8ucGFnaW5hdG9yPy5sYXN0UGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTdGF0ZSgpIHtcclxuICAgIHRoaXMuY3VzdG9tRmlsdGVyRGlyZWN0aXZlcygpLmZvckVhY2goIGNmID0+IGNmLnJlc2V0KCkpO1xyXG4gICAgdGhpcy5maWx0ZXJEaXJlY3RpdmVzKCkuZm9yRWFjaCggY2YgPT4gY2YucmVzZXQoKSApO1xyXG4gICAgdGhpcy5zdGF0ZS5yZXNldFN0YXRlKCk7XHJcbiAgICB0aGlzLm9uU3RhdGVSZXNldC5uZXh0KG51bGwpXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplU3RhdGUoKSB7XHJcbiAgICB0aGlzLnN0YXRlLnNldFRhYmxlU2V0dGluZ3ModGhpcy50YWJsZUJ1aWxkZXIuc2V0dGluZ3MpO1xyXG4gICAgdGhpcy5zdGF0ZS5ydW5PbmNlV2hlbihcclxuICAgICAgc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkKSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmKHRoaXMudGFibGVJZCkge1xyXG4gICAgICAgICAgY29uc3QgcGVyc2lzdGVkU3RhdGUkID0gdG9PYnNlcnZhYmxlKHRoaXMuc3RhdGVTZXJ2aWNlLiRzZWxlY3RMb2NhbFRhYmxlU3RhdGVGb3JWaWV3KHRoaXMudGFibGVJZCksIHtpbmplY3RvcjogdGhpcy5pbmplY3Rvcn0pLnBpcGUoXHJcbiAgICAgICAgICAgIHRhcCggcGVyc2lzdGVkU3RhdGUgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKCFwZXJzaXN0ZWRTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXRJbml0aWFsaXphdGlvblN0YXRlKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBub3ROdWxsKCksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGVTdGF0ZUZyb21QZXJzaXN0ZWRTdGF0ZShwZXJzaXN0ZWRTdGF0ZSQucGlwZShub3ROdWxsKCkpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXRJbml0aWFsaXphdGlvblN0YXRlKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY3VzdG9tRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByZWRpY2F0ZTxUPltdPihbXSk7XHJcbiAgaW5pdGlhbGl6ZURhdGEoKSB7XHJcblxyXG4gICAgY29uc3QgcHJlZGljYXRlRmlsdGVycyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmlucHV0RmlsdGVycz8ucGlwZShzdGFydFdpdGgoW10pKSA/PyBvZihbXSBhcyBQcmVkaWNhdGU8VD5bXSksIHRoaXMuY3VzdG9tRmlsdGVycyRdKVxyXG4gICAgICAucGlwZShtYXAoKFthLCBiXSkgPT4gWy4uLmEsIC4uLmJdKSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5zdGF0ZS5maWx0ZXJzJC5waXBlKHNjYW4odXBkYXRlRmlsdGVySW5mb1N0YXRlLCB7IGFsbEZpbHRlcnM6IHt9IH0pLCB0aW1lc3RhbXAoKSksXHJcbiAgICAgIHByZWRpY2F0ZUZpbHRlcnMkLnBpcGUoc2Nhbih1cGRhdGVGaWx0ZXJQcmVkaWNhdGVTdGF0ZSwge2FsbEZpbHRlcnM6IFtdIGFzIFByZWRpY2F0ZTxUPltdfSksIHRpbWVzdGFtcCgpKVxyXG4gICAgXSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKFtmaWx0ZXJJbmZvLCBwcmVkXSkgPT4gdXBkYXRlRmlsdGVyU3RhdGUoZmlsdGVySW5mbywgcHJlZCkpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHNvcnRzU3RhdGUkID0gdGhpcy5zdGF0ZS5zb3J0JC5waXBlKHNjYW4odXBkYXRlU29ydFN0YXRlLCBpbml0aWFsU29ydFN0YXRlKSk7XHJcblxyXG4gICAgY29uc3Qgc29ydGVkQW5kRmlsdGVyZWREYXRhJCA9IHNvcnRBbmRGaWx0ZXJEYXRhKHRoaXMudGFibGVCdWlsZGVyLmdldERhdGEkKCksIHNvcnRzU3RhdGUkLCBmaWx0ZXJzJCk7XHJcblxyXG4gICAgY29uc3QgZmxhdEdyb3VwZWQkID0gY29tYmluZUxhdGVzdChbc29ydGVkQW5kRmlsdGVyZWREYXRhJC5waXBlKHRpbWVzdGFtcCgpKSwgdGhpcy5zdGF0ZS5ncm91cEJ5S2V5cyQucGlwZSh0aW1lc3RhbXAoKSksIHRoaXMuc3RhdGUuZXhwYW5kZWRHcm91cHMkLnBpcGUodGltZXN0YW1wKCkpXSkucGlwZShcclxuICAgICAgc2Nhbih1cGRhdGVHcm91cEJ5U3RhdGUsIGluaXRpYWxHcm91cEJ5U3RhdGUpLFxyXG4gICAgICBtYXAoKHtkaXNwbGF5RGF0YX0pID0+IGRpc3BsYXlEYXRhKSxcclxuICAgICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZGlzcGxheURhdGFTdWJqZWN0Lm5leHQoZmxhdEdyb3VwZWQkKTtcclxuICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChzb3J0ZWRBbmRGaWx0ZXJlZERhdGEkKTtcclxuXHJcbiAgICB0aGlzLnN0YXRlLm9uKHRoaXMuZGlzcGxheURhdGEsIChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVN0b3JlLnBhdGNoU3RhdGUoe2RhdGFMZW46IGRhdGEubGVuZ3RofSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGN1c3RvbUNlbGxzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLiRjdXN0b21DZWxscywgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KTtcclxuICAgIHRoaXMuc3RhdGUuc2V0TGlua01hcHModGhpcy50YWJsZUJ1aWxkZXIubWV0YURhdGEkIS5waXBlKFxyXG4gICAgICBtYXAoY3JlYXRlTGlua0NyZWF0b3JEaWN0KVxyXG4gICAgKSk7XHJcbiAgICBjb25zdCBjID0gY3VzdG9tQ2VsbHMkLnBpcGUoc3dpdGNoTWFwKGMgPT4gYy5sZW5ndGggPyBjb21iaW5lTGF0ZXN0KGMubWFwKGMgPT4gYy4kbWV0YURhdGEpKSA6IG9mKFtdIGFzIE1ldGFEYXRhW10pKSk7XHJcbiAgICB0aGlzLnN0YXRlLnNldE1ldGFEYXRhKGNvbWJpbmVMYXRlc3QoW3RoaXMudGFibGVCdWlsZGVyLm1ldGFEYXRhJCwgIGNdKS5waXBlKG1hcCgoW21kcywgY3VzdG9tQ2VsbHNdKSA9PiB7XHJcbiAgICAgIG1kcyA9IG1kcy5tYXAodGhpcy5tYXBBcnJheUZpZWxkc01ldGFEYXRhcyk7XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgLi4ubWRzLFxyXG4gICAgICAgIC4uLmN1c3RvbUNlbGxzLm1hcCggbWQgPT4gdGhpcy5tZXJnZU1ldGFEYXRhKG1kLCBtZHMuZmluZCggaXRlbSA9PiBpdGVtLmtleSA9PT0gbWQua2V5ICkgKSlcclxuICAgICAgXVxyXG4gICAgfSkpKVxyXG4gICAgY29uc3QgZHMgPSBuZXcgVGFibGVCdWlsZGVyRGF0YVNvdXJjZTxUPihcclxuICAgICAgdGhpcy5kaXNwbGF5RGF0YSxcclxuICAgICAgdGhpcy5zdGF0ZSxcclxuICAgICAgdGhpcy5kYXRhU3RvcmVcclxuICAgICk7XHJcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtwcm9wczoge1xyXG4gICAgICBkYXRhU291cmNlOiBkcyxcclxuICAgICAgLi4udGhpcy5wcm9wc1xyXG4gICAgfX0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVTdGF0ZSgpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbWVyZ2VNZXRhRGF0YShtZXRhRGF0YTE6IE1ldGFEYXRhLCBtZXRhRGF0YTI/OiBNZXRhRGF0YSkge1xyXG4gICAgaWYoIW1ldGFEYXRhMil7XHJcbiAgICAgIG1ldGFEYXRhMS5ub0V4cG9ydCA9IHRydWU7XHJcbiAgICAgIHJldHVybiBtZXRhRGF0YTFcclxuICAgIH1cclxuICAgIGlmKCFtZXRhRGF0YTEuZGlzcGxheU5hbWUpIG1ldGFEYXRhMS5kaXNwbGF5TmFtZSA9IG1ldGFEYXRhMi5kaXNwbGF5TmFtZTtcclxuICAgIGlmKCFtZXRhRGF0YTEucHJlU29ydCkgbWV0YURhdGExLnByZVNvcnQgPSBtZXRhRGF0YTIucHJlU29ydDtcclxuICAgIGlmKCFtZXRhRGF0YTEub3JkZXIpIG1ldGFEYXRhMS5vcmRlciA9IG1ldGFEYXRhMi5vcmRlcjtcclxuICAgIGlmKCFtZXRhRGF0YTEud2lkdGgpIG1ldGFEYXRhMS53aWR0aCA9IG1ldGFEYXRhMi53aWR0aDtcclxuICAgIGlmKG1ldGFEYXRhMi5maWVsZFR5cGUpIG1ldGFEYXRhMS5maWVsZFR5cGUgPSBtZXRhRGF0YTIuZmllbGRUeXBlO1xyXG4gICAgbWV0YURhdGExLm5vRXhwb3J0ID0gIW1ldGFEYXRhMjtcclxuICAgIHJldHVybiBtZXRhRGF0YTE7XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb0NzdigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMuZGF0YS5waXBlKFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YXRlLnNvcnQkKSxcclxuICAgICAgbWFwKChbZGF0YSwgc29ydGVkXSkgPT4gc29ydERhdGEoZGF0YSwgc29ydGVkKSlcclxuICAgICk7XHJcbiAgICB0aGlzLmV4cG9ydFRvQ3N2U2VydmljZS5leHBvcnRUb0Nzdihzb3J0ZWQpO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kQWxsR3JvdXBzID0gKCkgPT4ge1xyXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJzID0gZ2V0QWxsR3JvdXBIZWFkZXJOYW1lcyh0aGlzLiRkaXNwbGF5RGF0YSgpKTtcclxuICAgIHRoaXMuc3RhdGUuZXhwYW5kQWxsT2ZHcm91cCh7IGdyb3VwSGVhZGVyc0J5S2V5OiBncm91cEhlYWRlcnMgfSk7XHJcbiAgfVxyXG5cclxuICBjb2xsYXBzZUFsbEdyb3VwcyA9ICgpID0+IHRoaXMuc3RhdGUuY29sbGFwc2VBbGwoKTtcclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5zdGF0ZS5ydW5PbmNlV2hlbihcclxuICAgICAgc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSksXHJcbiAgICAgIHN0YXRlID0+IHtcclxuICAgICAgICB0aGlzLmFkZEZpbHRlckRpcmVjdGl2ZXMoc3RhdGUpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlU3RhdGUoeyBpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5IH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBtYXBBcnJheUZpZWxkc01ldGFEYXRhcyA9IChtZXRhIDogTWV0YURhdGE8VD4pID0+IHtcclxuICAgIGlmKG1ldGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXkpe1xyXG4gICAgICBjb25zdCBhZGRpdGlvbmFsID0gey4uLm1ldGEuYWRkaXRpb25hbH0gYXMgQXJyYXlBZGRpdGlvbmFsO1xyXG4gICAgICBhZGRpdGlvbmFsLmFycmF5U3R5bGUgPSBhZGRpdGlvbmFsPy5hcnJheVN0eWxlID8/IEFycmF5RGVmYXVsdHMuYXJyYXlTdHlsZTtcclxuICAgICAgYWRkaXRpb25hbC5saW1pdCA9IGFkZGl0aW9uYWwubGltaXQgPz8gdGhpcy5jb25maWcuYXJyYXlJbmZvPy5saW1pdCA/PyBBcnJheURlZmF1bHRzLmxpbWl0O1xyXG4gICAgICByZXR1cm4gey4uLm1ldGEsYWRkaXRpb25hbH1cclxuICAgIH1cclxuICAgIHJldHVybiBtZXRhO1xyXG4gIH1cclxuXHJcbiAgY29sbGFwc2VIZWFkZXIkID0gdGhpcy5zdGF0ZS5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlcikpO1xyXG5cclxuICBhZGRGaWx0ZXJEaXJlY3RpdmVzID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB7XHJcbiAgICBjb25zdCBjdXN0b21GaWx0ZXJzJCA9ICB0b09ic2VydmFibGUodGhpcy5hbGxGaWx0ZXJEaXJlY3RpdmVzLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCggY3VzdG9tZXJGaWx0ZXJzID0+IGN1c3RvbWVyRmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoIGZpbHRlciA9PiAhZmlsdGVyLnNhdmFibGUgKVxyXG4gICAgICAgIC5tYXAoZmlsdGVyID0+IGZpbHRlci5maWx0ZXIkIClcclxuICAgICAgKSxcclxuICAgICAgbWVyZ2VBbGwoKSxcclxuICAgICAgc2NhbiggKGEsYik9PiB7XHJcbiAgICAgICAgICBpZihiLmFjdGl2ZSkge1xyXG4gICAgICAgICAgICBhW2IuZmlsdGVySWRdID0gaXNDdXN0b21GaWx0ZXIoYikgPyBiLnByZWRpY2F0ZSA6IGNyZWF0ZUZpbHRlckZ1bmMoYik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkZWxldGUgYVtiLmZpbHRlcklkXSA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIHJldHVybiBhO1xyXG4gICAgICB9LCB7fSBhcyBEaWN0aW9uYXJ5PFByZWRpY2F0ZTxhbnk+PiksXHJcbiAgICAgIG1hcCggZiA9PiBPYmplY3QudmFsdWVzKGYpKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN0YXRlLm9uKGN1c3RvbUZpbHRlcnMkLCAoZikgPT4ge1xyXG4gICAgICB0aGlzLmN1c3RvbUZpbHRlcnMkLm5leHQoZik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICR1c2VWaXJ0dWFsID0gdGhpcy5zdGF0ZS4kaXNWaXJ0dWFsO1xyXG59XHJcbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cIltiZWZvcmVdXCIgLz5cclxuXHJcbjxuZy1jb250YWluZXIgbXVsdGlTb3J0ICpuZ3J4TGV0PVwic3RhdGUudGFibGVTZXR0aW5ncyQgYXMgdGFibGVTZXR0aW5nc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgIEBpZiAoKCEoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpKSB8fCB0YWJsZVNldHRpbmdzLnNob3dUaXRsZVdoZW5IZWFkZXJDb2xsYXBzZWQpIHtcclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIudGItaGVhZGVyLXRpdGxlXCIvPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZigoc3RhdGUuZ3JvdXBCeUtleXMkIHwgYXN5bmMpPy5sZW5ndGgpe1xyXG4gICAgICAgIDxncm91cC1ieS1saXN0IC8+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZseC1yb3ctZW5kXCI+XHJcbiAgICAgIDxsaWItZmlsdGVyLWxpc3QgLz5cclxuICAgICAgQGlmICghdGFibGVTZXR0aW5ncy5oaWRlSGVhZGVyKSB7XHJcbiAgICAgICAgQGlmICghKGNvbGxhcHNlSGVhZGVyJCB8IGFzeW5jKSkge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVcIi8+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj0ncHJpbWFyeScgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1haW5NZW51XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21haW5NZW51PSdtYXRNZW51Jz5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiLz5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWFpbk1lbnVcIiBjbGFzcz1cImZsYXQtbWVudS1idXR0b24gcG9pbnRlclwiPm1vcmVfaG9yaXo8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtYWluTWVudT0nbWF0TWVudSc+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51XCIvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiLz5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGhlYWRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic3RhdGUudG9nZ2xlQ29sbGFwc2VIZWFkZXIoKVwiPlxyXG4gICAgICAgICAge3soY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZSd9fVxyXG4gICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidGFibGUtd3JhcHBlclwiPlxyXG4gICAgQGlmKCR1c2VWaXJ0dWFsKCkpXHJcbiAgICB7XHJcbiAgICAgIDx0Yi12aXJ0dWFsLXNjcm9sbC1jb250YWluZXI+XHJcbiAgICAgICAgPHRiLWdlbmVyaWMtdGFibGUgW3Jvd3NdPSdjdXN0b21Sb3dzJyBbZGF0YV09XCIoZGF0YSB8IGFzeW5jKSFcIiBbZGlzcGxheURhdGFdPVwiJGRpc3BsYXlEYXRhKClcIlxyXG4gICAgICAgICAgKHNlbGVjdGlvbiQpPSdzZWxlY3Rpb24kLmVtaXQoJGV2ZW50KScgW2NvbHVtbkluZm9zXT0nJG15Q29sdW1ucygpJyBbdHJhY2tCeV09XCJ0cmFja0J5XCIgLz5cclxuICAgICAgPC90Yi12aXJ0dWFsLXNjcm9sbC1jb250YWluZXI+XHJcbiAgICB9XHJcbiAgICBAZWxzZVxyXG4gICAge1xyXG4gICAgICA8dGItZ2VuZXJpYy10YWJsZSBbcm93c109J2N1c3RvbVJvd3MnIFtkYXRhXT1cIihkYXRhIHwgYXN5bmMpIVwiIFtkaXNwbGF5RGF0YV09XCIkZGlzcGxheURhdGEoKVwiXHJcbiAgICAgICAgKHNlbGVjdGlvbiQpPSdzZWxlY3Rpb24kLmVtaXQoJGV2ZW50KScgW2NvbHVtbkluZm9zXT0nJG15Q29sdW1ucygpJyBbdHJhY2tCeV09XCJ0cmFja0J5XCIgLz5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcbiAgQGlmKHRhYmxlU2V0dGluZ3MudXNlUGFnaW5hdG9yKVxyXG4gIHtcclxuICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0b3JcIj5cclxuICAgICAgPHRiLXBhZ2luYXRvciAjdGJQYWdpbmF0b3IgW2RhdGEkXT1cImRhdGFcIiBbdGFibGVFbFJlZl09XCJ0YWJsZUVsUmVmXCIgLz5cclxuXHJcbiAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VGb290ZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGZvb3RlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cInN0YXRlLnRvZ2dsZUNvbGxhcHNlRm9vdGVyKClcIj5cclxuICAgICAgICB7eyhjb2xsYXBzZUZvb3RlciQgfCBhc3luYykgPyAnZXhwYW5kX21vcmUnIDogJ2V4cGFuZF9sZXNzJ319XHJcbiAgICAgIDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaGVhZGVyTWVudT5cclxuICAgIEBpZiAoIXRhYmxlU2V0dGluZ3MuaGlkZUZpbHRlcikgezx0Yi1maWx0ZXItZGlzcGxheWVyLz59XHJcbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVDb2x1bW5TZXR0aW5ncykgezx0Yi1jb2wtZGlzcGxheWVyLz59XHJcbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVTb3J0KSB7PHRiLXNvcnQtbWVudS8+fVxyXG4gICAgQGlmICghIXRhYmxlSWQpIHs8dGItcHJvZmlsZXMtbWVudSBbJHRhYmxlSWRdPVwidGFibGVJZFwiIChvblNhdmVTdGF0ZSk9XCJvblNhdmVTdGF0ZS5lbWl0KCRldmVudClcIi8+fVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaGVhZGVyTWVudUV4dHJhPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZXNldFN0YXRlKClcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmF1dG9yZW5ldzwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPlJlc2V0IHRhYmxlPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVFeHBvcnQpIHtcclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJleHBvcnRUb0NzdigpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuPkV4cG9ydCBUYWJsZTwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICBAaWYgKHRhYmxlSWQpIHtcclxuICAgICAgPGJ1dHRvbiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInBtLnRyaWdnZXIoKT8udG9nZ2xlTWVudSgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPnBlb3BsZTwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4+UHJvZmlsZXM8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8dGItcHJvZmlsZXMtbWVudSBjbGFzcz1cInByb2ZpbGVzLW1lbnVcIiAjcG0gWyR0YWJsZUlkXT1cInRhYmxlSWRcIiAob25TYXZlU3RhdGUpPVwib25TYXZlU3RhdGUuZW1pdCgkZXZlbnQpXCIvPlxyXG4gICAgfVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixlQUFlLEVBRWYsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sWUFBWSxFQUNaLFVBQVUsRUFHVixRQUFRLEVBQ1IsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFtQixTQUFTLEVBQVksTUFBTSw2QkFBNkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pGLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdqRSxNQUFNLE9BQU8sdUJBQXVCO0lBQ3JDLEtBQUssR0FBZSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDeEMsV0FBVyxHQUFHLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQztJQUU3QyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsQ0FBQSxrQkFBcUIsQ0FBQSxDQUFDLENBQUM7SUFDbkQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELFlBQVksR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5QyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRW5DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzlFLHNCQUFzQixHQUFHLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBRTFGLG1CQUFtQixHQUFHLFFBQVEsQ0FBRSxHQUFHLEVBQUU7UUFDakMsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMxRyxDQUFDO1FBQUMsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQyxDQUNGLENBQUM7SUFHRixVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFO0lBRXJHLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLElBQUcsS0FBSyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQzVELENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNiLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN2QyxJQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUN4QixNQUFNLGVBQWUsR0FBeUIsQ0FBeUIsQ0FBQzt3QkFDeEUsZUFBZSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUM3QyxlQUFlLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7d0JBQy9DLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUNuRCxlQUFlLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7d0JBQ2pDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDM0IsQ0FBQztvQkFDRCxJQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUMxQixDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO29CQUNwQyxDQUFDO29CQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBRSxDQUFDLENBQUMsT0FBZSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRTZCLGtCQUFrQixDQUFzQjtJQUNyQyxZQUFZLENBQXlCO0lBQzVDLFVBQVUsQ0FBNkI7SUFDN0IsV0FBVyxDQUFrQztJQUN4QyxVQUFVLENBQWM7SUFFeEMsWUFBWSxDQUFnQjtJQUM5QyxPQUFPLENBQVU7SUFDMUIsSUFBYSxXQUFXLENBQUMsR0FBWTtRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQWEsZUFBZSxDQUFDLEdBQVk7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFhLFFBQVEsQ0FBQyxHQUFZO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBYSxZQUFZLENBQUMsR0FBWTtRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQWEsbUJBQW1CLENBQUUsUUFBMEI7UUFDMUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQWEsaUJBQWlCLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ1EsT0FBTyxDQUFVO0lBQ2pCLFlBQVksQ0FBbUM7SUFFOUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNwQyxTQUFTLEVBQUUsRUFDWCxTQUFTLENBQUMsRUFBUyxDQUFDLEVBQ3BCLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7SUFDUSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM5QixrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0lBRUYsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0Qsa0JBQWtCLEdBQUcsSUFBSSxhQUFhLENBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQzNELFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUN4QyxTQUFTLEVBQUUsRUFDWCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0lBQ0YsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFJaEUsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUVwRyxVQUFVLENBQTRCO0lBR3RDLFdBQVc7UUFDVCxJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEgsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUNwQixPQUFPLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLEVBQzNDLEdBQUcsRUFBRTtZQUNILElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUNqSSxHQUFHLENBQUUsY0FBYyxDQUFDLEVBQUU7b0JBQ3BCLElBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDekUsQ0FBQztnQkFDSCxDQUFDLENBQUMsRUFDRixPQUFPLEVBQUUsQ0FDVixDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsRUFBRSxDQUFDLENBQUM7SUFDekQsY0FBYztRQUVaLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQW9CLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDL0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdEYsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFDLFVBQVUsRUFBRSxFQUFvQixFQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztTQUMxRyxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDakUsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVuRixNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXRHLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxFQUM3QyxHQUFHLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFDbkMsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE1BQU0sRUFBRSxHQUFHLElBQUksc0JBQXNCLENBQ25DLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUMsS0FBSyxFQUFFO2dCQUM3QixVQUFVLEVBQUUsRUFBRTtnQkFDZCxHQUFHLElBQUksQ0FBQyxLQUFLO2FBQ2QsRUFBQyxDQUFDLENBQUE7UUFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQzNCLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUNyQixNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUE7SUFFRCxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRW5ELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDcEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUM1QyxLQUFLLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBVSxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakMsT0FBTztnQkFDTCxHQUFHLEdBQUc7Z0JBQ04sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBRSxDQUFDLENBQUU7YUFDaEcsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBVSxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQzNCLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM5QyxRQUFRLENBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUUsRUFBQyxDQUFDLENBQUMsRUFDakYsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLEdBQUcsQ0FBQyxJQUFrQixFQUFFLEVBQUU7UUFDcEMsSUFBRyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNyQyxNQUFNLFVBQVUsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBb0IsQ0FBQztZQUMzRCxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsRUFBRSxVQUFVLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUMzRSxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDM0YsT0FBTyxFQUFDLEdBQUcsSUFBSSxFQUFDLFVBQVUsRUFBQyxDQUFBO1FBQzdCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQTtJQUVELGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFcEcsbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDMUMsTUFBTSxjQUFjLEdBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzVGLFFBQVEsQ0FBRSxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWU7YUFDekMsTUFBTSxDQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFFO2FBQ25DLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUUsQ0FDaEMsRUFDRCxRQUFRLEVBQUUsRUFDVixJQUFJLENBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUU7WUFDVCxJQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBRTtZQUN4QixDQUFDO1lBQ0wsT0FBTyxDQUFDLENBQUM7UUFDVCxDQUFDLEVBQUUsRUFBZ0MsQ0FBQyxFQUNwQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVELFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzt1R0F0UnRCLHVCQUF1QjsyRkFBdkIsdUJBQXVCLGdoQkFIeEIsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsMkRBYzlCLG9CQUFvQiw0RkFDZCwwQkFBMEIsaUlBMENyQyxVQUFVLDZDQUZ2QixTQUFTLDhDQUNULG1CQUFtQixpRkFIekIsa0JBQWtCLCtFQUNsQixxQkFBcUIsZ0RDbkhsQyxpc0hBK0ZBOzsyRkQvQmdCLHVCQUF1QjtrQkFSdEMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxjQUNuRCxJQUFJLFdBQ1AsZ0JBQWdCOzhCQW1ESyxrQkFBa0I7c0JBQWpELFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNNLFlBQVk7c0JBQTlDLFNBQVM7dUJBQUMscUJBQXFCO2dCQUNKLFVBQVU7c0JBQXJDLGVBQWU7dUJBQUMsU0FBUztnQkFDWSxXQUFXO3NCQUFoRCxlQUFlO3VCQUFDLG1CQUFtQjtnQkFDTyxVQUFVO3NCQUFwRCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBRWQsWUFBWTtzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU87c0JBQWYsS0FBSztnQkFDTyxXQUFXO3NCQUF2QixLQUFLO2dCQUdPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBR08sUUFBUTtzQkFBcEIsS0FBSztnQkFHTyxZQUFZO3NCQUF4QixLQUFLO2dCQUdPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR08sbUJBQW1CO3NCQUEvQixLQUFLO2dCQUdPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFLRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgUHJlZGljYXRlLFxuICBWaWV3Q2hpbGQsXG4gIGluamVjdCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIEluamVjdG9yLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcnJheUFkZGl0aW9uYWwsIEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xuaW1wb3J0IHsgbWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tLCBtZXJnZUFsbCwgc2Nhbiwgc3dpdGNoQWxsLCBzdGFydFdpdGgsIHRpbWVzdGFtcCwgbWVyZ2VNYXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtYnVpbGRlcic7XG5pbXBvcnQgeyBNYXRSb3dEZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlLCBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgVGFibGVGaWx0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IHN0YXRlSXMsIFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IG1hcEFycmF5LCBub3ROdWxsIH0gZnJvbSAnLi4vLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XG5pbXBvcnQgeyBFeHBvcnRUb0NzdlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtdG8tY3N2LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXJyYXlEZWZhdWx0cyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvRGVmYXVsdFNldHRpbmdzJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UYWJsZUJ1aWxkZXJDb25maWcnO1xuaW1wb3J0IHsgSW5pdGlhbGl6YXRpb25TdGF0ZSwgVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVTdGF0ZSc7XG5pbXBvcnQgeyBzb3J0RGF0YSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9zb3J0LWRhdGEtZnVuY3Rpb24nO1xuaW1wb3J0IHsgV3JhcHBlckZpbHRlclN0b3JlIH0gZnJvbSAnLi4vdGFibGUtY29udGFpbmVyLWZpbHRlci90YWJsZS13cmFwcGVyLWZpbHRlci1zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29sdW1uSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQ29sdW1uSW5mbyc7XG5pbXBvcnQgeyBkZWZhdWx0U2hhcmVSZXBsYXkgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckZ1bmMsIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgVGFibGVXcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy90YWJsZS13cmFwcGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBjcmVhdGVMaW5rQ3JlYXRvckRpY3QgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLWNyZWF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJTdGF0ZVN0b3JlIH0gZnJvbSAnLi4vLi4vbmdyeC90YWJsZUJ1aWxkZXJTdGF0ZVN0b3JlJztcbmltcG9ydCB7IGNvbnRhaW5lckltcG9ydHMgfSBmcm9tICcuL3RhYmxlLWNvbnRhaW5lci1pbXBvcnRzJztcbmltcG9ydCB7IHVwZGF0ZUZpbHRlckluZm9TdGF0ZSwgdXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUsIHVwZGF0ZUZpbHRlclN0YXRlIH0gZnJvbSAnLi90YWJsZS1jb250YWluZXIuaGVscGVycy9maWx0ZXItc3RhdGUuaGVscGVycyc7XG5pbXBvcnQgeyBpbml0aWFsU29ydFN0YXRlLCB1cGRhdGVTb3J0U3RhdGUgfSBmcm9tICcuL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL3NvcnQtc3RhdGUuaGVscGVycyc7XG5pbXBvcnQgeyBnZXRBbGxHcm91cEhlYWRlck5hbWVzLCBpbml0aWFsR3JvdXBCeVN0YXRlLCB1cGRhdGVHcm91cEJ5U3RhdGUgfSBmcm9tICcuL3RhYmxlLWNvbnRhaW5lci5oZWxwZXJzL2dyb3VwQnkuaGVscGVycyc7XG5pbXBvcnQgeyBzb3J0QW5kRmlsdGVyRGF0YSB9IGZyb20gJy4vdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZGF0YS1zdGF0ZS5oZWxwZXJzJztcbmltcG9ydCB7IFRhYmxlUHJvcHMsIGRlZmF1bHRQcm9wcyB9IGZyb20gJy4vdGFibGVQcm9wcyc7XG5pbXBvcnQgeyBQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmljLXRhYmxlL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVCdWlsZGVyRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGFibGVCdWlsZGVyRGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBHZW5lcmljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmljLXRhYmxlL2dlbmVyaWMtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0Yi10YWJsZS1jb250YWluZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jb250YWluZXIuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29udGFpbmVyLmNzcycsICcuLi8uLi9zdHlsZXMvY29sbGFwc2VyLnN0eWxlcy5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVGFibGVTdG9yZSwgRXhwb3J0VG9Dc3ZTZXJ2aWNlLCBXcmFwcGVyRmlsdGVyU3RvcmVdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogY29udGFpbmVySW1wb3J0c1xufSkgZXhwb3J0IGNsYXNzIFRhYmxlQ29udGFpbmVyQ29tcG9uZW50PFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcm9wczogVGFibGVQcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzIH07XG4gIGRhdGFTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8T2JzZXJ2YWJsZTxUW10+PigxKTtcblxuICBwdWJsaWMgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG4gIHB1YmxpYyBjb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xuICBwdWJsaWMgZXhwb3J0VG9Dc3ZTZXJ2aWNlID0gaW5qZWN0KEV4cG9ydFRvQ3N2U2VydmljZTxUPik7XG4gIHB1YmxpYyB3cmFwcGVyID0gaW5qZWN0KFRhYmxlV3JhcHBlckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHVibGljIHN0YXRlU2VydmljZSA9IGluamVjdChUYWJsZUJ1aWxkZXJTdGF0ZVN0b3JlKTtcbiAgcHVibGljIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBmaWx0ZXJEaXJlY3RpdmVzID0gY29udGVudENoaWxkcmVuKFRhYmxlRmlsdGVyRGlyZWN0aXZlLCB7ZGVzY2VuZGFudHM6IHRydWV9KTtcbiAgY3VzdG9tRmlsdGVyRGlyZWN0aXZlcyA9IGNvbnRlbnRDaGlsZHJlbihUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSk7XG5cbiAgYWxsRmlsdGVyRGlyZWN0aXZlcyA9IGNvbXB1dGVkKCAoKSA9PiAge1xuICAgICAgaWYodGhpcy53cmFwcGVyKSB7XG4gICAgICAgIHJldHVybiBbLi4udGhpcy5maWx0ZXJEaXJlY3RpdmVzKCksIC4uLnRoaXMuY3VzdG9tRmlsdGVyRGlyZWN0aXZlcygpLCAuLi50aGlzLndyYXBwZXIuJHJlZ2lzdHJhdGlvbnMoKV07XG4gICAgICB9IHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmZpbHRlckRpcmVjdGl2ZXMoKSwgLi4udGhpcy5jdXN0b21GaWx0ZXJEaXJlY3RpdmVzKCldO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuXG4gIHRhYmxlU3RhdGUgPSB0b1NpZ25hbCh0aGlzLnN0YXRlLnN0YXRlJC5waXBlKGZpbHRlcihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKSkpKSA7XG5cbiAgYWxsRmlsdGVyRGlyZWN0aXZlc0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnRhYmxlU3RhdGUoKTtcbiAgICBpZihzdGF0ZSkge1xuICAgICAgdGhpcy5hbGxGaWx0ZXJEaXJlY3RpdmVzKCkuZmlsdGVyKCBmID0+ICFmLnVzZWQpLmZvckVhY2goIGYgPT4ge1xuICAgICAgICBmLnVzZWQgPSB0cnVlO1xuICAgICAgICBpZihmLnNhdmFibGUpIHtcbiAgICAgICAgICB2YXIgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1tmLmZpbHRlcklkXTtcbiAgICAgICAgICBpZihpc0ZpbHRlckluZm8oZmlsdGVyKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGlyZWN0aXZlOiBUYWJsZUZpbHRlckRpcmVjdGl2ZSA9IGYgYXMgVGFibGVGaWx0ZXJEaXJlY3RpdmU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuZmllbGRUeXBlID0gZmlsdGVyLmZpZWxkVHlwZTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5maWx0ZXJUeXBlID0gZmlsdGVyLmZpbHRlclR5cGU7XG4gICAgICAgICAgICBmaWx0ZXJEaXJlY3RpdmUuc2V0RmlsdGVyVmFsdWUoZmlsdGVyLmZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIGZpbHRlckRpcmVjdGl2ZS5rZXkgPSBmaWx0ZXIua2V5O1xuICAgICAgICAgICAgZmlsdGVyRGlyZWN0aXZlLnVwZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihpc0N1c3RvbUZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAgICAgICBmLmFjdGl2ZSA9IGZpbHRlci5hY3RpdmUgPz8gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLnN0YXRlLmFkZEZpbHRlcigoZi5maWx0ZXIkIGFzIGFueSkpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICBAVmlld0NoaWxkKFBhZ2luYXRvckNvbXBvbmVudCkgIHBhZ2luYXRvckNvbXBvbmVudD86IFBhZ2luYXRvckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChHZW5lcmljVGFibGVDb21wb25lbnQpICBnZW5lcmljVGFibGU/OiBHZW5lcmljVGFibGVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Um93RGVmKSBjdXN0b21Sb3dzITogUXVlcnlMaXN0PE1hdFJvd0RlZjxhbnk+PjtcbiAgQENvbnRlbnRDaGlsZHJlbihDdXN0b21DZWxsRGlyZWN0aXZlKSBjdXN0b21DZWxscyE6IFF1ZXJ5TGlzdDxDdXN0b21DZWxsRGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZCgndGFibGUnLCB7cmVhZDogRWxlbWVudFJlZn0pIHRhYmxlRWxSZWYhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRhYmxlQnVpbGRlciE6IFRhYmxlQnVpbGRlcjtcbiAgQElucHV0KCkgdGFibGVJZCE6IHN0cmluZztcbiAgQElucHV0KCkgc2V0IGluZGV4Q29sdW1uKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMucHJvcHMuaW5kZXhDb2x1bW4gPSB2YWw7XG4gIH1cbiAgQElucHV0KCkgc2V0IHNlbGVjdGlvbkNvbHVtbih2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGlvbkNvbHVtbiA9IHZhbDtcbiAgfVxuICBASW5wdXQoKSBzZXQgaXNTdGlja3kodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5wcm9wcy5pc1N0aWNreSA9IHZhbDtcbiAgfVxuICBASW5wdXQoKSBzZXQgc3RpY2t5Rm9vdGVyKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMucHJvcHMuc3RpY2t5Rm9vdGVyID0gdmFsO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwYWdlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRQYWdlU2l6ZSh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGdyb3VwSGVhZGVyVGVtcGxhdGUoIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5wcm9wcy5ncm91cEhlYWRlclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cbiAgQElucHV0KCkgc2V0IGdyb3VwSGVhZGVySGVpZ2h0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnByb3BzLmdyb3VwSGVhZGVySGVpZ2h0ID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KCkgdHJhY2tCeSE6IHN0cmluZztcbiAgQElucHV0KCkgaW5wdXRGaWx0ZXJzPzogT2JzZXJ2YWJsZTxBcnJheTxQcmVkaWNhdGU8VD4+PjtcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uJCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRhdGEgPSB0aGlzLmRhdGFTdWJqZWN0LnBpcGUoXG4gICAgc3dpdGNoQWxsKCksXG4gICAgc3RhcnRXaXRoKFtdIGFzIFRbXSksXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXG4gICk7XG4gIEBPdXRwdXQoKSBvblN0YXRlUmVzZXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblNhdmVTdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHN0YXRlJCA9IHRoaXMuc3RhdGUuZ2V0U2F2YWJsZVN0YXRlKCkucGlwZShcbiAgICBtYXAoc3RhdGUgPT4gY2xvbmVEZWVwKHN0YXRlKSksXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXG4gICk7XG5cbiAgY2xlYXJTZWxlY3Rpb25zKCl7XG4gICAgdGhpcy5nZW5lcmljVGFibGU/LnNlbGVjdGlvbi5jbGVhcih0cnVlKTtcbiAgfVxuICBkaXNwbGF5RGF0YVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxPYnNlcnZhYmxlPFRbXT4+KDEpO1xuICBkaXNwbGF5RGF0YSA9IHRoaXMuZGlzcGxheURhdGFTdWJqZWN0LnBpcGUoXG4gICAgc3dpdGNoQWxsKCksXG4gICAgZGVmYXVsdFNoYXJlUmVwbGF5KCksXG4gICk7XG4gICRkaXNwbGF5RGF0YSA9IHRvU2lnbmFsKHRoaXMuZGlzcGxheURhdGEsIHsgaW5pdGlhbFZhbHVlOiBbXSB9KTtcblxuXG5cbiAgY29sbGFwc2VGb290ZXIkID0gdGhpcy5zdGF0ZS5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcikpO1xuXG4gIG15Q29sdW1ucyQhOiBPYnNlcnZhYmxlPENvbHVtbkluZm9bXT47XG5cblxuICBuZ09uRGVzdHJveSgpe1xuICAgIGlmKHRoaXMudGFibGVJZCkge1xuICAgICAgdGhpcy5zdGF0ZVNlcnZpY2Uuc2F2ZVRhYmxlU3RhdGVUb0xvY2FsKHsgdGFibGVJZDp0aGlzLnRhYmxlSWQsIHRhYmxlU3RhdGU6IHRoaXMuc3RhdGUuZ2V0U2F2YWJsZVN0YXRlU2lnbmFsKCkgfSk7XG4gICAgfVxuICB9XG5cbiAgZmlyc3RQYWdlKCk6IHZvaWQge1xuICAgdGhpcy5wYWdpbmF0b3JDb21wb25lbnQ/LnBhZ2luYXRvcj8uZmlyc3RQYWdlKCk7XG4gIH1cblxuICBsYXN0UGFnZSgpOiB2b2lkIHtcbiAgIHRoaXMucGFnaW5hdG9yQ29tcG9uZW50Py5wYWdpbmF0b3I/Lmxhc3RQYWdlKCk7XG4gIH1cblxuICByZXNldFN0YXRlKCkge1xuICAgIHRoaXMuY3VzdG9tRmlsdGVyRGlyZWN0aXZlcygpLmZvckVhY2goIGNmID0+IGNmLnJlc2V0KCkpO1xuICAgIHRoaXMuZmlsdGVyRGlyZWN0aXZlcygpLmZvckVhY2goIGNmID0+IGNmLnJlc2V0KCkgKTtcbiAgICB0aGlzLnN0YXRlLnJlc2V0U3RhdGUoKTtcbiAgICB0aGlzLm9uU3RhdGVSZXNldC5uZXh0KG51bGwpXG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXRUYWJsZVNldHRpbmdzKHRoaXMudGFibGVCdWlsZGVyLnNldHRpbmdzKTtcbiAgICB0aGlzLnN0YXRlLnJ1bk9uY2VXaGVuKFxuICAgICAgc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkKSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYodGhpcy50YWJsZUlkKSB7XG4gICAgICAgICAgY29uc3QgcGVyc2lzdGVkU3RhdGUkID0gdG9PYnNlcnZhYmxlKHRoaXMuc3RhdGVTZXJ2aWNlLiRzZWxlY3RMb2NhbFRhYmxlU3RhdGVGb3JWaWV3KHRoaXMudGFibGVJZCksIHtpbmplY3RvcjogdGhpcy5pbmplY3Rvcn0pLnBpcGUoXG4gICAgICAgICAgICB0YXAoIHBlcnNpc3RlZFN0YXRlID0+IHtcbiAgICAgICAgICAgICAgaWYoIXBlcnNpc3RlZFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXRJbml0aWFsaXphdGlvblN0YXRlKEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBub3ROdWxsKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlKHBlcnNpc3RlZFN0YXRlJC5waXBlKG5vdE51bGwoKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhdGUuc2V0SW5pdGlhbGl6YXRpb25TdGF0ZShJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjdXN0b21GaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UHJlZGljYXRlPFQ+W10+KFtdKTtcbiAgaW5pdGlhbGl6ZURhdGEoKSB7XG5cbiAgICBjb25zdCBwcmVkaWNhdGVGaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaW5wdXRGaWx0ZXJzPy5waXBlKHN0YXJ0V2l0aChbXSkpID8/IG9mKFtdIGFzIFByZWRpY2F0ZTxUPltdKSwgdGhpcy5jdXN0b21GaWx0ZXJzJF0pXG4gICAgICAucGlwZShtYXAoKFthLCBiXSkgPT4gWy4uLmEsIC4uLmJdKSk7XG5cbiAgICBjb25zdCBmaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdGF0ZS5maWx0ZXJzJC5waXBlKHNjYW4odXBkYXRlRmlsdGVySW5mb1N0YXRlLCB7IGFsbEZpbHRlcnM6IHt9IH0pLCB0aW1lc3RhbXAoKSksXG4gICAgICBwcmVkaWNhdGVGaWx0ZXJzJC5waXBlKHNjYW4odXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUsIHthbGxGaWx0ZXJzOiBbXSBhcyBQcmVkaWNhdGU8VD5bXX0pLCB0aW1lc3RhbXAoKSlcbiAgICBdKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChbZmlsdGVySW5mbywgcHJlZF0pID0+IHVwZGF0ZUZpbHRlclN0YXRlKGZpbHRlckluZm8sIHByZWQpKVxuICAgICk7XG5cbiAgICBjb25zdCBzb3J0c1N0YXRlJCA9IHRoaXMuc3RhdGUuc29ydCQucGlwZShzY2FuKHVwZGF0ZVNvcnRTdGF0ZSwgaW5pdGlhbFNvcnRTdGF0ZSkpO1xuXG4gICAgY29uc3Qgc29ydGVkQW5kRmlsdGVyZWREYXRhJCA9IHNvcnRBbmRGaWx0ZXJEYXRhKHRoaXMudGFibGVCdWlsZGVyLmdldERhdGEkKCksIHNvcnRzU3RhdGUkLCBmaWx0ZXJzJCk7XG5cbiAgICBjb25zdCBmbGF0R3JvdXBlZCQgPSBjb21iaW5lTGF0ZXN0KFtzb3J0ZWRBbmRGaWx0ZXJlZERhdGEkLnBpcGUodGltZXN0YW1wKCkpLCB0aGlzLnN0YXRlLmdyb3VwQnlLZXlzJC5waXBlKHRpbWVzdGFtcCgpKSwgdGhpcy5zdGF0ZS5leHBhbmRlZEdyb3VwcyQucGlwZSh0aW1lc3RhbXAoKSldKS5waXBlKFxuICAgICAgc2Nhbih1cGRhdGVHcm91cEJ5U3RhdGUsIGluaXRpYWxHcm91cEJ5U3RhdGUpLFxuICAgICAgbWFwKCh7ZGlzcGxheURhdGF9KSA9PiBkaXNwbGF5RGF0YSksXG4gICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgdGhpcy5kaXNwbGF5RGF0YVN1YmplY3QubmV4dChmbGF0R3JvdXBlZCQpO1xuICAgIHRoaXMuZGF0YVN1YmplY3QubmV4dChzb3J0ZWRBbmRGaWx0ZXJlZERhdGEkKTtcblxuICAgIHRoaXMuc3RhdGUub24odGhpcy5kaXNwbGF5RGF0YSwgKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuc3RhdGUudXBkYXRlU3RhdGUoe2RhdGFMZW46IGRhdGEubGVuZ3RofSlcbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBkcyA9IG5ldyBUYWJsZUJ1aWxkZXJEYXRhU291cmNlPFQ+KFxuICAgICAgdGhpcy5kaXNwbGF5RGF0YSxcbiAgICAgIHRoaXMuc3RhdGUsXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlLnVwZGF0ZVN0YXRlKHtwcm9wczoge1xuICAgICAgZGF0YVNvdXJjZTogZHMsXG4gICAgICAuLi50aGlzLnByb3BzXG4gICAgfX0pXG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gIH1cblxuICBleHBvcnRUb0NzdigpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0ZWQgPSB0aGlzLmRhdGEucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RhdGUuc29ydCQpLFxuICAgICAgbWFwKChbZGF0YSwgc29ydGVkXSkgPT4gc29ydERhdGEoZGF0YSwgc29ydGVkKSlcbiAgICApO1xuICAgIHRoaXMuZXhwb3J0VG9Dc3ZTZXJ2aWNlLmV4cG9ydFRvQ3N2KHNvcnRlZCk7XG4gIH1cblxuICBleHBhbmRBbGxHcm91cHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBIZWFkZXJzID0gZ2V0QWxsR3JvdXBIZWFkZXJOYW1lcyh0aGlzLiRkaXNwbGF5RGF0YSgpKTtcbiAgICB0aGlzLnN0YXRlLmV4cGFuZEFsbE9mR3JvdXAoeyBncm91cEhlYWRlcnNCeUtleTogZ3JvdXBIZWFkZXJzIH0pO1xuICB9XG5cbiAgY29sbGFwc2VBbGxHcm91cHMgPSAoKSA9PiB0aGlzLnN0YXRlLmNvbGxhcHNlQWxsKCk7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbnMoKTtcbiAgICB0aGlzLnN0YXRlLnJ1bk9uY2VXaGVuKFxuICAgICAgc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSksXG4gICAgICBzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRmlsdGVyRGlyZWN0aXZlcyhzdGF0ZSk7XG4gICAgICAgIHRoaXMuc3RhdGUudXBkYXRlU3RhdGUoeyBpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5IH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplQ29sdW1ucygpIHtcbiAgICBjb25zdCBjdXN0b21DZWxsTWFwID0gbmV3IE1hcCh0aGlzLmN1c3RvbUNlbGxzLm1hcChjYyA9PiBbY2MuY3VzdG9tQ2VsbCxjY10pKTtcbiAgICB0aGlzLnN0YXRlLnNldE1ldGFEYXRhKHRoaXMudGFibGVCdWlsZGVyLm1ldGFEYXRhJCEucGlwZShcbiAgICAgIG1hcCgobWRzKSA9PiB7XG4gICAgICAgIG1kcyA9IG1kcy5tYXAodGhpcy5tYXBNZXRhRGF0YXMpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLm1kcyxcbiAgICAgICAgICAuLi50aGlzLmN1c3RvbUNlbGxzLm1hcCggY2MgPT4gY2MuZ2V0TWV0YURhdGEobWRzLmZpbmQoIGl0ZW0gPT4gaXRlbS5rZXkgPT09IGNjLmN1c3RvbUNlbGwgKSkgKVxuICAgICAgICBdXG4gICAgICB9KVxuICAgICkpO1xuICAgIHRoaXMuc3RhdGUuc2V0TGlua01hcHModGhpcy50YWJsZUJ1aWxkZXIubWV0YURhdGEkIS5waXBlKFxuICAgICAgbWFwKGNyZWF0ZUxpbmtDcmVhdG9yRGljdClcbiAgICApKVxuXG4gICAgdGhpcy5teUNvbHVtbnMkID0gdGhpcy5zdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKFxuICAgICAgbWFwQXJyYXkoIG1ldGFEYXRhID0+ICh7bWV0YURhdGEsIGN1c3RvbUNlbGw6IGN1c3RvbUNlbGxNYXAuZ2V0KG1ldGFEYXRhLmtleSkhfSkpLFxuICAgICAgZGVmYXVsdFNoYXJlUmVwbGF5KClcbiAgICApO1xuICB9XG5cbiAgbWFwTWV0YURhdGFzID0gKG1ldGEgOiBNZXRhRGF0YTxUPikgPT4ge1xuICAgIGlmKG1ldGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXkpe1xuICAgICAgY29uc3QgYWRkaXRpb25hbCA9IHsuLi5tZXRhLmFkZGl0aW9uYWx9IGFzIEFycmF5QWRkaXRpb25hbDtcbiAgICAgIGFkZGl0aW9uYWwuYXJyYXlTdHlsZSA9IGFkZGl0aW9uYWw/LmFycmF5U3R5bGUgPz8gQXJyYXlEZWZhdWx0cy5hcnJheVN0eWxlO1xuICAgICAgYWRkaXRpb25hbC5saW1pdCA9IGFkZGl0aW9uYWwubGltaXQgPz8gdGhpcy5jb25maWcuYXJyYXlJbmZvPy5saW1pdCA/PyBBcnJheURlZmF1bHRzLmxpbWl0O1xuICAgICAgcmV0dXJuIHsuLi5tZXRhLGFkZGl0aW9uYWx9XG4gICAgfVxuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgY29sbGFwc2VIZWFkZXIkID0gdGhpcy5zdGF0ZS5zdGF0ZSQucGlwZShtYXAoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlcikpO1xuXG4gIGFkZEZpbHRlckRpcmVjdGl2ZXMgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHtcbiAgICBjb25zdCBjdXN0b21GaWx0ZXJzJCA9ICB0b09ic2VydmFibGUodGhpcy5hbGxGaWx0ZXJEaXJlY3RpdmVzLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KS5waXBlKFxuICAgICAgbWVyZ2VNYXAoIGN1c3RvbWVyRmlsdGVycyA9PiBjdXN0b21lckZpbHRlcnNcbiAgICAgICAgLmZpbHRlciggZmlsdGVyID0+ICFmaWx0ZXIuc2F2YWJsZSApXG4gICAgICAgIC5tYXAoZmlsdGVyID0+IGZpbHRlci5maWx0ZXIkIClcbiAgICAgICksXG4gICAgICBtZXJnZUFsbCgpLFxuICAgICAgc2NhbiggKGEsYik9PiB7XG4gICAgICAgICAgaWYoYi5hY3RpdmUpIHtcbiAgICAgICAgICAgIGFbYi5maWx0ZXJJZF0gPSBpc0N1c3RvbUZpbHRlcihiKSA/IGIucHJlZGljYXRlIDogY3JlYXRlRmlsdGVyRnVuYyhiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGFbYi5maWx0ZXJJZF0gO1xuICAgICAgICAgIH1cbiAgICAgIHJldHVybiBhO1xuICAgICAgfSwge30gYXMgRGljdGlvbmFyeTxQcmVkaWNhdGU8YW55Pj4pLFxuICAgICAgbWFwKCBmID0+IE9iamVjdC52YWx1ZXMoZikpXG4gICAgKTtcblxuICAgIHRoaXMuc3RhdGUub24oY3VzdG9tRmlsdGVycyQsIChmKSA9PiB7XG4gICAgICB0aGlzLmN1c3RvbUZpbHRlcnMkLm5leHQoZik7XG4gICAgfSk7XG4gIH1cblxuICAkdXNlVmlydHVhbCA9IHRoaXMuc3RhdGUuJGlzVmlydHVhbDtcbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cIltiZWZvcmVdXCIgLz5cblxuPG5nLWNvbnRhaW5lciBtdWx0aVNvcnQgKm5ncnhMZXQ9XCJzdGF0ZS50YWJsZVNldHRpbmdzJCBhcyB0YWJsZVNldHRpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgQGlmICgoIShjb2xsYXBzZUhlYWRlciQgfCBhc3luYykpIHx8IHRhYmxlU2V0dGluZ3Muc2hvd1RpdGxlV2hlbkhlYWRlckNvbGxhcHNlZCkge1xuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIudGItaGVhZGVyLXRpdGxlXCIvPlxuICAgICAgfVxuICAgICAgQGlmKChzdGF0ZS5ncm91cEJ5S2V5cyQgfCBhc3luYyk/Lmxlbmd0aCl7XG4gICAgICAgIDxncm91cC1ieS1saXN0IC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZseC1yb3ctZW5kXCI+XG4gICAgICA8bGliLWZpbHRlci1saXN0IC8+XG4gICAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVIZWFkZXIpIHtcbiAgICAgICAgQGlmICghKGNvbGxhcHNlSGVhZGVyJCB8IGFzeW5jKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJNZW51XCIvPlxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPSdwcmltYXJ5JyBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWFpbk1lbnVcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtbWVudSAjbWFpbk1lbnU9J21hdE1lbnUnPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiLz5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1haW5NZW51XCIgY2xhc3M9XCJmbGF0LW1lbnUtYnV0dG9uIHBvaW50ZXJcIj5tb3JlX2hvcml6PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LW1lbnUgI21haW5NZW51PSdtYXRNZW51Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyTWVudVwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlck1lbnVFeHRyYVwiLz5cbiAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICB9XG4gICAgICAgIDxtYXQtaWNvbiBbbWF0VG9vbHRpcF09XCIoY29sbGFwc2VIZWFkZXIkIHwgYXN5bmMpID8gJ2V4cGFuZCcgOiAnY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS1pY29uIGhlYWRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cInN0YXRlLnRvZ2dsZUNvbGxhcHNlSGVhZGVyKClcIj5cbiAgICAgICAgICB7eyhjb2xsYXBzZUhlYWRlciQgfCBhc3luYykgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJ319XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICB9XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCI+XG4gICAgQGlmKCR1c2VWaXJ0dWFsKCkpXG4gICAge1xuICAgICAgPHRiLXZpcnR1YWwtc2Nyb2xsLWNvbnRhaW5lcj5cbiAgICAgICAgPHRiLWdlbmVyaWMtdGFibGUgW3Jvd3NdPSdjdXN0b21Sb3dzJyBbZGF0YV09XCIoZGF0YSB8IGFzeW5jKSFcIiBbZGlzcGxheURhdGEkXT1cImRpc3BsYXlEYXRhXCJcbiAgICAgICAgICAoc2VsZWN0aW9uJCk9J3NlbGVjdGlvbiQuZW1pdCgkZXZlbnQpJyBbY29sdW1uSW5mb3NdPSdteUNvbHVtbnMkJyBbdHJhY2tCeV09XCJ0cmFja0J5XCIgLz5cbiAgICAgIDwvdGItdmlydHVhbC1zY3JvbGwtY29udGFpbmVyPlxuICAgIH1cbiAgICBAZWxzZVxuICAgIHtcbiAgICAgIDx0Yi1nZW5lcmljLXRhYmxlIFtyb3dzXT0nY3VzdG9tUm93cycgW2RhdGFdPVwiKGRhdGEgfCBhc3luYykhXCIgW2Rpc3BsYXlEYXRhJF09XCJkaXNwbGF5RGF0YVwiXG4gICAgICAgIChzZWxlY3Rpb24kKT0nc2VsZWN0aW9uJC5lbWl0KCRldmVudCknIFtjb2x1bW5JbmZvc109J215Q29sdW1ucyQnIFt0cmFja0J5XT1cInRyYWNrQnlcIiAvPlxuICAgIH1cblxuICA8L2Rpdj5cbiAgQGlmKHRhYmxlU2V0dGluZ3MudXNlUGFnaW5hdG9yKVxuICB7XG4gICAgPGRpdiBjbGFzcz1cInBhZ2luYXRvclwiPlxuICAgICAgPHRiLXBhZ2luYXRvciAjdGJQYWdpbmF0b3IgW2RhdGEkXT1cImRhdGFcIiBbdGFibGVFbFJlZl09XCJ0YWJsZUVsUmVmXCIgLz5cblxuICAgICAgPG1hdC1pY29uIFttYXRUb29sdGlwXT1cIihjb2xsYXBzZUZvb3RlciQgfCBhc3luYykgPyAnZXhwYW5kJyA6ICdjb2xsYXBzZSdcIiBjbGFzcz1cImNvbGxhcHNlLWljb24gZm9vdGVyXCJcbiAgICAgICAgKGNsaWNrKT1cInN0YXRlLnRvZ2dsZUNvbGxhcHNlRm9vdGVyKClcIj5cbiAgICAgICAge3soY29sbGFwc2VGb290ZXIkIHwgYXN5bmMpID8gJ2V4cGFuZF9tb3JlJyA6ICdleHBhbmRfbGVzcyd9fVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxuZy10ZW1wbGF0ZSAjaGVhZGVyTWVudT5cbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVGaWx0ZXIpIHs8dGItZmlsdGVyLWRpc3BsYXllci8+fVxuICAgIEBpZiAoIXRhYmxlU2V0dGluZ3MuaGlkZUNvbHVtblNldHRpbmdzKSB7PHRiLWNvbC1kaXNwbGF5ZXIvPn1cbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVTb3J0KSB7PHRiLXNvcnQtbWVudS8+fVxuICAgIEBpZiAoISF0YWJsZUlkKSB7PHRiLXByb2ZpbGVzLW1lbnUgWyR0YWJsZUlkXT1cInRhYmxlSWRcIiAob25TYXZlU3RhdGUpPVwib25TYXZlU3RhdGUuZW1pdCgkZXZlbnQpXCIvPn1cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2hlYWRlck1lbnVFeHRyYT5cbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInJlc2V0U3RhdGUoKVwiPlxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmF1dG9yZW5ldzwvbWF0LWljb24+XG4gICAgICA8c3Bhbj5SZXNldCB0YWJsZTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICBAaWYgKCF0YWJsZVNldHRpbmdzLmhpZGVFeHBvcnQpIHtcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZXhwb3J0VG9Dc3YoKVwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuPkV4cG9ydCBUYWJsZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKHRhYmxlSWQpIHtcbiAgICAgIDxidXR0b24gc3RvcC1wcm9wYWdhdGlvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwbS50cmlnZ2VyKCk/LnRvZ2dsZU1lbnUoKVwiPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+cGVvcGxlPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+UHJvZmlsZXM8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDx0Yi1wcm9maWxlcy1tZW51IGNsYXNzPVwicHJvZmlsZXMtbWVudVwiICNwbSBbJHRhYmxlSWRdPVwidGFibGVJZFwiIChvblNhdmVTdGF0ZSk9XCJvblNhdmVTdGF0ZS5lbWl0KCRldmVudClcIi8+XG4gICAgfVxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -3,5 +3,6 @@ export const defaultProps = {
3
3
  selectionColumn: false,
4
4
  isSticky: true,
5
5
  stickyFooter: false,
6
+ groupHeaderHeight: undefined,
6
7
  };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFlO0lBQ3RDLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsWUFBWSxFQUFFLEtBQUs7Q0FDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckRhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckRhdGFTb3VyY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBpbmRleENvbHVtbjogYm9vbGVhbjtcclxuICBzZWxlY3Rpb25Db2x1bW46IGJvb2xlYW47XHJcbiAgaXNTdGlja3k6IGJvb2xlYW47XHJcbiAgc3RpY2t5Rm9vdGVyOmJvb2xlYW47XHJcbiAgZ3JvdXBIZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgZGF0YVNvdXJjZT86IFRhYmxlQnVpbGRlckRhdGFTb3VyY2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQcm9wczogVGFibGVQcm9wcyA9IHtcclxuICBpbmRleENvbHVtbjogZmFsc2UsXHJcbiAgc2VsZWN0aW9uQ29sdW1uOiBmYWxzZSxcclxuICBpc1N0aWNreTogdHJ1ZSxcclxuICBzdGlja3lGb290ZXI6IGZhbHNlLFxyXG59XHJcbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyL3RhYmxlUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFlO0lBQ3RDLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsaUJBQWlCLEVBQUUsU0FBUztDQUM3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlckRhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckRhdGFTb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xuICBpbmRleENvbHVtbjogYm9vbGVhbjtcbiAgc2VsZWN0aW9uQ29sdW1uOiBib29sZWFuO1xuICBpc1N0aWNreTogYm9vbGVhbjtcbiAgc3RpY2t5Rm9vdGVyOmJvb2xlYW47XG4gIGdyb3VwSGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBkYXRhU291cmNlPzogVGFibGVCdWlsZGVyRGF0YVNvdXJjZTxhbnk+O1xuICBncm91cEhlYWRlckhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQcm9wczogVGFibGVQcm9wcyA9IHtcbiAgaW5kZXhDb2x1bW46IGZhbHNlLFxuICBzZWxlY3Rpb25Db2x1bW46IGZhbHNlLFxuICBpc1N0aWNreTogdHJ1ZSxcbiAgc3RpY2t5Rm9vdGVyOiBmYWxzZSxcbiAgZ3JvdXBIZWFkZXJIZWlnaHQ6IHVuZGVmaW5lZCxcbn1cbiJdfQ==