@elderbyte/ngx-starter 18.15.2 → 19.0.0

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 (576) hide show
  1. package/fesm2022/elderbyte-ngx-starter.mjs +1097 -1125
  2. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  3. package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
  4. package/lib/common/forms/elder-from-field-base.d.ts +1 -1
  5. package/lib/common/forms/elder-from-field-customizable-base.d.ts +1 -1
  6. package/lib/common/forms/elder-from-field-entity-base.d.ts +1 -1
  7. package/lib/common/forms/elder-from-field-multi-entity-base.d.ts +1 -1
  8. package/lib/common/forms/form-field-base.component.d.ts +1 -1
  9. package/lib/common/forms/multi-model-base.component.d.ts +1 -1
  10. package/lib/common/forms/template-composite-control.d.ts +1 -1
  11. package/lib/common/forms/value-accessor-base.d.ts +1 -1
  12. package/lib/common/reactive-map.d.ts +1 -1
  13. package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
  14. package/lib/components/forms/directives/base/elder-class-hostbinding-base.d.ts +1 -1
  15. package/lib/components/iframes/typed-event-message.d.ts +1 -1
  16. package/lib/components/panels/elder-panel.module.d.ts +5 -7
  17. package/lib/components/select/elder-select-base.d.ts +1 -1
  18. package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
  19. package/lib/components/select/multi/elder-multi-select-form-field.d.ts +1 -1
  20. package/lib/components/select/single/elder-select-form-field.d.ts +1 -1
  21. package/package.json +6 -8
  22. package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -3
  23. package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +3 -0
  24. package/esm2022/elderbyte-ngx-starter.mjs +0 -5
  25. package/esm2022/lib/common/arrays.mjs +0 -29
  26. package/esm2022/lib/common/async/public_api.mjs +0 -2
  27. package/esm2022/lib/common/async/refreshing-entity.mjs +0 -88
  28. package/esm2022/lib/common/csv/csv-serializer.mjs +0 -55
  29. package/esm2022/lib/common/csv/csv-spec.mjs +0 -99
  30. package/esm2022/lib/common/csv/public_api.mjs +0 -3
  31. package/esm2022/lib/common/data/continuable-listing.mjs +0 -10
  32. package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +0 -131
  33. package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +0 -78
  34. package/esm2022/lib/common/data/data-context/data-context-base.mjs +0 -339
  35. package/esm2022/lib/common/data/data-context/data-context-builder.mjs +0 -245
  36. package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +0 -67
  37. package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -142
  38. package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +0 -146
  39. package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -32
  40. package/esm2022/lib/common/data/data-context/data-context-simple.mjs +0 -61
  41. package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -63
  42. package/esm2022/lib/common/data/data-context/data-context-status.mjs +0 -46
  43. package/esm2022/lib/common/data/data-context/data-context.mjs +0 -30
  44. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +0 -153
  45. package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -145
  46. package/esm2022/lib/common/data/data-context/public_api.mjs +0 -15
  47. package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +0 -59
  48. package/esm2022/lib/common/data/datasource/data-source-base.mjs +0 -38
  49. package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +0 -34
  50. package/esm2022/lib/common/data/datasource/data-source-processor.mjs +0 -198
  51. package/esm2022/lib/common/data/datasource/data-source.mjs +0 -23
  52. package/esm2022/lib/common/data/datasource/entity-id-util.mjs +0 -11
  53. package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
  54. package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +0 -153
  55. package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -75
  56. package/esm2022/lib/common/data/datasource/patch/deep-partial-patcher.mjs +0 -58
  57. package/esm2022/lib/common/data/datasource/public_api.mjs +0 -10
  58. package/esm2022/lib/common/data/datasource/rest/public_api.mjs +0 -2
  59. package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +0 -290
  60. package/esm2022/lib/common/data/entity-set-patch.mjs +0 -161
  61. package/esm2022/lib/common/data/field-comparator.mjs +0 -108
  62. package/esm2022/lib/common/data/filters/filter-commons.mjs +0 -12
  63. package/esm2022/lib/common/data/filters/filter-context.mjs +0 -135
  64. package/esm2022/lib/common/data/filters/filter-value.mjs +0 -2
  65. package/esm2022/lib/common/data/filters/filter.mjs +0 -104
  66. package/esm2022/lib/common/data/http-params-builder.mjs +0 -116
  67. package/esm2022/lib/common/data/page.mjs +0 -58
  68. package/esm2022/lib/common/data/public_api.mjs +0 -12
  69. package/esm2022/lib/common/data/required-filter-evaluator.mjs +0 -71
  70. package/esm2022/lib/common/data/sort-context.mjs +0 -73
  71. package/esm2022/lib/common/data/sort.mjs +0 -11
  72. package/esm2022/lib/common/data/token-chunk-request.mjs +0 -8
  73. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +0 -84
  74. package/esm2022/lib/common/enums/public_api.mjs +0 -2
  75. package/esm2022/lib/common/errors/exception-detail.mjs +0 -2
  76. package/esm2022/lib/common/errors/public_api.mjs +0 -3
  77. package/esm2022/lib/common/errors/standard-error-detail.mjs +0 -2
  78. package/esm2022/lib/common/exceptions/public_api.mjs +0 -2
  79. package/esm2022/lib/common/exceptions/unreachable-case-error.mjs +0 -8
  80. package/esm2022/lib/common/format/bytes-format.mjs +0 -15
  81. package/esm2022/lib/common/format/bytes-per-second-format.mjs +0 -41
  82. package/esm2022/lib/common/format/curency-format-util.mjs +0 -43
  83. package/esm2022/lib/common/format/duration-format-util.mjs +0 -44
  84. package/esm2022/lib/common/format/iso-interval-format-util.mjs +0 -111
  85. package/esm2022/lib/common/format/public_api.mjs +0 -6
  86. package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +0 -22
  87. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -188
  88. package/esm2022/lib/common/forms/elder-from-field-base.mjs +0 -94
  89. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
  90. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
  91. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
  92. package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -22
  93. package/esm2022/lib/common/forms/form-field-base.component.mjs +0 -111
  94. package/esm2022/lib/common/forms/multi-model-base.component.mjs +0 -32
  95. package/esm2022/lib/common/forms/public_api.mjs +0 -12
  96. package/esm2022/lib/common/forms/template-composite-control.mjs +0 -136
  97. package/esm2022/lib/common/forms/value-accessor-base.mjs +0 -146
  98. package/esm2022/lib/common/forms/view-providers.mjs +0 -30
  99. package/esm2022/lib/common/http/http-client-builder.service.mjs +0 -14
  100. package/esm2022/lib/common/http/http-client-pristine.mjs +0 -21
  101. package/esm2022/lib/common/http/public_api.mjs +0 -5
  102. package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +0 -77
  103. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +0 -106
  104. package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -60
  105. package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
  106. package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +0 -82
  107. package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +0 -24
  108. package/esm2022/lib/common/http/transfer/data-transfer.mjs +0 -2
  109. package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +0 -132
  110. package/esm2022/lib/common/http/transfer/public_api.mjs +0 -7
  111. package/esm2022/lib/common/http/upload/file-upload-client.mjs +0 -42
  112. package/esm2022/lib/common/i18n/entity/elder-multi-translate-loader.mjs +0 -53
  113. package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +0 -6
  114. package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
  115. package/esm2022/lib/common/i18n/entity/impl/translated.mjs +0 -15
  116. package/esm2022/lib/common/i18n/entity/language-tag.mjs +0 -12
  117. package/esm2022/lib/common/i18n/entity/locale.mjs +0 -12
  118. package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +0 -30
  119. package/esm2022/lib/common/i18n/entity/localized.mjs +0 -2
  120. package/esm2022/lib/common/i18n/entity/public_api.mjs +0 -10
  121. package/esm2022/lib/common/i18n/entity/translated-converter.mjs +0 -18
  122. package/esm2022/lib/common/i18n/entity/translated.mjs +0 -2
  123. package/esm2022/lib/common/i18n/public_api.mjs +0 -2
  124. package/esm2022/lib/common/json-map.mjs +0 -17
  125. package/esm2022/lib/common/objects.mjs +0 -43
  126. package/esm2022/lib/common/public_api.mjs +0 -23
  127. package/esm2022/lib/common/reactive-map.mjs +0 -69
  128. package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +0 -34
  129. package/esm2022/lib/common/rxjs/public_api.mjs +0 -2
  130. package/esm2022/lib/common/selection/public_api.mjs +0 -2
  131. package/esm2022/lib/common/selection/selection-model.mjs +0 -213
  132. package/esm2022/lib/common/sets.mjs +0 -45
  133. package/esm2022/lib/common/suggestion-provider.mjs +0 -12
  134. package/esm2022/lib/common/templates/template-slot-manager.mjs +0 -135
  135. package/esm2022/lib/common/theme-sizes.mjs +0 -2
  136. package/esm2022/lib/common/time/date-util.mjs +0 -91
  137. package/esm2022/lib/common/time/interval-coerce.mjs +0 -30
  138. package/esm2022/lib/common/time/interval.mjs +0 -442
  139. package/esm2022/lib/common/time/period-duration.mjs +0 -133
  140. package/esm2022/lib/common/time/public_api.mjs +0 -8
  141. package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +0 -34
  142. package/esm2022/lib/common/time/temporal-util.mjs +0 -205
  143. package/esm2022/lib/common/time/time-util.mjs +0 -38
  144. package/esm2022/lib/common/url/elder-router.service.mjs +0 -54
  145. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +0 -117
  146. package/esm2022/lib/common/url/public_api.mjs +0 -4
  147. package/esm2022/lib/common/url/url-query-params.mjs +0 -133
  148. package/esm2022/lib/common/utils/batcher.mjs +0 -35
  149. package/esm2022/lib/common/utils/collection-util.mjs +0 -111
  150. package/esm2022/lib/common/utils/filter-util.mjs +0 -133
  151. package/esm2022/lib/common/utils/focus-util.mjs +0 -23
  152. package/esm2022/lib/common/utils/input-utils.mjs +0 -6
  153. package/esm2022/lib/common/utils/next-number-util.mjs +0 -89
  154. package/esm2022/lib/common/utils/ng-zone-utils.mjs +0 -16
  155. package/esm2022/lib/common/utils/parse-util.mjs +0 -17
  156. package/esm2022/lib/common/utils/property-path-util.mjs +0 -28
  157. package/esm2022/lib/common/utils/public_api.mjs +0 -14
  158. package/esm2022/lib/common/utils/query-list-binding.mjs +0 -68
  159. package/esm2022/lib/common/utils/signal-input.mjs +0 -3
  160. package/esm2022/lib/common/utils/sort-util.mjs +0 -42
  161. package/esm2022/lib/common/utils/url-builder.mjs +0 -275
  162. package/esm2022/lib/common/utils/uuid-util.mjs +0 -28
  163. package/esm2022/lib/common/utils/value-wrapper.mjs +0 -19
  164. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +0 -15
  165. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +0 -20
  166. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -50
  167. package/esm2022/lib/components/auditing/elder-audit.module.mjs +0 -40
  168. package/esm2022/lib/components/auditing/i-audited-entity.mjs +0 -3
  169. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -162
  170. package/esm2022/lib/components/badge/elder-badge.directive.mjs +0 -124
  171. package/esm2022/lib/components/badge/elder-badge.module.mjs +0 -58
  172. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -13
  173. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +0 -21
  174. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -118
  175. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -18
  176. package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +0 -93
  177. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -220
  178. package/esm2022/lib/components/card-organizer/card-stack.mjs +0 -176
  179. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -62
  180. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
  181. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +0 -167
  182. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +0 -71
  183. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +0 -171
  184. package/esm2022/lib/components/chips/elder-chips.module.mjs +0 -45
  185. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +0 -57
  186. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +0 -61
  187. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
  188. package/esm2022/lib/components/connectivity/public_api.mjs +0 -3
  189. package/esm2022/lib/components/containers/elder-containers.module.mjs +0 -18
  190. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
  191. package/esm2022/lib/components/containers/public_api.mjs +0 -2
  192. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
  193. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -38
  194. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
  195. package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
  196. package/esm2022/lib/components/csv/elder-csv.module.mjs +0 -24
  197. package/esm2022/lib/components/currency/elder-currency.module.mjs +0 -18
  198. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +0 -37
  199. package/esm2022/lib/components/currency/model/currency-code.mjs +0 -38
  200. package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +0 -30
  201. package/esm2022/lib/components/currency/model/currency-unit.mjs +0 -10
  202. package/esm2022/lib/components/currency/model/currency.mjs +0 -15
  203. package/esm2022/lib/components/currency/public_api.mjs +0 -7
  204. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -91
  205. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -93
  206. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -102
  207. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
  208. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -57
  209. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -34
  210. package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -69
  211. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +0 -265
  212. package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -44
  213. package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
  214. package/esm2022/lib/components/data-view/base/elder-data-view.mjs +0 -3
  215. package/esm2022/lib/components/data-view/base/public_api.mjs +0 -6
  216. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +0 -30
  217. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +0 -55
  218. package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +0 -68
  219. package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +0 -101
  220. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
  221. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +0 -125
  222. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -140
  223. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -100
  224. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -103
  225. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -36
  226. package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +0 -10
  227. package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -2
  228. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -345
  229. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +0 -91
  230. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -75
  231. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -50
  232. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -79
  233. package/esm2022/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -2
  234. package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
  235. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -119
  236. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
  237. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -89
  238. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -23
  239. package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -12
  240. package/esm2022/lib/components/data-view/public_api.mjs +0 -7
  241. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -18
  242. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -104
  243. package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +0 -7
  244. package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -2
  245. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -114
  246. package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -2
  247. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -315
  248. package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +0 -8
  249. package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +0 -7
  250. package/esm2022/lib/components/data-view/table/activation/public_api.mjs +0 -8
  251. package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +0 -23
  252. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -30
  253. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +0 -73
  254. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -21
  255. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -338
  256. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +0 -18
  257. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -92
  258. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +0 -26
  259. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +0 -156
  260. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -23
  261. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +0 -184
  262. package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
  263. package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -85
  264. package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
  265. package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -89
  266. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +0 -167
  267. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -37
  268. package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +0 -3
  269. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +0 -87
  270. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +0 -199
  271. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -57
  272. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
  273. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -47
  274. package/esm2022/lib/components/errors/elder-error.module.mjs +0 -39
  275. package/esm2022/lib/components/errors/error-util.mjs +0 -94
  276. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -77
  277. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
  278. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -35
  279. package/esm2022/lib/components/files/blob-url.mjs +0 -10
  280. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -224
  281. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -44
  282. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
  283. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +0 -145
  284. package/esm2022/lib/components/files/elder-file-select-input.mjs +0 -119
  285. package/esm2022/lib/components/files/elder-file-select.directive.mjs +0 -167
  286. package/esm2022/lib/components/files/elder-file.module.mjs +0 -85
  287. package/esm2022/lib/components/files/file-select/file-select.component.mjs +0 -54
  288. package/esm2022/lib/components/files/file-system-api.mjs +0 -100
  289. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +0 -80
  290. package/esm2022/lib/components/files/listing/file-entry.mjs +0 -92
  291. package/esm2022/lib/components/files/listing/file-listing-rx.mjs +0 -64
  292. package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +0 -35
  293. package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +0 -76
  294. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
  295. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
  296. package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.mjs +0 -97
  297. package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +0 -50
  298. package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.mjs +0 -102
  299. package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +0 -50
  300. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -38
  301. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -43
  302. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -83
  303. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -84
  304. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -42
  305. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -35
  306. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -142
  307. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +0 -67
  308. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -78
  309. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +0 -112
  310. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -102
  311. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -37
  312. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -30
  313. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -161
  314. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +0 -28
  315. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -88
  316. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
  317. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
  318. package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -6
  319. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -53
  320. package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -2
  321. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -36
  322. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -36
  323. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -112
  324. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -69
  325. package/esm2022/lib/components/forms/elder-forms.module.mjs +0 -22
  326. package/esm2022/lib/components/forms/public_api.mjs +0 -6
  327. package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +0 -73
  328. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +0 -42
  329. package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +0 -2
  330. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +0 -88
  331. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +0 -2
  332. package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +0 -50
  333. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +0 -92
  334. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +0 -166
  335. package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +0 -81
  336. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +0 -256
  337. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +0 -258
  338. package/esm2022/lib/components/forms/search/elder-search.module.mjs +0 -115
  339. package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +0 -45
  340. package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +0 -2
  341. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -131
  342. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -24
  343. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +0 -136
  344. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +0 -47
  345. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +0 -95
  346. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
  347. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -19
  348. package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -7
  349. package/esm2022/lib/components/graph/public_api.mjs +0 -2
  350. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +0 -29
  351. package/esm2022/lib/components/headers/elder-header.module.mjs +0 -42
  352. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +0 -63
  353. package/esm2022/lib/components/http-support/public_api.mjs +0 -2
  354. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -125
  355. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -157
  356. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -39
  357. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
  358. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -177
  359. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -31
  360. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
  361. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -40
  362. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -31
  363. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
  364. package/esm2022/lib/components/i18n/language/elder-language-config.mjs +0 -3
  365. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +0 -70
  366. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +0 -73
  367. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +0 -120
  368. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -79
  369. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
  370. package/esm2022/lib/components/i18n/public_api.mjs +0 -4
  371. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -129
  372. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -141
  373. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +0 -106
  374. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +0 -41
  375. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
  376. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -144
  377. package/esm2022/lib/components/iframes/iframe-messages.mjs +0 -5
  378. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -80
  379. package/esm2022/lib/components/iframes/iframe.service.mjs +0 -54
  380. package/esm2022/lib/components/iframes/typed-event-message.mjs +0 -42
  381. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -65
  382. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -166
  383. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -20
  384. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -9
  385. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +0 -233
  386. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -202
  387. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -120
  388. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -61
  389. package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -58
  390. package/esm2022/lib/components/input/public_api.mjs +0 -2
  391. package/esm2022/lib/components/labels/elder-labels.module.mjs +0 -50
  392. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +0 -239
  393. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -268
  394. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -92
  395. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -65
  396. package/esm2022/lib/components/measures/elder-measures.module.mjs +0 -130
  397. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -31
  398. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +0 -43
  399. package/esm2022/lib/components/measures/elder-unit.service.mjs +0 -113
  400. package/esm2022/lib/components/measures/model/dimensions.mjs +0 -17
  401. package/esm2022/lib/components/measures/model/quantity.mjs +0 -12
  402. package/esm2022/lib/components/measures/model/unit-dimension.mjs +0 -14
  403. package/esm2022/lib/components/measures/model/unit-registry.mjs +0 -81
  404. package/esm2022/lib/components/measures/model/unit.mjs +0 -143
  405. package/esm2022/lib/components/measures/public_api.mjs +0 -8
  406. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -44
  407. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -173
  408. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -84
  409. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -73
  410. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +0 -341
  411. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -184
  412. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -59
  413. package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
  414. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +0 -60
  415. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -121
  416. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -174
  417. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
  418. package/esm2022/lib/components/navigation/public_api.mjs +0 -4
  419. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -48
  420. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -83
  421. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
  422. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -71
  423. package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -2
  424. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
  425. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -86
  426. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -44
  427. package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +0 -41
  428. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -73
  429. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +0 -232
  430. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +0 -35
  431. package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +0 -20
  432. package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +0 -129
  433. package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +0 -25
  434. package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +0 -29
  435. package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +0 -26
  436. package/esm2022/lib/components/page/public_api.mjs +0 -2
  437. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
  438. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
  439. package/esm2022/lib/components/panels/elder-panel.module.mjs +0 -60
  440. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +0 -26
  441. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -70
  442. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -74
  443. package/esm2022/lib/components/public_api.mjs +0 -43
  444. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -63
  445. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
  446. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -95
  447. package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +0 -38
  448. package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +0 -64
  449. package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +0 -55
  450. package/esm2022/lib/components/select/elder-select-base.mjs +0 -333
  451. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +0 -48
  452. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +0 -139
  453. package/esm2022/lib/components/select/elder-select-value.directive.mjs +0 -18
  454. package/esm2022/lib/components/select/elder-select.module.mjs +0 -229
  455. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +0 -74
  456. package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +0 -148
  457. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +0 -51
  458. package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +0 -61
  459. package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +0 -160
  460. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +0 -16
  461. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +0 -386
  462. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +0 -87
  463. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +0 -263
  464. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +0 -15
  465. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -274
  466. package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +0 -15
  467. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -86
  468. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +0 -34
  469. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +0 -146
  470. package/esm2022/lib/components/select/multi/public_api.mjs +0 -5
  471. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -89
  472. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
  473. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -58
  474. package/esm2022/lib/components/select/public_api.mjs +0 -5
  475. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +0 -60
  476. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +0 -444
  477. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +0 -45
  478. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -148
  479. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -46
  480. package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -64
  481. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -119
  482. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
  483. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +0 -47
  484. package/esm2022/lib/components/shell/elder-shell.module.mjs +0 -101
  485. package/esm2022/lib/components/shell/elder-shell.service.mjs +0 -142
  486. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -75
  487. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +0 -238
  488. package/esm2022/lib/components/shell/shell-content-slot.mjs +0 -2
  489. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
  490. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -26
  491. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -257
  492. package/esm2022/lib/components/tabs/elder-tab.module.mjs +0 -21
  493. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
  494. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +0 -73
  495. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
  496. package/esm2022/lib/components/theme/elder-theme.directive.mjs +0 -64
  497. package/esm2022/lib/components/theme/elder-theme.module.mjs +0 -68
  498. package/esm2022/lib/components/theme/elder-theme.service.mjs +0 -121
  499. package/esm2022/lib/components/theme/known-elder-themes.mjs +0 -6
  500. package/esm2022/lib/components/theme/public_api.mjs +0 -2
  501. package/esm2022/lib/components/theme/theme-spec.mjs +0 -11
  502. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -43
  503. package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +0 -28
  504. package/esm2022/lib/components/time/duration/duration-bucket.mjs +0 -68
  505. package/esm2022/lib/components/time/duration/duration-format.mjs +0 -271
  506. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -110
  507. package/esm2022/lib/components/time/duration/iso-duration-str.mjs +0 -2
  508. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -96
  509. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -98
  510. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -217
  511. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +0 -21
  512. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +0 -24
  513. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +0 -43
  514. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +0 -69
  515. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +0 -117
  516. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +0 -44
  517. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +0 -198
  518. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +0 -41
  519. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -144
  520. package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +0 -93
  521. package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +0 -54
  522. package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +0 -37
  523. package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +0 -10
  524. package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +0 -96
  525. package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +0 -194
  526. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -268
  527. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -85
  528. package/esm2022/lib/components/time/elder-time.module.mjs +0 -154
  529. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -118
  530. package/esm2022/lib/components/time/period/period-bucket.mjs +0 -31
  531. package/esm2022/lib/components/time/period/period-format.mjs +0 -89
  532. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -39
  533. package/esm2022/lib/components/time/public_api.mjs +0 -8
  534. package/esm2022/lib/components/toasts/elder-toast.module.mjs +0 -36
  535. package/esm2022/lib/components/toasts/elder-toast.service.mjs +0 -170
  536. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -80
  537. package/esm2022/lib/components/toasts/toast-type.mjs +0 -7
  538. package/esm2022/lib/components/toasts/toast.mjs +0 -2
  539. package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +0 -9
  540. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -52
  541. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -95
  542. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -64
  543. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +0 -18
  544. package/esm2022/lib/features/event-source/fetch/public_api.mjs +0 -3
  545. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +0 -219
  546. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +0 -53
  547. package/esm2022/lib/features/event-source/public_api.mjs +0 -3
  548. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +0 -56
  549. package/esm2022/lib/features/event-source/standard/public_api.mjs +0 -3
  550. package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +0 -199
  551. package/esm2022/lib/features/kafent/access-token-provider.mjs +0 -20
  552. package/esm2022/lib/features/kafent/kafent-config.mjs +0 -24
  553. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +0 -25
  554. package/esm2022/lib/features/kafent/kafent-event.mjs +0 -3
  555. package/esm2022/lib/features/kafent/kafent-event.service.mjs +0 -115
  556. package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +0 -2
  557. package/esm2022/lib/features/kafent/kafent.module.mjs +0 -58
  558. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -131
  559. package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -97
  560. package/esm2022/lib/features/public_api.mjs +0 -3
  561. package/esm2022/lib/pipes/bytes.pipe.mjs +0 -27
  562. package/esm2022/lib/pipes/elder-pipes.module.mjs +0 -114
  563. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +0 -24
  564. package/esm2022/lib/pipes/elder-round.pipe.mjs +0 -36
  565. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +0 -21
  566. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +0 -41
  567. package/esm2022/lib/pipes/iso-duration.pipe.mjs +0 -41
  568. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
  569. package/esm2022/lib/pipes/iso-interval.pipe.mjs +0 -62
  570. package/esm2022/lib/pipes/public_api.mjs +0 -2
  571. package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -110
  572. package/esm2022/lib/pipes/time-duration.pipe.mjs +0 -101
  573. package/esm2022/lib/pipes/weight.pipe.mjs +0 -60
  574. package/esm2022/public_api.mjs +0 -8
  575. package/lib/components/panels/flat/elder-panel.component.d.ts +0 -15
  576. package/src/lib/components/panels/flat/elder-panel.component.scss +0 -3
@@ -1,386 +0,0 @@
1
- import { Directive, HostBinding, inject, Input, Output } from '@angular/core';
2
- import { ElderSelectBase, ElderSelectComponentState } from '../elder-select-base';
3
- import { BehaviorSubject, EMPTY, of, throwError } from 'rxjs';
4
- import { LoggerFactory } from '@elderbyte/ts-logger';
5
- import { catchError, filter, map, skip, switchMap, take, tap, timeout } from 'rxjs/operators';
6
- import { Sets } from '../../../common/sets';
7
- import { SortUtil } from '../../../common/utils/sort-util';
8
- import { ElderDialogService } from '../../dialogs/elder-dialog.service';
9
- import { Arrays } from '../../../common/arrays';
10
- import * as i0 from "@angular/core";
11
- /**
12
- * Base component implementation of elder-multi-select.
13
- *
14
- * Multi Select has the following abstract concept:
15
- *
16
- * - Suggestion-Model: A DataSource and derived DataContext for the (auto-complete) suggestions.
17
- * - The backing Value is a list of the current selected entities. T[]
18
- *
19
- */
20
- // eslint-disable-next-line @angular-eslint/directive-class-suffix
21
- export class ElderMultiSelectBase extends ElderSelectBase {
22
- /***************************************************************************
23
- * *
24
- * Constructor *
25
- * *
26
- **************************************************************************/
27
- constructor(controlType) {
28
- super(controlType);
29
- /***************************************************************************
30
- * *
31
- * Fields *
32
- * *
33
- **************************************************************************/
34
- this.logger = LoggerFactory.getLogger(this.constructor.name);
35
- this._entities$ = new BehaviorSubject([]);
36
- /**
37
- * Defines how the entities should be sorted locally.
38
- * This affects how entities are displayed when more than
39
- * one is selected, such as in a chip list.
40
- */
41
- this.entitiesSorts = [];
42
- /**
43
- * If enabled, before removing selected entities
44
- * the user will be prompted to confirm.
45
- */
46
- this.confirmRemoval = false;
47
- this.dialogService = inject(ElderDialogService);
48
- this.entityIdsChange = this.valueChange.pipe(map((values) => this.entityIdsFromValues(values)));
49
- this._entityIds$ = this.value$.pipe(map((values) => this.entityIdsFromValues(values)));
50
- this.entitiesChange = this._entities$.pipe(skip(1) // Skip the initial or current value
51
- );
52
- this.entityIdsUpdated = this.valueUpdated.pipe(map((values) => this.entityIdsFromValues(values)));
53
- this.entitiesUpdated = this.entityIdsUpdated.pipe(tap((entityIds) => this.logger.debug('Awaiting entities with ids', entityIds)), switchMap((entityIds) => this.awaitEntitiesWithId(entityIds, this.timeoutAfterMs)), catchError((err) => {
54
- this.logger.warn(`awaitEntitiesWithId -> timed out after: ${this.timeoutAfterMs}`, err);
55
- return EMPTY;
56
- }));
57
- }
58
- awaitEntitiesWithId(entityIds, timeoutMs) {
59
- return this._entities$.pipe(tap((entities) => this.logger.debug('Got entities for ids' + entityIds, entities)), filter((entities) => this.equalIds(this.getEntityIds(entities), entityIds)), take(1), timeout(timeoutMs));
60
- }
61
- /***************************************************************************
62
- * *
63
- * Host Bindings *
64
- * *
65
- **************************************************************************/
66
- get hostClass() {
67
- return 'elder-select-base elder-multi-select';
68
- }
69
- get disabledClass() {
70
- return this.disabled;
71
- }
72
- get errorStateClass() {
73
- return this.errorState;
74
- }
75
- get requiredClass() {
76
- return this.required;
77
- }
78
- get emptyClass() {
79
- return this.empty;
80
- }
81
- /***************************************************************************
82
- * *
83
- * Properties *
84
- * *
85
- **************************************************************************/
86
- get entities$() {
87
- return this._entities$.asObservable();
88
- }
89
- get entityIds$() {
90
- return this._entityIds$;
91
- }
92
- set entities(entities) {
93
- if (!this.equalEntitiesExactOrder(this.entities, entities)) {
94
- this.writeValueInternal(this.entitiesToValues(this.writeEntitiesSorted(entities)));
95
- }
96
- }
97
- get entities() {
98
- return this._entities$.getValue();
99
- }
100
- set entityIds(ids) {
101
- if (!this.equalIdsExactOrder(this.entityIds, ids)) {
102
- if (this.valueAsId) {
103
- this.writeValueInternal(ids);
104
- }
105
- else {
106
- this.selectEntitiesByIds(ids);
107
- }
108
- }
109
- }
110
- get entityIds() {
111
- return this.entityIdsFromValues(this.value);
112
- }
113
- get isOptionDisabledInternalFn() {
114
- return (option) => {
115
- if (this.isOptionDisabledFn) {
116
- return this.isOptionDisabledFn(option);
117
- }
118
- else {
119
- return false;
120
- }
121
- };
122
- }
123
- get isOptionHiddenInternalFn() {
124
- return (option) => {
125
- if (this.isAlreadyPresent(option)) {
126
- return true;
127
- }
128
- if (this.isOptionHiddenFn) {
129
- return this.isOptionHiddenFn(option);
130
- }
131
- else {
132
- return false;
133
- }
134
- };
135
- }
136
- /***************************************************************************
137
- * *
138
- * Public API *
139
- * *
140
- **************************************************************************/
141
- updateValueByEntities(entities) {
142
- entities = this.writeEntitiesSorted(entities);
143
- this.updateValue(this.entitiesToValues(entities));
144
- }
145
- appendEntities(newEntities) {
146
- const current = this.entities ? this.entities : [];
147
- this.updateValueByEntities([...current, ...newEntities]);
148
- }
149
- appendEntity(newEntity) {
150
- this.appendEntities([newEntity]);
151
- }
152
- requestRemoveEntity(toRemove, skipConfirm) {
153
- if (toRemove !== undefined && toRemove !== null) {
154
- this.requestRemoveEntities([toRemove], skipConfirm);
155
- }
156
- }
157
- requestRemoveEntities(toRemove, skipConfirm) {
158
- this.dialogService.confirmDelete({
159
- deletionCount: toRemove.length,
160
- confirmRemoval: this.confirmRemoval,
161
- skipConfirm: skipConfirm,
162
- }, () => this.removeEntities(toRemove));
163
- }
164
- removeEntities(toRemove) {
165
- toRemove.forEach((e) => this.removeEntity(e));
166
- }
167
- removeEntity(toRemove) {
168
- const remaining = this.entities.filter((l) => !this.isEqual(l, toRemove));
169
- this.updateValueByEntities(remaining);
170
- }
171
- openSelectionPopup(event) {
172
- if (this.selectionPopup) {
173
- this.selectionPopup
174
- .choose((e) => this.getEntityId(e), this.entities, this.filters, this.sorts, true)
175
- .subscribe((selection) => this.updateValueByEntities(selection));
176
- }
177
- else {
178
- this.logger.warn('Cant open selection browser popup, since [SelectionModelPopupDirective] was not found!');
179
- }
180
- }
181
- entityToValue(entity) {
182
- if (this.valueAsId) {
183
- const id = this.getEntityId(entity);
184
- return id;
185
- }
186
- else {
187
- return entity;
188
- }
189
- }
190
- /***************************************************************************
191
- * *
192
- * Internal Methods *
193
- * *
194
- **************************************************************************/
195
- valuesEquals(a, b) {
196
- return this.equalIdsExactOrder(this.entityIdsFromValues(a), this.entityIdsFromValues(b));
197
- }
198
- onDataContextChanged(data) {
199
- if (this.valueAsId) {
200
- this.selectEntitiesByIds(this.entityIds);
201
- }
202
- }
203
- /**
204
- * This method is invoked after a value has been written to this control.
205
- *
206
- */
207
- writeToControl(value) {
208
- if (this.valueAsId) {
209
- const entityIds = value;
210
- // Value was written as entity ids, ensure we select entity by id
211
- this.logger.debug('writeToControl: value was written as ids: ' + entityIds, value);
212
- this.selectEntitiesByIds(entityIds);
213
- }
214
- else {
215
- // Value was written as entity, ensure entity is updated
216
- const currentEntities = this.entities;
217
- const newEntities = value;
218
- this.logger.debug('writeToControl: value was written as entities (size): ' + newEntities?.length, value);
219
- if (!this.equalEntities(currentEntities, newEntities)) {
220
- this.writeEntitiesSorted(newEntities);
221
- }
222
- else {
223
- this.logger.warn('Ignored written entities as they are already set to entities$!');
224
- }
225
- }
226
- super.writeToControl(value);
227
- }
228
- /***************************************************************************
229
- * *
230
- * Private Methods *
231
- * *
232
- **************************************************************************/
233
- isAlreadyPresent(queryValue) {
234
- if (this.entities) {
235
- return this.entities.some((v) => this.isEqual(v, queryValue));
236
- }
237
- else {
238
- return false;
239
- }
240
- }
241
- entityIdsFromValues(values) {
242
- if (values) {
243
- return values.map((v) => this.entityIdFromValue(v));
244
- }
245
- return null;
246
- }
247
- entityIdFromValue(value) {
248
- if (this.valueAsId) {
249
- return value;
250
- }
251
- else {
252
- const entity = value;
253
- return this.getEntityId(entity);
254
- }
255
- }
256
- entitiesToValues(entities) {
257
- if (entities) {
258
- return entities.map((e) => this.entityToValue(e));
259
- }
260
- return null;
261
- }
262
- getEntityIds(values) {
263
- if (values) {
264
- return values.map((v) => this.getEntityId(v));
265
- }
266
- return null;
267
- }
268
- equalIds(idsA, idsB) {
269
- return Sets.equalContent(idsA, idsB);
270
- }
271
- equalIdsExactOrder(idsA, idsB) {
272
- return Arrays.equalContentAndOrder(idsA, idsB);
273
- }
274
- equalEntities(entitiesA, entitiesB) {
275
- return this.equalIds(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
276
- }
277
- equalEntitiesExactOrder(entitiesA, entitiesB) {
278
- return this.equalIdsExactOrder(this.getEntityIds(entitiesA), this.getEntityIds(entitiesB));
279
- }
280
- selectEntitiesByIds(ids) {
281
- const currentEntities = this.entities;
282
- this.logger.info('selectEntitiesByIds: ids: ' + ids + ', current entities:', currentEntities);
283
- if (currentEntities && this.equalIds(this.getEntityIds(currentEntities), ids)) {
284
- return; // Entities already loaded
285
- }
286
- this.findOrLoadEntitiesByIds(ids).subscribe({
287
- next: (entities) => (this.entities = entities),
288
- error: (err) => this.updateState(ElderSelectComponentState.error(err)),
289
- });
290
- }
291
- findOrLoadEntitiesByIds(ids) {
292
- if (ids === null || ids.length == 0) {
293
- return of([]);
294
- }
295
- if (this.dataContext) {
296
- const existing = this.findInDataContext(ids);
297
- const missingIds = ids.filter((id) => !existing.has(id));
298
- const valueLoadRequest$ = missingIds.length > 0 ? this.loadEntitiesByIds(missingIds) : of(new Map());
299
- return valueLoadRequest$.pipe(map((loaded) => {
300
- loaded.forEach((v, k) => existing.set(k, v));
301
- return existing;
302
- }), map((allValuesMap) => Array.from(allValuesMap.values())) // TODO Sort?
303
- );
304
- }
305
- else {
306
- this.logger.warn('Failed to select value by Ids: ' + ids + ' - DataContext not available.');
307
- return EMPTY;
308
- }
309
- }
310
- loadEntitiesByIds(ids) {
311
- return this.dataSourceOrThrow()
312
- .findByIds(ids)
313
- .pipe(catchError((err) => {
314
- this.logger.error('Failed to load entities by ids: ' + ids, err);
315
- return throwError(err);
316
- }), map((values) => {
317
- this.logger.debug('Loaded entities by id:', values);
318
- const valueMap = new Map();
319
- values.forEach((v) => valueMap.set(this.getEntityId(v), v));
320
- return valueMap;
321
- }));
322
- }
323
- findInDataContext(ids) {
324
- const existingValues = new Map();
325
- if (ids?.length > 0) {
326
- const data = this.dataContext.snapshot.data;
327
- const requiredIds = new Set(ids);
328
- data
329
- .filter((d) => requiredIds.has(this.getEntityId(d)))
330
- .forEach((d) => existingValues.set(this.getEntityId(d), d));
331
- }
332
- return existingValues;
333
- }
334
- writeEntitiesSorted(entities) {
335
- const sorted = this.sortEntities(entities);
336
- this._entities$.next(sorted);
337
- return sorted;
338
- }
339
- sortEntities(entities) {
340
- if (entities && this.entitiesSorts && this.entitiesSorts.length > 0) {
341
- const sorted = SortUtil.sortData(entities, this.entitiesSorts);
342
- if (!SortUtil.equalsExactRefs(entities, sorted)) {
343
- // Only return a copy of the array if actually something changed
344
- return sorted;
345
- }
346
- }
347
- return entities;
348
- }
349
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderMultiSelectBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
350
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ElderMultiSelectBase, inputs: { entitiesSorts: "entitiesSorts", confirmRemoval: "confirmRemoval", entities: "entities", entityIds: "entityIds" }, outputs: { entityIdsChange: "entityIdsChange", entitiesChange: "entitiesChange", entityIdsUpdated: "entityIdsUpdated", entitiesUpdated: "entitiesUpdated" }, host: { properties: { "class": "this.hostClass", "class.mat-select-disabled": "this.disabledClass", "class.mat-select-invalid": "this.errorStateClass", "class.mat-select-required": "this.requiredClass", "class.mat-select-empty": "this.emptyClass" } }, usesInheritance: true, ngImport: i0 }); }
351
- }
352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderMultiSelectBase, decorators: [{
353
- type: Directive
354
- }], ctorParameters: () => [{ type: undefined }], propDecorators: { entitiesSorts: [{
355
- type: Input
356
- }], confirmRemoval: [{
357
- type: Input
358
- }], entityIdsChange: [{
359
- type: Output
360
- }], entitiesChange: [{
361
- type: Output
362
- }], entityIdsUpdated: [{
363
- type: Output
364
- }], entitiesUpdated: [{
365
- type: Output
366
- }], hostClass: [{
367
- type: HostBinding,
368
- args: ['class']
369
- }], disabledClass: [{
370
- type: HostBinding,
371
- args: ['class.mat-select-disabled']
372
- }], errorStateClass: [{
373
- type: HostBinding,
374
- args: ['class.mat-select-invalid']
375
- }], requiredClass: [{
376
- type: HostBinding,
377
- args: ['class.mat-select-required']
378
- }], emptyClass: [{
379
- type: HostBinding,
380
- args: ['class.mat-select-empty']
381
- }], entities: [{
382
- type: Input
383
- }], entityIds: [{
384
- type: Input
385
- }] } });
386
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktc2VsZWN0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9tdWx0aS9lbGRlci1tdWx0aS1zZWxlY3QtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFLM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBRXZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTs7QUFFL0M7Ozs7Ozs7O0dBUUc7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixvQkFDcEIsU0FBUSxlQUF1QztJQW1EL0M7Ozs7Z0ZBSTRFO0lBRTVFLFlBQXNCLFdBQW1CO1FBQ3ZDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQXZEcEI7Ozs7b0ZBSTRFO1FBRTNELFdBQU0sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFHdkQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFBO1FBRWhFOzs7O1dBSUc7UUFFSSxrQkFBYSxHQUFXLEVBQUUsQ0FBQTtRQUVqQzs7O1dBR0c7UUFFSSxtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQXNCWixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBV3pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRS9GLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXRGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3hDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7U0FDN0MsQ0FBQTtRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDbEQsQ0FBQTtRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUM5RSxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQ2xGLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDdkYsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFNBQWdCLEVBQUUsU0FBaUI7UUFDN0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDbEYsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFDM0UsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDbkIsQ0FBQTtJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFBMEIsU0FBUztRQUNqQyxPQUFPLHNDQUFzQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxJQUE4QyxhQUFhO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN0QixDQUFDO0lBRUQsSUFBNkMsZUFBZTtRQUMxRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztJQUVELElBQThDLGFBQWE7UUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxJQUEyQyxVQUFVO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDekIsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLFFBQW1CO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNwRixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLEdBQVU7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBTyxHQUFnQixDQUFDLENBQUE7WUFDakQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDeEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sS0FBSyxDQUFBO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sS0FBSyxDQUFBO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUscUJBQXFCLENBQUMsUUFBbUI7UUFDOUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFTSxjQUFjLENBQUMsV0FBc0I7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFFBQWlCLEVBQUUsV0FBcUI7UUFDakUsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFFBQW1CLEVBQUUsV0FBcUI7UUFDckUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQzlCO1lBQ0UsYUFBYSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQzlCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxXQUFXLEVBQUUsV0FBVztTQUN6QixFQUNELEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQ3BDLENBQUE7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQW1CO1FBQ3ZDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWlCO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFZO1FBQ3BDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjO2lCQUNoQixNQUFNLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO2lCQUMxRixTQUFTLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLHdGQUF3RixDQUN6RixDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsTUFBZTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ25DLE9BQWEsRUFBYSxDQUFBO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBYSxNQUFpQixDQUFBO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXpELFlBQVksQ0FBQyxDQUFXLEVBQUUsQ0FBVztRQUN0RCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUYsQ0FBQztJQUVTLG9CQUFvQixDQUFDLElBQTJCO1FBQ3hELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDZ0IsY0FBYyxDQUFDLEtBQWU7UUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxTQUFTLEdBQVMsS0FBZSxDQUFBO1lBQ3ZDLGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sd0RBQXdEO1lBQ3hELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7WUFDckMsTUFBTSxXQUFXLEdBQVMsS0FBbUIsQ0FBQTtZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix3REFBd0QsR0FBRyxXQUFXLEVBQUUsTUFBTSxFQUM5RSxLQUFLLENBQ04sQ0FBQTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxDQUFDLENBQUE7WUFDcEYsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFcEUsZ0JBQWdCLENBQUMsVUFBbUI7UUFDMUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxNQUFnQjtRQUMxQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBYTtRQUNyQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFhLEtBQWEsQ0FBQTtRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sTUFBTSxHQUFTLEtBQWlCLENBQUE7WUFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBbUI7UUFDMUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBd0I7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBVyxFQUFFLElBQVc7UUFDdkMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBVyxFQUFFLElBQVc7UUFDakQsT0FBTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFTyxhQUFhLENBQUMsU0FBb0IsRUFBRSxTQUFvQjtRQUM5RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFNBQW9CLEVBQUUsU0FBb0I7UUFDeEUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVU7UUFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLEdBQUcscUJBQXFCLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDN0YsSUFBSSxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUUsT0FBTSxDQUFDLDBCQUEwQjtRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDOUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2RSxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQUMsR0FBVTtRQUN4QyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDNUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDeEQsTUFBTSxpQkFBaUIsR0FDckIsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUU1RSxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQzVDLE9BQU8sUUFBUSxDQUFBO1lBQ2pCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7YUFDdkUsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEdBQUcsR0FBRyxHQUFHLCtCQUErQixDQUFDLENBQUE7WUFDM0YsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVU7UUFDbEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7YUFDNUIsU0FBUyxDQUFDLEdBQUcsQ0FBQzthQUNkLElBQUksQ0FDSCxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDaEUsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQTtZQUN4QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMzRCxPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVU7UUFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7UUFDOUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQTtZQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNoQyxJQUFJO2lCQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ25ELE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDL0QsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFBO0lBQ3ZCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFtQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzVCLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFtQjtRQUN0QyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsZ0VBQWdFO2dCQUNoRSxPQUFPLE1BQU0sQ0FBQTtZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzsrR0EvYW1CLG9CQUFvQjttR0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUZ6QyxTQUFTOzJFQXVCRCxhQUFhO3NCQURuQixLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSVUsZUFBZTtzQkFEOUIsTUFBTTtnQkFJUyxjQUFjO3NCQUQ3QixNQUFNO2dCQVFTLGdCQUFnQjtzQkFEL0IsTUFBTTtnQkFRUyxlQUFlO3NCQUQ5QixNQUFNO2dCQW1EbUIsU0FBUztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPO2dCQUkwQixhQUFhO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFJSyxlQUFlO3NCQUEzRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFJTyxhQUFhO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFJRyxVQUFVO3NCQUFwRCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFtQjFCLFFBQVE7c0JBRGxCLEtBQUs7Z0JBWUssU0FBUztzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEVsZGVyU2VsZWN0QmFzZSwgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4uL2VsZGVyLXNlbGVjdC1iYXNlJ1xuaW1wb3J0IHsgSURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBza2lwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCwgdGltZW91dCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgU2V0cyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9zZXRzJ1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IElFbGRlck11bHRpRW50aXR5VmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1tdWx0aS1lbnRpdHktdmFsdWUtYWNjZXNzb3InXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2RhdGEvc29ydCdcbmltcG9ydCB7IFNvcnRVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxzL3NvcnQtdXRpbCdcbmltcG9ydCB7IEVsZGVyRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZWxkZXItZGlhbG9nLnNlcnZpY2UnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFycmF5cyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hcnJheXMnXG5cbi8qKlxuICogQmFzZSBjb21wb25lbnQgaW1wbGVtZW50YXRpb24gb2YgZWxkZXItbXVsdGktc2VsZWN0LlxuICpcbiAqIE11bHRpIFNlbGVjdCBoYXMgdGhlIGZvbGxvd2luZyBhYnN0cmFjdCBjb25jZXB0OlxuICpcbiAqIC0gU3VnZ2VzdGlvbi1Nb2RlbDogQSBEYXRhU291cmNlIGFuZCBkZXJpdmVkIERhdGFDb250ZXh0IGZvciB0aGUgKGF1dG8tY29tcGxldGUpIHN1Z2dlc3Rpb25zLlxuICogLSBUaGUgYmFja2luZyBWYWx1ZSBpcyBhIGxpc3Qgb2YgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgZW50aXRpZXMuIFRbXVxuICpcbiAqL1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbGRlck11bHRpU2VsZWN0QmFzZTxUSWQsIFRFbnRpdHksIFRWYWx1ZT5cbiAgZXh0ZW5kcyBFbGRlclNlbGVjdEJhc2U8VElkLCBURW50aXR5LCBUVmFsdWVbXT5cbiAgaW1wbGVtZW50cyBJRWxkZXJNdWx0aUVudGl0eVZhbHVlQWNjZXNzb3I8VEVudGl0eSwgVElkLCBUVmFsdWU+XG57XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0eUlkcyQ6IE9ic2VydmFibGU8VElkW10+XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0aWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VEVudGl0eVtdPihbXSlcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdGhlIGVudGl0aWVzIHNob3VsZCBiZSBzb3J0ZWQgbG9jYWxseS5cbiAgICogVGhpcyBhZmZlY3RzIGhvdyBlbnRpdGllcyBhcmUgZGlzcGxheWVkIHdoZW4gbW9yZSB0aGFuXG4gICAqIG9uZSBpcyBzZWxlY3RlZCwgc3VjaCBhcyBpbiBhIGNoaXAgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRpdGllc1NvcnRzOiBTb3J0W10gPSBbXVxuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBiZWZvcmUgcmVtb3Zpbmcgc2VsZWN0ZWQgZW50aXRpZXNcbiAgICogdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjb25maXJtLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1SZW1vdmFsID0gZmFsc2VcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0eUlkc0NoYW5nZTogT2JzZXJ2YWJsZTxUSWRbXT5cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzQ2hhbmdlOiBPYnNlcnZhYmxlPFRFbnRpdHlbXT5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBlbnRpdHktaWQgY2hhbmdlLCBidXQgZW1pdHMgb25seSB3aGVuIHRoZSB1c2VyXG4gICAqIGhhcyB1cGRhdGVkIHRoZSB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5SWRzVXBkYXRlZDogT2JzZXJ2YWJsZTxUSWRbXT5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBlbnRpdHkgY2hhbmdlLCBidXQgZW1pdHMgb25seSB3aGVuIHRoZSB1c2VyXG4gICAqIGhhcyB1cGRhdGVkIHRoZSB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXRpZXNVcGRhdGVkOiBPYnNlcnZhYmxlPFRFbnRpdHlbXT5cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRWxkZXJEaWFsb2dTZXJ2aWNlKVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb250cm9sVHlwZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29udHJvbFR5cGUpXG5cbiAgICB0aGlzLmVudGl0eUlkc0NoYW5nZSA9IHRoaXMudmFsdWVDaGFuZ2UucGlwZShtYXAoKHZhbHVlcykgPT4gdGhpcy5lbnRpdHlJZHNGcm9tVmFsdWVzKHZhbHVlcykpKVxuXG4gICAgdGhpcy5fZW50aXR5SWRzJCA9IHRoaXMudmFsdWUkLnBpcGUobWFwKCh2YWx1ZXMpID0+IHRoaXMuZW50aXR5SWRzRnJvbVZhbHVlcyh2YWx1ZXMpKSlcblxuICAgIHRoaXMuZW50aXRpZXNDaGFuZ2UgPSB0aGlzLl9lbnRpdGllcyQucGlwZShcbiAgICAgIHNraXAoMSkgLy8gU2tpcCB0aGUgaW5pdGlhbCBvciBjdXJyZW50IHZhbHVlXG4gICAgKVxuXG4gICAgdGhpcy5lbnRpdHlJZHNVcGRhdGVkID0gdGhpcy52YWx1ZVVwZGF0ZWQucGlwZShcbiAgICAgIG1hcCgodmFsdWVzKSA9PiB0aGlzLmVudGl0eUlkc0Zyb21WYWx1ZXModmFsdWVzKSlcbiAgICApXG5cbiAgICB0aGlzLmVudGl0aWVzVXBkYXRlZCA9IHRoaXMuZW50aXR5SWRzVXBkYXRlZC5waXBlKFxuICAgICAgdGFwKChlbnRpdHlJZHMpID0+IHRoaXMubG9nZ2VyLmRlYnVnKCdBd2FpdGluZyBlbnRpdGllcyB3aXRoIGlkcycsIGVudGl0eUlkcykpLFxuICAgICAgc3dpdGNoTWFwKChlbnRpdHlJZHMpID0+IHRoaXMuYXdhaXRFbnRpdGllc1dpdGhJZChlbnRpdHlJZHMsIHRoaXMudGltZW91dEFmdGVyTXMpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBhd2FpdEVudGl0aWVzV2l0aElkIC0+IHRpbWVkIG91dCBhZnRlcjogJHt0aGlzLnRpbWVvdXRBZnRlck1zfWAsIGVycilcbiAgICAgICAgcmV0dXJuIEVNUFRZXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXdhaXRFbnRpdGllc1dpdGhJZChlbnRpdHlJZHM6IFRJZFtdLCB0aW1lb3V0TXM6IG51bWJlcik6IE9ic2VydmFibGU8VEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0aWVzJC5waXBlKFxuICAgICAgdGFwKChlbnRpdGllcykgPT4gdGhpcy5sb2dnZXIuZGVidWcoJ0dvdCBlbnRpdGllcyBmb3IgaWRzJyArIGVudGl0eUlkcywgZW50aXRpZXMpKSxcbiAgICAgIGZpbHRlcigoZW50aXRpZXMpID0+IHRoaXMuZXF1YWxJZHModGhpcy5nZXRFbnRpdHlJZHMoZW50aXRpZXMpLCBlbnRpdHlJZHMpKSxcbiAgICAgIHRha2UoMSksXG4gICAgICB0aW1lb3V0KHRpbWVvdXRNcylcbiAgICApXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSG9zdCBCaW5kaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZWxkZXItc2VsZWN0LWJhc2UgZWxkZXItbXVsdGktc2VsZWN0J1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtc2VsZWN0LWRpc2FibGVkJykgZ2V0IGRpc2FibGVkQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXNlbGVjdC1pbnZhbGlkJykgZ2V0IGVycm9yU3RhdGVDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclN0YXRlXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1zZWxlY3QtcmVxdWlyZWQnKSBnZXQgcmVxdWlyZWRDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZFxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtc2VsZWN0LWVtcHR5JykgZ2V0IGVtcHR5Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW1wdHlcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZW50aXRpZXMkKCk6IE9ic2VydmFibGU8VEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0aWVzJC5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgcHVibGljIGdldCBlbnRpdHlJZHMkKCk6IE9ic2VydmFibGU8VElkW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5SWRzJFxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlbnRpdGllcyhlbnRpdGllczogVEVudGl0eVtdKSB7XG4gICAgaWYgKCF0aGlzLmVxdWFsRW50aXRpZXNFeGFjdE9yZGVyKHRoaXMuZW50aXRpZXMsIGVudGl0aWVzKSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwodGhpcy5lbnRpdGllc1RvVmFsdWVzKHRoaXMud3JpdGVFbnRpdGllc1NvcnRlZChlbnRpdGllcykpKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50aXRpZXMoKTogVEVudGl0eVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXRpZXMkLmdldFZhbHVlKClcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5SWRzKGlkczogVElkW10pIHtcbiAgICBpZiAoIXRoaXMuZXF1YWxJZHNFeGFjdE9yZGVyKHRoaXMuZW50aXR5SWRzLCBpZHMpKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwoKDxhbnk+aWRzKSBhcyBUVmFsdWVbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RW50aXRpZXNCeUlkcyhpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBlbnRpdHlJZHMoKTogVElkW10ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eUlkc0Zyb21WYWx1ZXModGhpcy52YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcHRpb25EaXNhYmxlZEludGVybmFsRm4oKTogKG9wdGlvbjogVEVudGl0eSkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChvcHRpb246IFRFbnRpdHkpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWRGbikge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wdGlvbkRpc2FibGVkRm4ob3B0aW9uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc09wdGlvbkhpZGRlbkludGVybmFsRm4oKTogKG9wdGlvbjogVEVudGl0eSkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChvcHRpb246IFRFbnRpdHkpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQWxyZWFkeVByZXNlbnQob3B0aW9uKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNPcHRpb25IaWRkZW5Gbikge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wdGlvbkhpZGRlbkZuKG9wdGlvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZUJ5RW50aXRpZXMoZW50aXRpZXM6IFRFbnRpdHlbXSk6IHZvaWQge1xuICAgIGVudGl0aWVzID0gdGhpcy53cml0ZUVudGl0aWVzU29ydGVkKGVudGl0aWVzKVxuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5lbnRpdGllc1RvVmFsdWVzKGVudGl0aWVzKSlcbiAgfVxuXG4gIHB1YmxpYyBhcHBlbmRFbnRpdGllcyhuZXdFbnRpdGllczogVEVudGl0eVtdKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZW50aXRpZXMgPyB0aGlzLmVudGl0aWVzIDogW11cbiAgICB0aGlzLnVwZGF0ZVZhbHVlQnlFbnRpdGllcyhbLi4uY3VycmVudCwgLi4ubmV3RW50aXRpZXNdKVxuICB9XG5cbiAgcHVibGljIGFwcGVuZEVudGl0eShuZXdFbnRpdHk6IGFueSkge1xuICAgIHRoaXMuYXBwZW5kRW50aXRpZXMoW25ld0VudGl0eV0pXG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdFJlbW92ZUVudGl0eSh0b1JlbW92ZTogVEVudGl0eSwgc2tpcENvbmZpcm0/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRvUmVtb3ZlICE9PSB1bmRlZmluZWQgJiYgdG9SZW1vdmUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVxdWVzdFJlbW92ZUVudGl0aWVzKFt0b1JlbW92ZV0sIHNraXBDb25maXJtKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0UmVtb3ZlRW50aXRpZXModG9SZW1vdmU6IFRFbnRpdHlbXSwgc2tpcENvbmZpcm0/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm1EZWxldGUoXG4gICAgICB7XG4gICAgICAgIGRlbGV0aW9uQ291bnQ6IHRvUmVtb3ZlLmxlbmd0aCxcbiAgICAgICAgY29uZmlybVJlbW92YWw6IHRoaXMuY29uZmlybVJlbW92YWwsXG4gICAgICAgIHNraXBDb25maXJtOiBza2lwQ29uZmlybSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLnJlbW92ZUVudGl0aWVzKHRvUmVtb3ZlKVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVFbnRpdGllcyh0b1JlbW92ZTogVEVudGl0eVtdKTogdm9pZCB7XG4gICAgdG9SZW1vdmUuZm9yRWFjaCgoZSkgPT4gdGhpcy5yZW1vdmVFbnRpdHkoZSkpXG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRW50aXR5KHRvUmVtb3ZlOiBURW50aXR5KTogdm9pZCB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5lbnRpdGllcy5maWx0ZXIoKGwpID0+ICF0aGlzLmlzRXF1YWwobCwgdG9SZW1vdmUpKVxuICAgIHRoaXMudXBkYXRlVmFsdWVCeUVudGl0aWVzKHJlbWFpbmluZylcbiAgfVxuXG4gIHB1YmxpYyBvcGVuU2VsZWN0aW9uUG9wdXAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uUG9wdXApIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uUG9wdXBcbiAgICAgICAgLmNob29zZSgoZTogVEVudGl0eSkgPT4gdGhpcy5nZXRFbnRpdHlJZChlKSwgdGhpcy5lbnRpdGllcywgdGhpcy5maWx0ZXJzLCB0aGlzLnNvcnRzLCB0cnVlKVxuICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb246IFRFbnRpdHlbXSkgPT4gdGhpcy51cGRhdGVWYWx1ZUJ5RW50aXRpZXMoc2VsZWN0aW9uKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0NhbnQgb3BlbiBzZWxlY3Rpb24gYnJvd3NlciBwb3B1cCwgc2luY2UgW1NlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmVdIHdhcyBub3QgZm91bmQhJ1xuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRpdHlUb1ZhbHVlKGVudGl0eTogVEVudGl0eSk6IFRWYWx1ZSB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0lkKSB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0RW50aXR5SWQoZW50aXR5KVxuICAgICAgcmV0dXJuICg8YW55PmlkKSBhcyBUVmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICg8YW55PmVudGl0eSkgYXMgVFZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEludGVybmFsIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlc0VxdWFscyhhOiBUVmFsdWVbXSwgYjogVFZhbHVlW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcXVhbElkc0V4YWN0T3JkZXIodGhpcy5lbnRpdHlJZHNGcm9tVmFsdWVzKGEpLCB0aGlzLmVudGl0eUlkc0Zyb21WYWx1ZXMoYikpXG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXRhQ29udGV4dENoYW5nZWQoZGF0YTogSURhdGFDb250ZXh0PFRFbnRpdHk+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0lkKSB7XG4gICAgICB0aGlzLnNlbGVjdEVudGl0aWVzQnlJZHModGhpcy5lbnRpdHlJZHMpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYWZ0ZXIgYSB2YWx1ZSBoYXMgYmVlbiB3cml0dGVuIHRvIHRoaXMgY29udHJvbC5cbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3cml0ZVRvQ29udHJvbCh2YWx1ZTogVFZhbHVlW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIGNvbnN0IGVudGl0eUlkcyA9ICg8YW55PnZhbHVlKSBhcyBUSWRbXVxuICAgICAgLy8gVmFsdWUgd2FzIHdyaXR0ZW4gYXMgZW50aXR5IGlkcywgZW5zdXJlIHdlIHNlbGVjdCBlbnRpdHkgYnkgaWRcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd3cml0ZVRvQ29udHJvbDogdmFsdWUgd2FzIHdyaXR0ZW4gYXMgaWRzOiAnICsgZW50aXR5SWRzLCB2YWx1ZSlcbiAgICAgIHRoaXMuc2VsZWN0RW50aXRpZXNCeUlkcyhlbnRpdHlJZHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFZhbHVlIHdhcyB3cml0dGVuIGFzIGVudGl0eSwgZW5zdXJlIGVudGl0eSBpcyB1cGRhdGVkXG4gICAgICBjb25zdCBjdXJyZW50RW50aXRpZXMgPSB0aGlzLmVudGl0aWVzXG4gICAgICBjb25zdCBuZXdFbnRpdGllcyA9ICg8YW55PnZhbHVlKSBhcyBURW50aXR5W11cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAnd3JpdGVUb0NvbnRyb2w6IHZhbHVlIHdhcyB3cml0dGVuIGFzIGVudGl0aWVzIChzaXplKTogJyArIG5ld0VudGl0aWVzPy5sZW5ndGgsXG4gICAgICAgIHZhbHVlXG4gICAgICApXG4gICAgICBpZiAoIXRoaXMuZXF1YWxFbnRpdGllcyhjdXJyZW50RW50aXRpZXMsIG5ld0VudGl0aWVzKSkge1xuICAgICAgICB0aGlzLndyaXRlRW50aXRpZXNTb3J0ZWQobmV3RW50aXRpZXMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdJZ25vcmVkIHdyaXR0ZW4gZW50aXRpZXMgYXMgdGhleSBhcmUgYWxyZWFkeSBzZXQgdG8gZW50aXRpZXMkIScpXG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyLndyaXRlVG9Db250cm9sKHZhbHVlKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBpc0FscmVhZHlQcmVzZW50KHF1ZXJ5VmFsdWU6IFRFbnRpdHkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5lbnRpdGllcykge1xuICAgICAgcmV0dXJuIHRoaXMuZW50aXRpZXMuc29tZSgodikgPT4gdGhpcy5pc0VxdWFsKHYsIHF1ZXJ5VmFsdWUpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVudGl0eUlkc0Zyb21WYWx1ZXModmFsdWVzOiBUVmFsdWVbXSk6IFRJZFtdIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlcykge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHYpID0+IHRoaXMuZW50aXR5SWRGcm9tVmFsdWUodikpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBwcml2YXRlIGVudGl0eUlkRnJvbVZhbHVlKHZhbHVlOiBUVmFsdWUpOiBUSWQge1xuICAgIGlmICh0aGlzLnZhbHVlQXNJZCkge1xuICAgICAgcmV0dXJuICg8YW55PnZhbHVlKSBhcyBUSWRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW50aXR5ID0gKDxhbnk+dmFsdWUpIGFzIFRFbnRpdHlcbiAgICAgIHJldHVybiB0aGlzLmdldEVudGl0eUlkKGVudGl0eSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVudGl0aWVzVG9WYWx1ZXMoZW50aXRpZXM6IFRFbnRpdHlbXSk6IFRWYWx1ZVtdIHwgbnVsbCB7XG4gICAgaWYgKGVudGl0aWVzKSB7XG4gICAgICByZXR1cm4gZW50aXRpZXMubWFwKChlKSA9PiB0aGlzLmVudGl0eVRvVmFsdWUoZSkpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBwcml2YXRlIGdldEVudGl0eUlkcyh2YWx1ZXM6IFRFbnRpdHlbXSB8IG51bGwpOiBUSWRbXSB7XG4gICAgaWYgKHZhbHVlcykge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHYpID0+IHRoaXMuZ2V0RW50aXR5SWQodikpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBwcml2YXRlIGVxdWFsSWRzKGlkc0E6IFRJZFtdLCBpZHNCOiBUSWRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZXRzLmVxdWFsQ29udGVudChpZHNBLCBpZHNCKVxuICB9XG5cbiAgcHJpdmF0ZSBlcXVhbElkc0V4YWN0T3JkZXIoaWRzQTogVElkW10sIGlkc0I6IFRJZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5cy5lcXVhbENvbnRlbnRBbmRPcmRlcihpZHNBLCBpZHNCKVxuICB9XG5cbiAgcHJpdmF0ZSBlcXVhbEVudGl0aWVzKGVudGl0aWVzQTogVEVudGl0eVtdLCBlbnRpdGllc0I6IFRFbnRpdHlbXSkge1xuICAgIHJldHVybiB0aGlzLmVxdWFsSWRzKHRoaXMuZ2V0RW50aXR5SWRzKGVudGl0aWVzQSksIHRoaXMuZ2V0RW50aXR5SWRzKGVudGl0aWVzQikpXG4gIH1cblxuICBwcml2YXRlIGVxdWFsRW50aXRpZXNFeGFjdE9yZGVyKGVudGl0aWVzQTogVEVudGl0eVtdLCBlbnRpdGllc0I6IFRFbnRpdHlbXSkge1xuICAgIHJldHVybiB0aGlzLmVxdWFsSWRzRXhhY3RPcmRlcih0aGlzLmdldEVudGl0eUlkcyhlbnRpdGllc0EpLCB0aGlzLmdldEVudGl0eUlkcyhlbnRpdGllc0IpKVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RFbnRpdGllc0J5SWRzKGlkczogVElkW10pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RW50aXRpZXMgPSB0aGlzLmVudGl0aWVzXG4gICAgdGhpcy5sb2dnZXIuaW5mbygnc2VsZWN0RW50aXRpZXNCeUlkczogaWRzOiAnICsgaWRzICsgJywgY3VycmVudCBlbnRpdGllczonLCBjdXJyZW50RW50aXRpZXMpXG4gICAgaWYgKGN1cnJlbnRFbnRpdGllcyAmJiB0aGlzLmVxdWFsSWRzKHRoaXMuZ2V0RW50aXR5SWRzKGN1cnJlbnRFbnRpdGllcyksIGlkcykpIHtcbiAgICAgIHJldHVybiAvLyBFbnRpdGllcyBhbHJlYWR5IGxvYWRlZFxuICAgIH1cblxuICAgIHRoaXMuZmluZE9yTG9hZEVudGl0aWVzQnlJZHMoaWRzKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGVudGl0aWVzKSA9PiAodGhpcy5lbnRpdGllcyA9IGVudGl0aWVzKSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB0aGlzLnVwZGF0ZVN0YXRlKEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuZXJyb3IoZXJyKSksXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9yTG9hZEVudGl0aWVzQnlJZHMoaWRzOiBUSWRbXSk6IE9ic2VydmFibGU8VEVudGl0eVtdPiB7XG4gICAgaWYgKGlkcyA9PT0gbnVsbCB8fCBpZHMubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maW5kSW5EYXRhQ29udGV4dChpZHMpXG4gICAgICBjb25zdCBtaXNzaW5nSWRzID0gaWRzLmZpbHRlcigoaWQpID0+ICFleGlzdGluZy5oYXMoaWQpKVxuICAgICAgY29uc3QgdmFsdWVMb2FkUmVxdWVzdCQgPVxuICAgICAgICBtaXNzaW5nSWRzLmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRFbnRpdGllc0J5SWRzKG1pc3NpbmdJZHMpIDogb2YobmV3IE1hcCgpKVxuXG4gICAgICByZXR1cm4gdmFsdWVMb2FkUmVxdWVzdCQucGlwZShcbiAgICAgICAgbWFwKChsb2FkZWQpID0+IHtcbiAgICAgICAgICBsb2FkZWQuZm9yRWFjaCgodiwgaykgPT4gZXhpc3Rpbmcuc2V0KGssIHYpKVxuICAgICAgICAgIHJldHVybiBleGlzdGluZ1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKChhbGxWYWx1ZXNNYXApID0+IEFycmF5LmZyb20oYWxsVmFsdWVzTWFwLnZhbHVlcygpKSkgLy8gVE9ETyBTb3J0P1xuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gc2VsZWN0IHZhbHVlIGJ5IElkczogJyArIGlkcyArICcgLSBEYXRhQ29udGV4dCBub3QgYXZhaWxhYmxlLicpXG4gICAgICByZXR1cm4gRU1QVFlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRFbnRpdGllc0J5SWRzKGlkczogVElkW10pOiBPYnNlcnZhYmxlPE1hcDxUSWQsIFRFbnRpdHk+PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZU9yVGhyb3coKVxuICAgICAgLmZpbmRCeUlkcyhpZHMpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGVudGl0aWVzIGJ5IGlkczogJyArIGlkcywgZXJyKVxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycilcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgodmFsdWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xvYWRlZCBlbnRpdGllcyBieSBpZDonLCB2YWx1ZXMpXG4gICAgICAgICAgY29uc3QgdmFsdWVNYXAgPSBuZXcgTWFwPFRJZCwgVEVudGl0eT4oKVxuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB2YWx1ZU1hcC5zZXQodGhpcy5nZXRFbnRpdHlJZCh2KSwgdikpXG4gICAgICAgICAgcmV0dXJuIHZhbHVlTWFwXG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBwcml2YXRlIGZpbmRJbkRhdGFDb250ZXh0KGlkczogVElkW10pOiBNYXA8VElkLCBURW50aXR5PiB7XG4gICAgY29uc3QgZXhpc3RpbmdWYWx1ZXMgPSBuZXcgTWFwPFRJZCwgVEVudGl0eT4oKVxuICAgIGlmIChpZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGFDb250ZXh0LnNuYXBzaG90LmRhdGFcbiAgICAgIGNvbnN0IHJlcXVpcmVkSWRzID0gbmV3IFNldChpZHMpXG4gICAgICBkYXRhXG4gICAgICAgIC5maWx0ZXIoKGQpID0+IHJlcXVpcmVkSWRzLmhhcyh0aGlzLmdldEVudGl0eUlkKGQpKSlcbiAgICAgICAgLmZvckVhY2goKGQpID0+IGV4aXN0aW5nVmFsdWVzLnNldCh0aGlzLmdldEVudGl0eUlkKGQpLCBkKSlcbiAgICB9XG4gICAgcmV0dXJuIGV4aXN0aW5nVmFsdWVzXG4gIH1cblxuICBwcml2YXRlIHdyaXRlRW50aXRpZXNTb3J0ZWQoZW50aXRpZXM6IFRFbnRpdHlbXSk6IFRFbnRpdHlbXSB7XG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5zb3J0RW50aXRpZXMoZW50aXRpZXMpXG4gICAgdGhpcy5fZW50aXRpZXMkLm5leHQoc29ydGVkKVxuICAgIHJldHVybiBzb3J0ZWRcbiAgfVxuXG4gIHByaXZhdGUgc29ydEVudGl0aWVzKGVudGl0aWVzOiBURW50aXR5W10pOiBURW50aXR5W10ge1xuICAgIGlmIChlbnRpdGllcyAmJiB0aGlzLmVudGl0aWVzU29ydHMgJiYgdGhpcy5lbnRpdGllc1NvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNvcnRlZCA9IFNvcnRVdGlsLnNvcnREYXRhKGVudGl0aWVzLCB0aGlzLmVudGl0aWVzU29ydHMpXG4gICAgICBpZiAoIVNvcnRVdGlsLmVxdWFsc0V4YWN0UmVmcyhlbnRpdGllcywgc29ydGVkKSkge1xuICAgICAgICAvLyBPbmx5IHJldHVybiBhIGNvcHkgb2YgdGhlIGFycmF5IGlmIGFjdHVhbGx5IHNvbWV0aGluZyBjaGFuZ2VkXG4gICAgICAgIHJldHVybiBzb3J0ZWRcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudGl0aWVzXG4gIH1cbn1cbiJdfQ==
@@ -1,87 +0,0 @@
1
- export class ChipOptionModel {
2
- constructor(id, value, displayText, colorSpec, locked, avatarSpec, trailingSpec, selected) {
3
- this.id = id;
4
- this.value = value;
5
- this.displayText = displayText;
6
- this.colorSpec = colorSpec;
7
- this.locked = locked;
8
- this.avatarSpec = avatarSpec;
9
- this.trailingSpec = trailingSpec;
10
- this.selected = selected;
11
- }
12
- }
13
- export default class ChipOptionsProvider {
14
- /***************************************************************************
15
- * *
16
- * Constructor *
17
- * *
18
- **************************************************************************/
19
- constructor(dataSource, available, chipSpecFn) {
20
- this.dataSource = dataSource;
21
- this.available = available;
22
- this.chipSpecFn = chipSpecFn;
23
- }
24
- /***************************************************************************
25
- * *
26
- * Public API *
27
- * *
28
- **************************************************************************/
29
- buildChipModelsOrFallback(entities, entityIds, options) {
30
- if (options.context.state.error) {
31
- return this.buildChipFallbackModels(entityIds, options);
32
- }
33
- return this.buildChipModels(this.available, entities, options);
34
- }
35
- /***************************************************************************
36
- * *
37
- * Private Methods *
38
- * *
39
- **************************************************************************/
40
- buildChipFallbackModel(entityId, options) {
41
- options.context.displayPropertyResolver = (x) => x.id;
42
- return this.buildChipBySpec({ id: entityId }, options, {
43
- colorSpec: {
44
- themeColor: 'warn',
45
- },
46
- avatarSpec: {
47
- hide: false,
48
- large: false,
49
- },
50
- }, false // TODO
51
- );
52
- }
53
- buildChipFallbackModels(entityIds, options) {
54
- return entityIds.map((id) => this.buildChipFallbackModel(id, options));
55
- }
56
- buildChipModels(availables, entities, options) {
57
- if (availables) {
58
- const selectedIds = new Set(entities.map((e) => this.getEntityId(e)));
59
- return availables.map((available) => this.buildChipBySpec(available, options, this.chipSpecFn(available), selectedIds.has(this.getEntityId(available))));
60
- }
61
- else {
62
- return [];
63
- }
64
- }
65
- buildChipBySpec(e, options, chipSpec, selected) {
66
- let locked = false;
67
- if (options.isLocked) {
68
- locked = true;
69
- }
70
- else {
71
- locked = chipSpec.locked;
72
- }
73
- return new ChipOptionModel(this.getEntityId(e), e, this.resolveDisplayText(e, options), {
74
- themeColor: selected ? 'accent' : undefined,
75
- }, locked, chipSpec.avatarSpec, chipSpec.trailingSpec, selected);
76
- }
77
- getEntityId(e) {
78
- return this.dataSource.getId(e);
79
- }
80
- resolveDisplayText(entity, options) {
81
- const entityLabelMap = options.entityLabelMap;
82
- return entityLabelMap.has(entity)
83
- ? entityLabelMap.get(entity)
84
- : options.context.displayPropertyResolver(entity);
85
- }
86
- }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1vcHRpb25zLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QvbXVsdGkvZWxkZXItbXVsdGktc2VsZWN0LWNoaXAtb3B0aW9ucy9jaGlwLW9wdGlvbnMtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDa0IsRUFBTyxFQUNQLEtBQVEsRUFDUixXQUFtQixFQUNuQixTQUF3QixFQUN4QixNQUFlLEVBQ2YsVUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsUUFBaUI7UUFQakIsT0FBRSxHQUFGLEVBQUUsQ0FBSztRQUNQLFVBQUssR0FBTCxLQUFLLENBQUc7UUFDUixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBQ2hDLENBQUM7Q0FDTDtBQWVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW1CO0lBQ3RDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLFVBQWdDLEVBQ2hDLFNBQW9CLEVBQ3BCLFVBQWdEO1FBRmhELGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBc0M7SUFDdkQsQ0FBQztJQUVKOzs7O2dGQUk0RTtJQUVyRSx5QkFBeUIsQ0FDOUIsUUFBbUIsRUFDbkIsU0FBZ0IsRUFDaEIsT0FBeUI7UUFFekIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxPQUFPLElB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O1lBQy9CLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3RPcHRpb25DaGlwU3BlYyB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbi1jaGlwLXNwZWMnXG5pbXBvcnQgeyBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLCBUZXh0UmVzb2x2ZXJGbiB9IGZyb20gJy4uLy4uL2VsZGVyLXNlbGVjdC1iYXNlJ1xuaW1wb3J0IHtcbiAgQ2hpcEF2YXRhclNwZWMsXG4gIENoaXBDb2xvclNwZWMsXG4gIFRyYWlsaW5nU3BlYyxcbn0gZnJvbSAnLi4vZWxkZXItbXVsdGktc2VsZWN0LWNoaXBzL3NlbGVjdC1jaGlwLXNwZWMnXG5pbXBvcnQgeyBJRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnXG5cbmV4cG9ydCBjbGFzcyBDaGlwT3B0aW9uTW9kZWw8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IGFueSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IFQsXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUZXh0OiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbG9yU3BlYzogQ2hpcENvbG9yU3BlYyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9ja2VkOiBib29sZWFuLFxuICAgIHB1YmxpYyByZWFkb25seSBhdmF0YXJTcGVjOiBDaGlwQXZhdGFyU3BlYyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhaWxpbmdTcGVjOiBUcmFpbGluZ1NwZWMsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkOiBib29sZWFuXG4gICkge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29udGV4dCB7XG4gIHN0YXRlOiBFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlXG4gIGRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyOiBUZXh0UmVzb2x2ZXJGblxuICByZWFkb25seTogYm9vbGVhblxuICBkaXNhYmxlZDogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkQ2hpcE9wdGlvbnMge1xuICBjb250ZXh0OiBNdWx0aVNlbGVjdENoaXBPcHRpb25zQ29udGV4dFxuICBpc0xvY2tlZDogYm9vbGVhblxuICBlbnRpdHlMYWJlbE1hcD86IE1hcDxhbnksIHN0cmluZz5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hpcE9wdGlvbnNQcm92aWRlcjxUSWQsIFRFbnRpdHk+IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlOiBJRGF0YVNvdXJjZTxURW50aXR5PixcbiAgICBwcml2YXRlIGF2YWlsYWJsZTogVEVudGl0eVtdLFxuICAgIHByaXZhdGUgY2hpcFNwZWNGbjogKGU6IFRFbnRpdHkpID0+IFNlbGVjdE9wdGlvbkNoaXBTcGVjXG4gICkge31cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgYnVpbGRDaGlwTW9kZWxzT3JGYWxsYmFjayhcbiAgICBlbnRpdGllczogVEVudGl0eVtdLFxuICAgIGVudGl0eUlkczogVElkW10sXG4gICAgb3B0aW9uczogQnVpbGRDaGlwT3B0aW9uc1xuICApOiBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT5bXSB7XG4gICAgaWYgKG9wdGlvbnMuY29udGV4dC5zdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDaGlwRmFsbGJhY2tNb2RlbHMoZW50aXR5SWRzLCBvcHRpb25zKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5idWlsZENoaXBNb2RlbHModGhpcy5hdmFpbGFibGUsIGVudGl0aWVzLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBidWlsZENoaXBGYWxsYmFja01vZGVsKFxuICAgIGVudGl0eUlkOiBUSWQsXG4gICAgb3B0aW9uczogQnVpbGRDaGlwT3B0aW9uc1xuICApOiBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT4ge1xuICAgIG9wdGlvbnMuY29udGV4dC5kaXNwbGF5UHJvcGVydHlSZXNvbHZlciA9ICh4KSA9PiB4LmlkXG4gICAgcmV0dXJuIHRoaXMuYnVpbGRDaGlwQnlTcGVjKFxuICAgICAgPGFueT57IGlkOiBlbnRpdHlJZCB9LFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgY29sb3JTcGVjOiB7XG4gICAgICAgICAgdGhlbWVDb2xvcjogJ3dhcm4nLFxuICAgICAgICB9LFxuICAgICAgICBhdmF0YXJTcGVjOiB7XG4gICAgICAgICAgaGlkZTogZmFsc2UsXG4gICAgICAgICAgbGFyZ2U6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGZhbHNlIC8vIFRPRE9cbiAgICApXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hpcEZhbGxiYWNrTW9kZWxzKFxuICAgIGVudGl0eUlkczogVElkW10sXG4gICAgb3B0aW9uczogQnVpbGRDaGlwT3B0aW9uc1xuICApOiBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT5bXSB7XG4gICAgcmV0dXJuIGVudGl0eUlkcy5tYXAoKGlkKSA9PiB0aGlzLmJ1aWxkQ2hpcEZhbGxiYWNrTW9kZWwoaWQsIG9wdGlvbnMpKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoaXBNb2RlbHMoXG4gICAgYXZhaWxhYmxlczogVEVudGl0eVtdLFxuICAgIGVudGl0aWVzOiBURW50aXR5W10sXG4gICAgb3B0aW9uczogQnVpbGRDaGlwT3B0aW9uc1xuICApOiBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT5bXSB7XG4gICAgaWYgKGF2YWlsYWJsZXMpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gbmV3IFNldDxUSWQ+KGVudGl0aWVzLm1hcCgoZSkgPT4gdGhpcy5nZXRFbnRpdHlJZChlKSkpXG5cbiAgICAgIHJldHVybiBhdmFpbGFibGVzLm1hcCgoYXZhaWxhYmxlKSA9PlxuICAgICAgICB0aGlzLmJ1aWxkQ2hpcEJ5U3BlYyhcbiAgICAgICAgICBhdmFpbGFibGUsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0aGlzLmNoaXBTcGVjRm4oYXZhaWxhYmxlKSxcbiAgICAgICAgICBzZWxlY3RlZElkcy5oYXModGhpcy5nZXRFbnRpdHlJZChhdmFpbGFibGUpKVxuICAgICAgICApXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8Q2hpcE9wdGlvbk1vZGVsPFRFbnRpdHk+W10+W11cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2hpcEJ5U3BlYyhcbiAgICBlOiBURW50aXR5LFxuICAgIG9wdGlvbnM6IEJ1aWxkQ2hpcE9wdGlvbnMsXG4gICAgY2hpcFNwZWM6IFNlbGVjdE9wdGlvbkNoaXBTcGVjLFxuICAgIHNlbGVjdGVkOiBib29sZWFuXG4gICk6IENoaXBPcHRpb25Nb2RlbDxURW50aXR5PiB7XG4gICAgbGV0IGxvY2tlZCA9IGZhbHNlXG4gICAgaWYgKG9wdGlvbnMuaXNMb2NrZWQpIHtcbiAgICAgIGxvY2tlZCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgbG9ja2VkID0gY2hpcFNwZWMubG9ja2VkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGlwT3B0aW9uTW9kZWw8VEVudGl0eT4oXG4gICAgICB0aGlzLmdldEVudGl0eUlkKGUpLFxuICAgICAgZSxcbiAgICAgIHRoaXMucmVzb2x2ZURpc3BsYXlUZXh0KGUsIG9wdGlvbnMpLFxuICAgICAge1xuICAgICAgICB0aGVtZUNvbG9yOiBzZWxlY3RlZCA/ICdhY2NlbnQnIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGxvY2tlZCxcbiAgICAgIGNoaXBTcGVjLmF2YXRhclNwZWMsXG4gICAgICBjaGlwU3BlYy50cmFpbGluZ1NwZWMsXG4gICAgICBzZWxlY3RlZFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW50aXR5SWQoZTogVEVudGl0eSk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5nZXRJZChlKVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRGlzcGxheVRleHQoZW50aXR5OiBURW50aXR5LCBvcHRpb25zOiBCdWlsZENoaXBPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBlbnRpdHlMYWJlbE1hcCA9IG9wdGlvbnMuZW50aXR5TGFiZWxNYXBcbiAgICByZXR1cm4gZW50aXR5TGFiZWxNYXAuaGFzKGVudGl0eSlcbiAgICAgID8gZW50aXR5TGFiZWxNYXAuZ2V0KGVudGl0eSlcbiAgICAgIDogb3B0aW9ucy5jb250ZXh0LmRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyKGVudGl0eSlcbiAgfVxufVxuIl19