@elderbyte/ngx-starter 14.10.0 → 14.12.0-beta

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 (303) hide show
  1. package/_index.scss +2 -0
  2. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +4 -4
  3. package/esm2020/lib/common/forms/elder-form-field-control-base.directive.mjs +4 -4
  4. package/esm2020/lib/common/forms/elder-from-field-base.mjs +4 -4
  5. package/esm2020/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
  6. package/esm2020/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
  7. package/esm2020/lib/common/forms/form-field-base.component.mjs +4 -4
  8. package/esm2020/lib/common/forms/multi-model-base.component.mjs +4 -4
  9. package/esm2020/lib/common/forms/template-composite-control.mjs +4 -4
  10. package/esm2020/lib/common/forms/value-accessor-base.mjs +4 -4
  11. package/esm2020/lib/common/http/http-client-builder.service.mjs +4 -4
  12. package/esm2020/lib/common/http/http-client-pristine.mjs +4 -4
  13. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  14. package/esm2020/lib/common/url/elder-router.service.mjs +4 -4
  15. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +4 -4
  16. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +5 -6
  17. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +8 -12
  18. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +11 -15
  19. package/esm2020/lib/components/auditing/elder-audit.module.mjs +5 -9
  20. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +5 -6
  21. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +8 -12
  22. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +6 -7
  23. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +4 -4
  24. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +7 -8
  25. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +8 -9
  26. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +5 -7
  27. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +20 -22
  28. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +8 -9
  29. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +8 -9
  30. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
  31. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
  32. package/esm2020/lib/components/containers/elder-containers.module.mjs +6 -10
  33. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +5 -6
  34. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
  35. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
  36. package/esm2020/lib/components/csv/elder-csv.module.mjs +5 -5
  37. package/esm2020/lib/components/currency/elder-currency.module.mjs +5 -5
  38. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +4 -4
  39. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +8 -9
  40. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
  41. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +5 -6
  42. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +6 -7
  43. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +8 -9
  44. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +7 -8
  45. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +4 -4
  46. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +6 -7
  47. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +8 -9
  48. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +8 -9
  49. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +6 -7
  50. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
  51. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +5 -6
  52. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +47 -34
  53. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +5 -9
  54. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
  55. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +8 -9
  56. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  57. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
  58. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
  59. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
  60. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +11 -12
  61. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  63. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
  64. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +4 -4
  65. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
  66. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +8 -9
  67. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
  68. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +6 -7
  69. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +11 -12
  70. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +4 -4
  71. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +6 -7
  72. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +6 -7
  73. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
  74. package/esm2020/lib/components/errors/elder-error.module.mjs +8 -12
  75. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +5 -6
  76. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +6 -7
  77. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +6 -7
  78. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +5 -6
  79. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
  80. package/esm2020/lib/components/files/elder-file-select.directive.mjs +4 -4
  81. package/esm2020/lib/components/files/elder-file.module.mjs +8 -9
  82. package/esm2020/lib/components/files/file-select/file-select.component.mjs +4 -4
  83. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +13 -14
  84. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
  85. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
  86. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
  87. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
  88. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +4 -4
  89. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +4 -4
  90. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +4 -4
  91. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
  92. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +14 -14
  93. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
  94. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
  95. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +4 -4
  96. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +4 -4
  97. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
  98. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
  99. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
  100. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  101. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
  102. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  103. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +4 -4
  104. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +4 -4
  105. package/esm2020/lib/components/forms/elder-forms.module.mjs +5 -5
  106. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +4 -4
  107. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +4 -4
  108. package/esm2020/lib/components/forms/search/elder-search.module.mjs +8 -9
  109. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +7 -8
  110. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  111. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +6 -7
  112. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +6 -7
  113. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +4 -4
  114. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +5 -13
  115. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +6 -10
  116. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +6 -7
  117. package/esm2020/lib/components/headers/elder-header.module.mjs +8 -9
  118. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +4 -4
  119. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -9
  120. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +12 -13
  121. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +10 -11
  122. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  123. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +16 -17
  124. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
  125. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  126. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
  127. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
  128. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
  129. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
  130. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +5 -9
  131. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +4 -4
  132. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +7 -8
  133. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +5 -5
  134. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +6 -7
  135. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
  136. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +5 -9
  137. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +4 -4
  138. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +6 -7
  139. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +8 -9
  140. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +6 -7
  141. package/esm2020/lib/components/iframes/iframe.service.mjs +4 -4
  142. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
  143. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  144. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +8 -8
  145. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +6 -7
  146. package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
  147. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
  148. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +5 -9
  149. package/esm2020/lib/components/labels/elder-labels.module.mjs +5 -5
  150. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +4 -4
  151. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +7 -18
  152. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
  153. package/esm2020/lib/components/measures/elder-measures.module.mjs +9 -13
  154. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +4 -4
  155. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +4 -4
  156. package/esm2020/lib/components/measures/elder-unit.service.mjs +4 -4
  157. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +14 -15
  158. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +4 -4
  159. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +14 -15
  160. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +8 -9
  161. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +8 -9
  162. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +5 -6
  163. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +6 -7
  164. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +5 -7
  165. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +4 -4
  166. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +8 -9
  167. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
  168. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +8 -9
  169. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -4
  170. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
  171. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +5 -5
  172. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +5 -5
  173. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +5 -5
  174. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +5 -5
  175. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +5 -6
  176. package/esm2020/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +5 -6
  177. package/esm2020/lib/components/panels/elder-panel.module.mjs +6 -10
  178. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  179. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +4 -4
  180. package/esm2020/lib/components/select/elder-select-base.mjs +4 -4
  181. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +10 -10
  182. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  183. package/esm2020/lib/components/select/elder-select-value.directive.mjs +4 -4
  184. package/esm2020/lib/components/select/elder-select.module.mjs +8 -9
  185. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +4 -4
  186. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +14 -15
  187. package/esm2020/lib/components/select/multi/elder-multi-select-form-field.mjs +4 -4
  188. package/esm2020/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
  189. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
  190. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +7 -8
  191. package/esm2020/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
  192. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +11 -12
  193. package/esm2020/lib/components/select/single/elder-select-form-field.mjs +4 -4
  194. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +7 -9
  195. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +8 -9
  196. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +8 -9
  197. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +5 -6
  198. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +5 -6
  199. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
  200. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
  201. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
  202. package/esm2020/lib/components/shell/elder-shell.module.mjs +8 -9
  203. package/esm2020/lib/components/shell/elder-shell.service.mjs +4 -4
  204. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +6 -7
  205. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +15 -16
  206. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
  207. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
  208. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  209. package/esm2020/lib/components/tabs/elder-tab.module.mjs +7 -11
  210. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  211. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +4 -4
  212. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
  213. package/esm2020/lib/components/theme/elder-theme.directive.mjs +4 -4
  214. package/esm2020/lib/components/theme/elder-theme.module.mjs +5 -5
  215. package/esm2020/lib/components/theme/elder-theme.service.mjs +4 -4
  216. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
  217. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +9 -10
  218. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +11 -12
  219. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +9 -10
  220. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +9 -10
  221. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +14 -15
  222. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +11 -12
  223. package/esm2020/lib/components/time/elder-time.module.mjs +9 -19
  224. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +9 -10
  225. package/esm2020/lib/components/toasts/elder-toast.module.mjs +6 -7
  226. package/esm2020/lib/components/toasts/elder-toast.service.mjs +10 -10
  227. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +7 -8
  228. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -9
  229. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +6 -7
  230. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
  231. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +5 -5
  232. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +4 -4
  233. package/esm2020/lib/features/kafent/access-token-provider.mjs +4 -4
  234. package/esm2020/lib/features/kafent/kafent-config.mjs +4 -4
  235. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +4 -4
  236. package/esm2020/lib/features/kafent/kafent-event.service.mjs +4 -4
  237. package/esm2020/lib/features/kafent/kafent.module.mjs +5 -5
  238. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
  239. package/esm2020/lib/pipes/bytes.pipe.mjs +4 -4
  240. package/esm2020/lib/pipes/elder-pipes.module.mjs +11 -11
  241. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +4 -4
  242. package/esm2020/lib/pipes/elder-round.pipe.mjs +4 -4
  243. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +4 -4
  244. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +4 -4
  245. package/esm2020/lib/pipes/iso-duration.pipe.mjs +4 -4
  246. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
  247. package/esm2020/lib/pipes/iso-interval.pipe.mjs +4 -4
  248. package/esm2020/lib/pipes/time-ago.pipe.mjs +4 -4
  249. package/esm2020/lib/pipes/time-duration.pipe.mjs +4 -4
  250. package/esm2020/lib/pipes/weight.pipe.mjs +4 -4
  251. package/fesm2015/elderbyte-ngx-starter.mjs +1126 -1190
  252. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  253. package/fesm2020/elderbyte-ngx-starter.mjs +1126 -1190
  254. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  255. package/lib/components/access-denied/elder-access-denied.module.d.ts +1 -2
  256. package/lib/components/auditing/audited-entity/elder-audited-entity.component.d.ts +1 -2
  257. package/lib/components/auditing/elder-audit.module.d.ts +5 -6
  258. package/lib/components/button-group/elder-button-group.module.d.ts +1 -2
  259. package/lib/components/card-organizer/elder-card-organizer.module.d.ts +3 -4
  260. package/lib/components/cards/elder-card/elder-card.module.d.ts +2 -3
  261. package/lib/components/connectivity/elder-connectivity.module.d.ts +6 -7
  262. package/lib/components/containers/elder-containers.module.d.ts +1 -2
  263. package/lib/components/data-transfer/elder-data-transfer.module.d.ts +4 -5
  264. package/lib/components/data-view/common/elder-data-common.module.d.ts +1 -2
  265. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +4 -3
  266. package/lib/components/data-view/grid/elder-grid.module.d.ts +6 -7
  267. package/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.d.ts +4 -5
  268. package/lib/components/data-view/table/elder-table.module.d.ts +4 -5
  269. package/lib/components/dialogs/elder-dialog.module.d.ts +2 -3
  270. package/lib/components/errors/elder-error.module.d.ts +1 -2
  271. package/lib/components/expand-toggle-button/elder-expand-toggle-button.module.d.ts +1 -2
  272. package/lib/components/files/elder-file.module.d.ts +6 -7
  273. package/lib/components/forms/search/elder-search.module.d.ts +2 -3
  274. package/lib/components/global-search/elder-global-search.module.d.ts +2 -3
  275. package/lib/components/graph/elder-progress-bar/elder-progress-bar.component.d.ts +1 -8
  276. package/lib/components/graph/elder-progress-bar/elder-progress-bar.module.d.ts +1 -2
  277. package/lib/components/headers/elder-header.module.d.ts +2 -3
  278. package/lib/components/i18n/entities/elder-i18n-entities.module.d.ts +15 -16
  279. package/lib/components/i18n/language/elder-language.module.d.ts +2 -3
  280. package/lib/components/iframes/elder-iframe.module.d.ts +5 -6
  281. package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +2 -3
  282. package/lib/components/measures/dimensions-input/elder-dimensions-input.component.d.ts +1 -3
  283. package/lib/components/measures/elder-measures.module.d.ts +5 -6
  284. package/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.d.ts +8 -9
  285. package/lib/components/navigation/nav/elder-nav.module.d.ts +1 -2
  286. package/lib/components/navigation/nav/nav-list/elder-nav-list.component.d.ts +1 -3
  287. package/lib/components/navigation/toolbar/elder-toolbar.module.d.ts +8 -9
  288. package/lib/components/panels/elder-panel.module.d.ts +1 -2
  289. package/lib/components/select/elder-select.module.d.ts +10 -11
  290. package/lib/components/select-chip-list/elder-chip-list-select.module.d.ts +3 -4
  291. package/lib/components/select-list/elder-select-list.module.d.ts +1 -2
  292. package/lib/components/shell/elder-shell.module.d.ts +4 -5
  293. package/lib/components/tabs/elder-tab.module.d.ts +1 -2
  294. package/lib/components/time/elder-time.module.d.ts +9 -10
  295. package/lib/components/toasts/elder-toast.module.d.ts +3 -4
  296. package/lib/components/url-fragment/elder-url-fragment.module.d.ts +2 -3
  297. package/package.json +1 -2
  298. package/src/lib/components/graph/elder-progress-bar/elder-progress-bar.component.scss +5 -0
  299. package/src/lib/components/navigation/nav/nav-list/elder-nav-list.component.scss +5 -6
  300. package/src/lib/components/select/single/elder-select/elder-select.component.scss +1 -4
  301. package/theming/_elder-common.scss +32 -0
  302. package/theming/_elder-flex-layout.scss +562 -0
  303. package/theming/_elder-style-fixes.scss +3 -0
@@ -78,9 +78,9 @@ export class DataContextSelectionDirective {
78
78
  }));
79
79
  }
80
80
  }
81
- DataContextSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: DataContextSelectionDirective, deps: [{ token: i1.SelectionModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
82
- DataContextSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.4", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: { selectionModel: ["elderDataContextSelectionModel", "selectionModel"], dataContext: ["elderDataContextSelection", "dataContext"] }, exportAs: ["elderDataContextSelection"], ngImport: i0 });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: DataContextSelectionDirective, decorators: [{
81
+ DataContextSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DataContextSelectionDirective, deps: [{ token: i1.SelectionModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
82
+ DataContextSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: { selectionModel: ["elderDataContextSelectionModel", "selectionModel"], dataContext: ["elderDataContextSelection", "dataContext"] }, exportAs: ["elderDataContextSelection"], ngImport: i0 });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DataContextSelectionDirective, decorators: [{
84
84
  type: Directive,
85
85
  args: [{
86
86
  selector: '[elderDataContextSelection]',
@@ -95,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImpor
95
95
  type: Input,
96
96
  args: ['elderDataContextSelection']
97
97
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2RhdGEtY29udGV4dC1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sNkJBQTZCO0lBZXhDOzs7O2dGQUk0RTtJQUU1RSxZQUNjLGNBQW1DO1FBcEJqRDs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUNqRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQWEzRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUMsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FB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QUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFDNUQsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQ25GLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNwQixLQUFLLENBQUMsbUJBQW1CLENBQzFCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7MEhBaEhVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBSnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7OzBCQXVCSSxRQUFROzRDQWlCQSxjQUFjO3NCQUR4QixLQUFLO3VCQUFDLGdDQUFnQztnQkFVNUIsV0FBVztzQkFEckIsS0FBSzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtNYXN0ZXJTZWxlY3Rpb25TdGF0ZX0gZnJvbSAnLi9tYXN0ZXItc2VsZWN0aW9uLXN0YXRlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbl0nLFxuICBleHBvcnRBczogJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb24nXG59KVxuZXhwb3J0IGNsYXNzIERhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsPGFueT4+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PGFueT4+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSQ6IE9ic2VydmFibGU8TWFzdGVyU2VsZWN0aW9uU3RhdGU+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+XG4gICkge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwkLm5leHQoc2VsZWN0aW9uTW9kZWwpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZSQgPSB0aGlzLmJ1aWxkU2VsZWN0aW9uU3RhdGUkKFxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCQsXG4gICAgICB0aGlzLmRhdGFDb250ZXh0JFxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25Nb2RlbCcpXG4gIHB1YmxpYyBzZXQgc2VsZWN0aW9uTW9kZWwobW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4pIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsJC5uZXh0KG1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uTW9kZWwoKTogU2VsZWN0aW9uTW9kZWw8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb24nKVxuICBwdWJsaWMgc2V0IGRhdGFDb250ZXh0KGRhdGFDb250ZXh0OiBJRGF0YUNvbnRleHQ8YW55Pikge1xuICAgIHRoaXMuZGF0YUNvbnRleHQkLm5leHQoZGF0YUNvbnRleHQpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbFNuYXBzaG90IG51bWJlciBvZiBzZWxlY3RhYmxlIHJvd3MuICovXG4gIHB1YmxpYyBnZXQgaXNBbGxTZWxlY3RlZFNuYXBzaG90KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb25TbmFwc2hvdC5sZW5ndGg7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGF0YUNvbnRleHQkLmdldFZhbHVlKCk7XG4gICAgY29uc3QgbnVtUm93cyA9IGNvbnRleHQgPyBjb250ZXh0LnNuYXBzaG90LmRhdGEubGVuZ3RoIDogMDtcbiAgICBjb25zdCBudW1VbnNlbGVjdGFibGUgPSBjb250ZXh0ID8gY29udGV4dC5zbmFwc2hvdC5kYXRhLmZpbHRlcihpID0+ICF0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0YWJsZShpKSkubGVuZ3RoIDogMDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPj0gbnVtUm93cyAtIG51bVVuc2VsZWN0YWJsZTsgLy8gVHJ1ZSBpZiBhbGwgc2VsZWN0YWJsZSBpdGVtcyBhcmUgc2VsZWN0ZWRcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIHB1YmxpYyBtYXN0ZXJUb2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ21hc3RlclRvZ2dsZSB0cmlnZ2VyZWQsIHRvZ2dsaW5nIGFsbCEnKTtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkU25hcHNob3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGF0YUNvbnRleHQkLmdldFZhbHVlKCk7XG4gICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChjb250ZXh0LnNuYXBzaG90LmRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYnVpbGRTZWxlY3Rpb25TdGF0ZSQoXG4gICAgc2VsZWN0aW9uTW9kZWwkOiBPYnNlcnZhYmxlPFNlbGVjdGlvbk1vZGVsPGFueT4+LFxuICAgIGRhdGFDb250ZXh0JDogT2JzZXJ2YWJsZTxJRGF0YUNvbnRleHQ8YW55Pj5cbiAgKTogT2JzZXJ2YWJsZTxNYXN0ZXJTZWxlY3Rpb25TdGF0ZT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtzZWxlY3Rpb25Nb2RlbCQsIGRhdGFDb250ZXh0JF0pLnBpcGUoXG4gICAgICAgIGZpbHRlcigoW21vZGVsLCBkY10pID0+ICEhbW9kZWwgJiYgISFkYyksXG4gICAgICAgIHN3aXRjaE1hcCgoW21vZGVsLCBkY10pID0+IHRoaXMuYnVpbGRTZWxlY3Rpb25TdGF0ZUlubmVyJChtb2RlbCwgZGMpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VsZWN0aW9uU3RhdGVJbm5lciQoXG4gICAgbW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgZGM6IElEYXRhQ29udGV4dDxhbnk+XG4gICk6IE9ic2VydmFibGU8TWFzdGVyU2VsZWN0aW9uU3RhdGU+IHtcbiAgICByZXR1cm4gIGNvbWJpbmVMYXRlc3QoW21vZGVsLnNlbGVjdGlvbiwgZGMuZGF0YV0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWxlY3Rpb24sIGN1cnJlbnREYXRhXSkgPT4ge1xuICAgICAgICBjb25zdCB1bnNlbGVjdGFibGUgPSBjdXJyZW50RGF0YS5maWx0ZXIoaSA9PiAhbW9kZWwuaXNTZWxlY3RhYmxlKGkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXN0ZXJTZWxlY3Rpb25TdGF0ZShcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgIHNlbGVjdGlvbi5sZW5ndGggPj0gY3VycmVudERhdGEubGVuZ3RoIC0gdW5zZWxlY3RhYmxlLmxlbmd0aCxcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoID4gMCAmJiBzZWxlY3Rpb24ubGVuZ3RoIDwgY3VycmVudERhdGEubGVuZ3RoIC0gdW5zZWxlY3RhYmxlLmxlbmd0aCxcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoID4gMCxcbiAgICAgICAgICBtb2RlbC5pc011bHRpcGxlU2VsZWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2RhdGEtY29udGV4dC1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sNkJBQTZCO0lBZXhDOzs7O2dGQUk0RTtJQUU1RSxZQUNjLGNBQW1DO1FBcEJqRDs7OztvRkFJNEU7UUFFM0QsUUFBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUNqRSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQWEzRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDOUMsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FB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QUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFDNUQsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQ25GLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNwQixLQUFLLENBQUMsbUJBQW1CLENBQzFCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7MkhBaEhVLDZCQUE2QjsrR0FBN0IsNkJBQTZCOzRGQUE3Qiw2QkFBNkI7a0JBSnpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLDJCQUEyQjtpQkFDdEM7OzBCQXVCSSxRQUFROzRDQWlCQSxjQUFjO3NCQUR4QixLQUFLO3VCQUFDLGdDQUFnQztnQkFVNUIsV0FBVztzQkFEckIsS0FBSzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtNYXN0ZXJTZWxlY3Rpb25TdGF0ZX0gZnJvbSAnLi9tYXN0ZXItc2VsZWN0aW9uLXN0YXRlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbl0nLFxuICBleHBvcnRBczogJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb24nXG59KVxuZXhwb3J0IGNsYXNzIERhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Nb2RlbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdGlvbk1vZGVsPGFueT4+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SURhdGFDb250ZXh0PGFueT4+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGF0ZSQ6IE9ic2VydmFibGU8TWFzdGVyU2VsZWN0aW9uU3RhdGU+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+XG4gICkge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwkLm5leHQoc2VsZWN0aW9uTW9kZWwpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25TdGF0ZSQgPSB0aGlzLmJ1aWxkU2VsZWN0aW9uU3RhdGUkKFxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCQsXG4gICAgICB0aGlzLmRhdGFDb250ZXh0JFxuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25Nb2RlbCcpXG4gIHB1YmxpYyBzZXQgc2VsZWN0aW9uTW9kZWwobW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4pIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsJC5uZXh0KG1vZGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uTW9kZWwoKTogU2VsZWN0aW9uTW9kZWw8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoJ2VsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb24nKVxuICBwdWJsaWMgc2V0IGRhdGFDb250ZXh0KGRhdGFDb250ZXh0OiBJRGF0YUNvbnRleHQ8YW55Pikge1xuICAgIHRoaXMuZGF0YUNvbnRleHQkLm5leHQoZGF0YUNvbnRleHQpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbFNuYXBzaG90IG51bWJlciBvZiBzZWxlY3RhYmxlIHJvd3MuICovXG4gIHB1YmxpYyBnZXQgaXNBbGxTZWxlY3RlZFNuYXBzaG90KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb25TbmFwc2hvdC5sZW5ndGg7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGF0YUNvbnRleHQkLmdldFZhbHVlKCk7XG4gICAgY29uc3QgbnVtUm93cyA9IGNvbnRleHQgPyBjb250ZXh0LnNuYXBzaG90LmRhdGEubGVuZ3RoIDogMDtcbiAgICBjb25zdCBudW1VbnNlbGVjdGFibGUgPSBjb250ZXh0ID8gY29udGV4dC5zbmFwc2hvdC5kYXRhLmZpbHRlcihpID0+ICF0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0YWJsZShpKSkubGVuZ3RoIDogMDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPj0gbnVtUm93cyAtIG51bVVuc2VsZWN0YWJsZTsgLy8gVHJ1ZSBpZiBhbGwgc2VsZWN0YWJsZSBpdGVtcyBhcmUgc2VsZWN0ZWRcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIHB1YmxpYyBtYXN0ZXJUb2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ21hc3RlclRvZ2dsZSB0cmlnZ2VyZWQsIHRvZ2dsaW5nIGFsbCEnKTtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkU25hcHNob3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGF0YUNvbnRleHQkLmdldFZhbHVlKCk7XG4gICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChjb250ZXh0LnNuYXBzaG90LmRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgYnVpbGRTZWxlY3Rpb25TdGF0ZSQoXG4gICAgc2VsZWN0aW9uTW9kZWwkOiBPYnNlcnZhYmxlPFNlbGVjdGlvbk1vZGVsPGFueT4+LFxuICAgIGRhdGFDb250ZXh0JDogT2JzZXJ2YWJsZTxJRGF0YUNvbnRleHQ8YW55Pj5cbiAgKTogT2JzZXJ2YWJsZTxNYXN0ZXJTZWxlY3Rpb25TdGF0ZT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtzZWxlY3Rpb25Nb2RlbCQsIGRhdGFDb250ZXh0JF0pLnBpcGUoXG4gICAgICAgIGZpbHRlcigoW21vZGVsLCBkY10pID0+ICEhbW9kZWwgJiYgISFkYyksXG4gICAgICAgIHN3aXRjaE1hcCgoW21vZGVsLCBkY10pID0+IHRoaXMuYnVpbGRTZWxlY3Rpb25TdGF0ZUlubmVyJChtb2RlbCwgZGMpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VsZWN0aW9uU3RhdGVJbm5lciQoXG4gICAgbW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgZGM6IElEYXRhQ29udGV4dDxhbnk+XG4gICk6IE9ic2VydmFibGU8TWFzdGVyU2VsZWN0aW9uU3RhdGU+IHtcbiAgICByZXR1cm4gIGNvbWJpbmVMYXRlc3QoW21vZGVsLnNlbGVjdGlvbiwgZGMuZGF0YV0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWxlY3Rpb24sIGN1cnJlbnREYXRhXSkgPT4ge1xuICAgICAgICBjb25zdCB1bnNlbGVjdGFibGUgPSBjdXJyZW50RGF0YS5maWx0ZXIoaSA9PiAhbW9kZWwuaXNTZWxlY3RhYmxlKGkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXN0ZXJTZWxlY3Rpb25TdGF0ZShcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgIHNlbGVjdGlvbi5sZW5ndGggPj0gY3VycmVudERhdGEubGVuZ3RoIC0gdW5zZWxlY3RhYmxlLmxlbmd0aCxcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoID4gMCAmJiBzZWxlY3Rpb24ubGVuZ3RoIDwgY3VycmVudERhdGEubGVuZ3RoIC0gdW5zZWxlY3RhYmxlLmxlbmd0aCxcbiAgICAgICAgICBzZWxlY3Rpb24ubGVuZ3RoID4gMCxcbiAgICAgICAgICBtb2RlbC5pc011bHRpcGxlU2VsZWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxufVxuIl19
@@ -5,7 +5,6 @@ import * as i1 from "../data-context-selection.directive";
5
5
  import * as i2 from "@angular/common";
6
6
  import * as i3 from "@angular/material/checkbox";
7
7
  import * as i4 from "@angular/material/badge";
8
- import * as i5 from "@angular/flex-layout/flex";
9
8
  export class ElderSelectionMasterCheckboxComponent {
10
9
  /***************************************************************************
11
10
  * *
@@ -29,10 +28,10 @@ export class ElderSelectionMasterCheckboxComponent {
29
28
  ngOnInit() {
30
29
  }
31
30
  }
32
- ElderSelectionMasterCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderSelectionMasterCheckboxComponent, deps: [{ token: i1.DataContextSelectionDirective }], target: i0.ɵɵFactoryTarget.Component });
33
- ElderSelectionMasterCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox", ngImport: i0, template: "<ng-container *ngIf=\"dataContextSelection?.selectionState$ | async as selectionState\">\n <div\n *ngIf=\"selectionState.isMultiSelection\"\n fxLayout=\"column\" fxFlex=\"none\"\n [matBadgeHidden]=\"selectionState.count === 0\"\n [matBadge]=\"selectionState.count + ''\"\n [matBadgePosition]=\"'above before'\"\n [matBadgeOverlap]=\"false\"\n [matBadgeSize]=\"'small'\"\n >\n <mat-checkbox fxFlex=\"none\"\n (change)=\"$event ? dataContextSelection.masterToggle() : null\"\n [checked]=\"selectionState.allSelected\"\n [indeterminate]=\"selectionState.someSelected\"\n >\n </mat-checkbox>\n </div>\n</ng-container>\n\n\n\n<!-- -->\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderSelectionMasterCheckboxComponent, decorators: [{
31
+ ElderSelectionMasterCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderSelectionMasterCheckboxComponent, deps: [{ token: i1.DataContextSelectionDirective }], target: i0.ɵɵFactoryTarget.Component });
32
+ ElderSelectionMasterCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox", ngImport: i0, template: "<ng-container *ngIf=\"dataContextSelection?.selectionState$ | async as selectionState\">\n <div\n *ngIf=\"selectionState.isMultiSelection\"\n class=\"layout-col flex-none\"\n [matBadgeHidden]=\"selectionState.count === 0\"\n [matBadge]=\"selectionState.count + ''\"\n [matBadgePosition]=\"'above before'\"\n [matBadgeOverlap]=\"false\"\n [matBadgeSize]=\"'small'\"\n >\n <mat-checkbox class=\"flex-none\"\n (change)=\"$event ? dataContextSelection.masterToggle() : null\"\n [checked]=\"selectionState.allSelected\"\n [indeterminate]=\"selectionState.someSelected\"\n >\n </mat-checkbox>\n </div>\n</ng-container>\n\n\n\n<!-- -->\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderSelectionMasterCheckboxComponent, decorators: [{
35
34
  type: Component,
36
- args: [{ selector: 'elder-selection-master-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"dataContextSelection?.selectionState$ | async as selectionState\">\n <div\n *ngIf=\"selectionState.isMultiSelection\"\n fxLayout=\"column\" fxFlex=\"none\"\n [matBadgeHidden]=\"selectionState.count === 0\"\n [matBadge]=\"selectionState.count + ''\"\n [matBadgePosition]=\"'above before'\"\n [matBadgeOverlap]=\"false\"\n [matBadgeSize]=\"'small'\"\n >\n <mat-checkbox fxFlex=\"none\"\n (change)=\"$event ? dataContextSelection.masterToggle() : null\"\n [checked]=\"selectionState.allSelected\"\n [indeterminate]=\"selectionState.someSelected\"\n >\n </mat-checkbox>\n </div>\n</ng-container>\n\n\n\n<!-- -->\n" }]
35
+ args: [{ selector: 'elder-selection-master-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"dataContextSelection?.selectionState$ | async as selectionState\">\n <div\n *ngIf=\"selectionState.isMultiSelection\"\n class=\"layout-col flex-none\"\n [matBadgeHidden]=\"selectionState.count === 0\"\n [matBadge]=\"selectionState.count + ''\"\n [matBadgePosition]=\"'above before'\"\n [matBadgeOverlap]=\"false\"\n [matBadgeSize]=\"'small'\"\n >\n <mat-checkbox class=\"flex-none\"\n (change)=\"$event ? dataContextSelection.masterToggle() : null\"\n [checked]=\"selectionState.allSelected\"\n [indeterminate]=\"selectionState.someSelected\"\n >\n </mat-checkbox>\n </div>\n</ng-container>\n\n\n\n<!-- -->\n" }]
37
36
  }], ctorParameters: function () { return [{ type: i1.DataContextSelectionDirective }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3gvZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3gvZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVNuRCxNQUFNLE9BQU8scUNBQXFDO0lBVWhEOzs7O2dGQUk0RTtJQUU1RSxZQUNrQixvQkFBbUQ7UUFBbkQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQjtRQWZyRTs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQVVyRSxDQUFDO0lBRUw7Ozs7Z0ZBSTRFO0lBRXJFLFFBQVE7SUFFZixDQUFDOztrSUE1QlUscUNBQXFDO3NIQUFyQyxxQ0FBcUMsdUVDVmxELDhzQkFzQkE7MkZEWmEscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNFLGlDQUFpQyxtQkFHMUIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtEYXRhQ29udGV4dFNlbGVjdGlvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vZGF0YS1jb250ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VsZWN0aW9uTWFzdGVyQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YUNvbnRleHRTZWxlY3Rpb246IERhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlXG4gICkgeyB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFDb250ZXh0U2VsZWN0aW9uPy5zZWxlY3Rpb25TdGF0ZSQgfCBhc3luYyBhcyBzZWxlY3Rpb25TdGF0ZVwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJzZWxlY3Rpb25TdGF0ZS5pc011bHRpU2VsZWN0aW9uXCJcbiAgICBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD1cIm5vbmVcIlxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJzZWxlY3Rpb25TdGF0ZS5jb3VudCA9PT0gMFwiXG4gICAgW21hdEJhZGdlXT1cInNlbGVjdGlvblN0YXRlLmNvdW50ICsgJydcIlxuICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIidhYm92ZSBiZWZvcmUnXCJcbiAgICBbbWF0QmFkZ2VPdmVybGFwXT1cImZhbHNlXCJcbiAgICBbbWF0QmFkZ2VTaXplXT1cIidzbWFsbCdcIlxuICA+XG4gICAgPG1hdC1jaGVja2JveCBmeEZsZXg9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gZGF0YUNvbnRleHRTZWxlY3Rpb24ubWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvblN0YXRlLmFsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvblN0YXRlLnNvbWVTZWxlY3RlZFwiXG4gICAgPlxuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuPCEtLSAgLS0+XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3gvZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9jb21tb24vc2VsZWN0aW9uL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3gvZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBU25ELE1BQU0sT0FBTyxxQ0FBcUM7SUFVaEQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ2tCLG9CQUFtRDtRQUFuRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBZnJFOzs7O29GQUk0RTtRQUUzRCxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBVXJFLENBQUM7SUFFTDs7OztnRkFJNEU7SUFFckUsUUFBUTtJQUVmLENBQUM7O21JQTVCVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyx1RUNWbEQsNnNCQXNCQTs0RkRaYSxxQ0FBcUM7a0JBTmpELFNBQVM7K0JBQ0UsaUNBQWlDLG1CQUcxQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0RhdGFDb250ZXh0U2VsZWN0aW9uRGlyZWN0aXZlfSBmcm9tICcuLi9kYXRhLWNvbnRleHQtc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWxlY3Rpb25NYXN0ZXJDaGVja2JveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBkYXRhQ29udGV4dFNlbGVjdGlvbjogRGF0YUNvbnRleHRTZWxlY3Rpb25EaXJlY3RpdmVcbiAgKSB7IH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YUNvbnRleHRTZWxlY3Rpb24/LnNlbGVjdGlvblN0YXRlJCB8IGFzeW5jIGFzIHNlbGVjdGlvblN0YXRlXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNlbGVjdGlvblN0YXRlLmlzTXVsdGlTZWxlY3Rpb25cIlxuICAgIGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4LW5vbmVcIlxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJzZWxlY3Rpb25TdGF0ZS5jb3VudCA9PT0gMFwiXG4gICAgW21hdEJhZGdlXT1cInNlbGVjdGlvblN0YXRlLmNvdW50ICsgJydcIlxuICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIidhYm92ZSBiZWZvcmUnXCJcbiAgICBbbWF0QmFkZ2VPdmVybGFwXT1cImZhbHNlXCJcbiAgICBbbWF0QmFkZ2VTaXplXT1cIidzbWFsbCdcIlxuICA+XG4gICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IGRhdGFDb250ZXh0U2VsZWN0aW9uLm1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25TdGF0ZS5hbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb25TdGF0ZS5zb21lU2VsZWN0ZWRcIlxuICAgID5cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbjwhLS0gIC0tPlxuIl19
@@ -2,38 +2,38 @@ import { ChangeDetectionStrategy, Component, ContentChild, Directive, forwardRef
2
2
  import { LoggerFactory } from '@elderbyte/ts-logger';
3
3
  import { BehaviorSubject, combineLatest, of } from 'rxjs';
4
4
  import { isContinuableDataContext } from '../../../../common/data/data-context/data-context';
5
- import { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';
5
+ import { debounceTime, filter, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
6
6
  import { ELDER_DATA_VIEW } from '../../base/elder-data-view';
7
7
  import { ElderDataViewBaseComponent } from '../../base/elder-data-view-base';
8
8
  import { MatPaginator } from '@angular/material/paginator';
9
9
  import { MatTableDataContextBindingBuilder } from '../../../../common/data/data-context/mat-table-data-context-binding';
10
+ import { Breakpoints } from '@angular/cdk/layout';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "../../../../common/selection/selection-model";
12
13
  import * as i2 from "../../base/elder-data-view-options-provider";
13
- import * as i3 from "@angular/flex-layout";
14
+ import * as i3 from "@angular/cdk/layout";
14
15
  import * as i4 from "@angular/common";
15
16
  import * as i5 from "@angular/material/progress-bar";
16
17
  import * as i6 from "@angular/material/divider";
17
18
  import * as i7 from "@angular/material/icon";
18
19
  import * as i8 from "@angular/material/button";
19
20
  import * as i9 from "@angular/cdk/scrolling";
20
- import * as i10 from "@angular/flex-layout/flex";
21
- import * as i11 from "../../common/elder-single-sort/elder-single-sort.component";
22
- import * as i12 from "../../common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component";
23
- import * as i13 from "../../common/selection/data-context-selection.directive";
24
- import * as i14 from "../../common/data-context-state-indicator/data-context-state-indicator.component";
25
- import * as i15 from "../../../infinitescroll/elder-infinite-scroll.module";
26
- import * as i16 from "../../../forms/directives/elder-stop-event-propagation.directive";
27
- import * as i17 from "@angular/material/paginator";
21
+ import * as i10 from "../../common/elder-single-sort/elder-single-sort.component";
22
+ import * as i11 from "../../common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component";
23
+ import * as i12 from "../../common/selection/data-context-selection.directive";
24
+ import * as i13 from "../../common/data-context-state-indicator/data-context-state-indicator.component";
25
+ import * as i14 from "../../../infinitescroll/elder-infinite-scroll.module";
26
+ import * as i15 from "../../../forms/directives/elder-stop-event-propagation.directive";
27
+ import * as i16 from "@angular/material/paginator";
28
28
  export class ElderGridTileDirective {
29
29
  constructor(templateRef, viewContainer) {
30
30
  this.templateRef = templateRef;
31
31
  this.viewContainer = viewContainer;
32
32
  }
33
33
  }
34
- ElderGridTileDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridTileDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
35
- ElderGridTileDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.4", type: ElderGridTileDirective, selector: "[elderGridTile]", ngImport: i0 });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridTileDirective, decorators: [{
34
+ ElderGridTileDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridTileDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
35
+ ElderGridTileDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: ElderGridTileDirective, selector: "[elderGridTile]", ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridTileDirective, decorators: [{
37
37
  type: Directive,
38
38
  args: [{ selector: '[elderGridTile]' }]
39
39
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -46,9 +46,9 @@ export class ElderGridToolbarDirective {
46
46
  this.viewContainer = viewContainer;
47
47
  }
48
48
  }
49
- ElderGridToolbarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridToolbarDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
50
- ElderGridToolbarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.4", type: ElderGridToolbarDirective, selector: "[elderGridToolbar]", ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridToolbarDirective, decorators: [{
49
+ ElderGridToolbarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridToolbarDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
50
+ ElderGridToolbarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: ElderGridToolbarDirective, selector: "[elderGridToolbar]", ngImport: i0 });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridToolbarDirective, decorators: [{
52
52
  type: Directive,
53
53
  args: [{ selector: '[elderGridToolbar]' }]
54
54
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -58,9 +58,9 @@ export class ElderGridComponent extends ElderDataViewBaseComponent {
58
58
  * Constructor *
59
59
  * *
60
60
  **************************************************************************/
61
- constructor(selectionModel, dataViewOptionsProvider, mediaObserver) {
61
+ constructor(selectionModel, dataViewOptionsProvider, breakpointObserver) {
62
62
  super(selectionModel, dataViewOptionsProvider);
63
- this.mediaObserver = mediaObserver;
63
+ this.breakpointObserver = breakpointObserver;
64
64
  /***************************************************************************
65
65
  * *
66
66
  * Fields *
@@ -69,11 +69,11 @@ export class ElderGridComponent extends ElderDataViewBaseComponent {
69
69
  this.log = LoggerFactory.getLogger(this.constructor.name);
70
70
  this._columnCount = new BehaviorSubject(4);
71
71
  this.sizeToColumns = new Map([
72
- ['xs', 1],
73
- ['sm', 2],
74
- ['md', 3],
75
- ['lg', 4],
76
- ['xl', 5]
72
+ [Breakpoints.XSmall, 1],
73
+ [Breakpoints.Small, 2],
74
+ [Breakpoints.Medium, 3],
75
+ [Breakpoints.Large, 4],
76
+ [Breakpoints.XLarge, 5]
77
77
  ]);
78
78
  /**
79
79
  * Load next chunk after current is done
@@ -219,37 +219,50 @@ export class ElderGridComponent extends ElderDataViewBaseComponent {
219
219
  return rows;
220
220
  }
221
221
  responsiveColumn() {
222
- let start = 1;
222
+ const breakpoints = Array.from(this.sizeToColumns.keys());
223
+ return this.breakpointObserver.observe(breakpoints).pipe(takeUntil(this.destroy$), map(result => {
224
+ let activeSize = Breakpoints.Medium;
225
+ for (const query of Object.keys(result.breakpoints)) {
226
+ if (result.breakpoints[query]) {
227
+ activeSize = query;
228
+ break;
229
+ }
230
+ }
231
+ return this.sizeToColumns.get(activeSize);
232
+ }), debounceTime(100), startWith(this.activeColumnCount()));
233
+ }
234
+ activeColumnCount() {
235
+ let columnCount = 1;
223
236
  this.sizeToColumns.forEach((cols, mqAlias) => {
224
- if (this.mediaObserver.isActive(mqAlias)) {
225
- start = cols;
237
+ if (this.breakpointObserver.isMatched(mqAlias)) {
238
+ columnCount = cols;
226
239
  }
227
240
  });
228
- return this.mediaObserver.asObservable().pipe(filter(changes => changes.length > 0), map(changes => this.sizeToColumns.get(changes[0].mqAlias)), debounceTime(150), startWith(start));
241
+ return columnCount;
229
242
  }
230
243
  }
231
- ElderGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridComponent, deps: [{ token: i1.SelectionModel, optional: true }, { token: i2.ElderDataViewOptionsProvider, optional: true, skipSelf: true }, { token: i3.MediaObserver }], target: i0.ɵɵFactoryTarget.Component });
232
- ElderGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.4", type: ElderGridComponent, selector: "elder-grid", inputs: { toolbarVisible: "toolbarVisible", footerVisible: "footerVisible", itemHeight: "itemHeight", responsiveColumnCount: "responsiveColumnCount", availableSorts: "availableSorts", sortTranslationPrefix: "sortTranslationPrefix", hiddenField: "hiddenField", idField: "idField", selectionVisible: "selectionVisible", pageSizeOptions: "pageSizeOptions", tileTemplate: "tileTemplate", toolbarTemplate: "toolbarTemplate", data: "data", columnCount: "columnCount" }, providers: [
244
+ ElderGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridComponent, deps: [{ token: i1.SelectionModel, optional: true }, { token: i2.ElderDataViewOptionsProvider, optional: true, skipSelf: true }, { token: i3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
245
+ ElderGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ElderGridComponent, selector: "elder-grid", inputs: { toolbarVisible: "toolbarVisible", footerVisible: "footerVisible", itemHeight: "itemHeight", responsiveColumnCount: "responsiveColumnCount", availableSorts: "availableSorts", sortTranslationPrefix: "sortTranslationPrefix", hiddenField: "hiddenField", idField: "idField", selectionVisible: "selectionVisible", pageSizeOptions: "pageSizeOptions", tileTemplate: "tileTemplate", toolbarTemplate: "toolbarTemplate", data: "data", columnCount: "columnCount" }, providers: [
233
246
  {
234
247
  provide: ELDER_DATA_VIEW,
235
248
  useExisting: forwardRef(() => ElderGridComponent)
236
249
  }
237
- ], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"column\" class=\"scroll-fix\" fxFill>\n\n <!-- Grid Browser -->\n <div fxLayout=\"column\" fxFlex\n class=\"scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFlex=\"none\" class=\"elder-grid-toolbar\">\n\n <div fxLayout=\"column\" fxFlex=\"none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox fxFlex=\"none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n fxFlex=\"none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"elder-grid-browser\" fxLayout=\"column\" fxFlex\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <!-- cdkDrag [cdkDragDisabled]=\"true\" [cdkDragData]=\"tile\" -->\n <!-- <div class=\"tile-placeholder\" *cdkDragPlaceholder></div> -->\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n [class.elder-click-through]=\"true\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"elder-grid-footer\" *ngIf=\"footerVisible\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</div>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" fxLayout=\"column\" fxFlex fxLayoutAlign=\"center center\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.scroll-fix{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.cdk-drag-preview{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{flex:0 1 100%;background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.elder-grid-tile-overlay{position:absolute;left:0;top:0;right:0;bottom:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}.elder-click-through{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i10.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i10.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i10.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i11.ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: i12.ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: i13.DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: i14.DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: i15.ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]" }, { kind: "directive", type: i16.ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i17.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImport: i0, type: ElderGridComponent, decorators: [{
250
+ ], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-col full\">\n\n <!-- Grid Browser -->\n <div class=\"layout-col flex scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <!-- cdkDrag [cdkDragDisabled]=\"true\" [cdkDragData]=\"tile\" -->\n <!-- <div class=\"tile-placeholder\" *cdkDragPlaceholder></div> -->\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n [class.elder-click-through]=\"true\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</div>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.scroll-fix{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.cdk-drag-preview{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{flex:0 1 100%;background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.elder-grid-tile-overlay{position:absolute;left:0;top:0;right:0;bottom:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}.elder-click-through{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i10.ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: i11.ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: i12.DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: i13.DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: i14.ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]" }, { kind: "directive", type: i15.ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i16.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ElderGridComponent, decorators: [{
239
252
  type: Component,
240
253
  args: [{ selector: 'elder-grid', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
241
254
  {
242
255
  provide: ELDER_DATA_VIEW,
243
256
  useExisting: forwardRef(() => ElderGridComponent)
244
257
  }
245
- ], template: "<div fxLayout=\"column\" class=\"scroll-fix\" fxFill>\n\n <!-- Grid Browser -->\n <div fxLayout=\"column\" fxFlex\n class=\"scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFlex=\"none\" class=\"elder-grid-toolbar\">\n\n <div fxLayout=\"column\" fxFlex=\"none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox fxFlex=\"none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n fxFlex=\"none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"elder-grid-browser\" fxLayout=\"column\" fxFlex\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <!-- cdkDrag [cdkDragDisabled]=\"true\" [cdkDragData]=\"tile\" -->\n <!-- <div class=\"tile-placeholder\" *cdkDragPlaceholder></div> -->\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n [class.elder-click-through]=\"true\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"elder-grid-footer\" *ngIf=\"footerVisible\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</div>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" fxLayout=\"column\" fxFlex fxLayoutAlign=\"center center\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.scroll-fix{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.cdk-drag-preview{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{flex:0 1 100%;background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.elder-grid-tile-overlay{position:absolute;left:0;top:0;right:0;bottom:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}.elder-click-through{pointer-events:none}\n"] }]
258
+ ], template: "<div class=\"layout-col full\">\n\n <!-- Grid Browser -->\n <div class=\"layout-col flex scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <!-- cdkDrag [cdkDragDisabled]=\"true\" [cdkDragData]=\"tile\" -->\n <!-- <div class=\"tile-placeholder\" *cdkDragPlaceholder></div> -->\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n [class.elder-click-through]=\"true\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</div>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.scroll-fix{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.cdk-drag-preview{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{flex:0 1 100%;background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.elder-grid-tile-overlay{position:absolute;left:0;top:0;right:0;bottom:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}.elder-click-through{pointer-events:none}\n"] }]
246
259
  }], ctorParameters: function () { return [{ type: i1.SelectionModel, decorators: [{
247
260
  type: Optional
248
261
  }] }, { type: i2.ElderDataViewOptionsProvider, decorators: [{
249
262
  type: Optional
250
263
  }, {
251
264
  type: SkipSelf
252
- }] }, { type: i3.MediaObserver }]; }, propDecorators: { tileTemplateQuery: [{
265
+ }] }, { type: i3.BreakpointObserver }]; }, propDecorators: { tileTemplateQuery: [{
253
266
  type: ContentChild,
254
267
  args: [ElderGridTileDirective, { read: TemplateRef, static: true }]
255
268
  }], toolbarVisible: [{
@@ -290,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.4", ngImpor
290
303
  }], columnCount: [{
291
304
  type: Input
292
305
  }] } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9ncmlkL2VsZGVyLWdyaWQvZWxkZXItZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9ncmlkL2VsZGVyLWdyaWQvZWxkZXItZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFDN0UsT0FBTyxFQUF3Qyx3QkFBd0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSWxJLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQzs7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ckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJRGF0YUNvbnRleHQsIElEYXRhQ29udGV4dENvbnRpbnVhYmxlLCBpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtNZWRpYU9ic2VydmVyfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NvcnR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL3NvcnQnO1xuaW1wb3J0IHtFTERFUl9EQVRBX1ZJRVd9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3JztcbmltcG9ydCB7RWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LWJhc2UnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge01hdFRhYmxlRGF0YUNvbnRleHRCaW5kaW5nQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L21hdC10YWJsZS1kYXRhLWNvbnRleHQtYmluZGluZyc7XG5pbXBvcnQge0RhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyQmluZGluZ30gZnJvbSAnLi4vLi4vYmFzZS9kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlci1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcn0gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXctb3B0aW9ucy1wcm92aWRlcic7XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyR3JpZFRpbGVdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkVGlsZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgcHJvamVjdHMgbWFya2VkIGNvbnRlbnQgaW50byBhIHRvb2xiYXIuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyR3JpZFRvb2xiYXJdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkVG9vbGJhckRpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyR3JpZENvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkQ29tcG9uZW50IGV4dGVuZHMgRWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9jb2x1bW5Db3VudCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig0KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNpemVUb0NvbHVtbnMgPSBuZXcgTWFwKFtcbiAgICBbJ3hzJywgMV0sXG4gICAgWydzbScsIDJdLFxuICAgIFsnbWQnLCAzXSxcbiAgICBbJ2xnJywgNF0sXG4gICAgWyd4bCcsIDVdXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBMb2FkIG5leHQgY2h1bmsgYWZ0ZXIgY3VycmVudCBpcyBkb25lXG4gICAqL1xuICBwcml2YXRlIGxvYWROZXh0UXVldWVkID0gZmFsc2U7XG5cbiAgcHVibGljIGRhdGFSb3dzJDogT2JzZXJ2YWJsZTxhbnlbXVtdPjtcblxuICBwdWJsaWMgY2FuTG9hZE1vcmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgdG90YWwkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQENvbnRlbnRDaGlsZChFbGRlckdyaWRUaWxlRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyB0aWxlVGVtcGxhdGVRdWVyeTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBfdGlsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b29sYmFyVmlzaWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclZpc2libGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtSGVpZ2h0ID0gMjUwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXNwb25zaXZlQ29sdW1uQ291bnQgPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxTY3JvbGxWaWV3UG9ydCcsIHtzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgdmlydHVhbFNjcm9sbFZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGF2YWlsYWJsZVNvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzb3J0VHJhbnNsYXRpb25QcmVmaXggPSAnZG9jdW1lbnRzLnNvcnRzLic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhpZGRlbkZpZWxkOiBzdHJpbmcgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBObyBsb25nZXIgcmVxdWlyZWQuIElkIGlzIGF1dG9tYXRpY2FsbHkgcGlja2VkIGZyb20gdGhlIERhdGFTb3VyY2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRGaWVsZCA9ICdpZCc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGlvblZpc2libGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnMgPSBbMzAsIDUwLCAxMDAsIDE1MCwgMjAwXTtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpXG4gIHB1YmxpYyBtYXRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICBAQ29udGVudENoaWxkKEVsZGVyR3JpZFRvb2xiYXJEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHRvb2xiYXJUZW1wbGF0ZVF1ZXJ5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIF90b29sYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgZGF0YVZpZXdPcHRpb25zUHJvdmlkZXI6IEVsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBtZWRpYU9ic2VydmVyOiBNZWRpYU9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKHNlbGVjdGlvbk1vZGVsLCBkYXRhVmlld09wdGlvbnNQcm92aWRlcik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZWN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGNvbnN0IGNvbHVtbkNvdW50JCA9IChcbiAgICAgIHRoaXMucmVzcG9uc2l2ZUNvbHVtbkNvdW50XG4gICAgICAgID8gdGhpcy5yZXNwb25zaXZlQ29sdW1uKClcbiAgICAgICAgOiB0aGlzLl9jb2x1bW5Db3VudCk7XG5cbiAgICB0aGlzLmRhdGFSb3dzJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGRjID0+ICEhZGMpLFxuICAgICAgICAgIHN3aXRjaE1hcChkYyA9PiBkYy5kYXRhKVxuICAgICAgICApLFxuICAgICAgICBjb2x1bW5Db3VudCRcbiAgICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgbWFwKFxuICAgICAgICAoW2RhdGEsIGNvbHVtbnNdKSA9PiB0aGlzLmdyb3VwRm9yQ29sdW1ucyhkYXRhLCBjb2x1bW5zKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgTWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyXG4gICAgICAuc3RhcnQodGhpcy5kYXRhQ29udGV4dCQpXG4gICAgICAud2l0aFBhZ2luYXRvcihvZih0aGlzLm1hdFBhZ2luYXRvcikpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aWxlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl90aWxlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGlsZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl90aWxlVGVtcGxhdGUgfHwgdGhpcy50aWxlVGVtcGxhdGVRdWVyeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fdG9vbGJhclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xiYXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fdG9vbGJhclRlbXBsYXRlIHx8IHRoaXMudG9vbGJhclRlbXBsYXRlUXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogSURhdGFDb250ZXh0PGFueT4pIHtcbiAgICB0aGlzLmRhdGFDb250ZXh0JC5uZXh0KGRhdGEpO1xuXG4gICAgdGhpcy50b3RhbCQgPSBkYXRhLnRvdGFsLnBpcGUoXG4gICAgICBtYXAodG90YWwgPT4gdG90YWwgPyB0b3RhbCArICcnIDogJ+KInicpXG4gICAgKTtcblxuICAgIGlmIChpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQoZGF0YSkpIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gY29tYmluZUxhdGVzdChbZGF0YS5sb2FkaW5nLCBkYXRhLmhhc01vcmVEYXRhXSkucGlwZShcbiAgICAgICAgbWFwKChbbG9hZGluZywgaGFzTW9yZURhdGFdKSA9PiAhbG9hZGluZyAmJiBoYXNNb3JlRGF0YSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gb2YoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVNuYXBzaG90KCk6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250aW51YWJsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29sdW1uQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbHVtbkNvdW50Lm5leHQoY291bnQpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5Db3VudC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGluU2VsZWN0aW9uTW9kZShjdXJyZW50U2VsZWN0aW9uOiBhbnlbXSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHRoaXMuaW50ZXJhY3Rpb25Nb2RlID09PSAnc2VsZWN0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFNlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTbmFwc2hvdC5oYXNNb3JlRGF0YVNuYXBzaG90KSB7XG5cbiAgICAgIGlmICh0aGlzLmRhdGFTbmFwc2hvdC5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGFTbmFwc2hvdC5sb2FkTW9yZSgpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIGxvYWRlZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmxvYWROZXh0UXVldWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIGVudGl0eTogYW55KSA9PiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlciwgaXRlbXM6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydChzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgY29uc3QgZGMgPSB0aGlzLmRhdGFDb250ZXh0JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChkYykge1xuICAgICAgZGMuc29ydC5yZXBsYWNlU29ydHMoW3NvcnRdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvd1RpbGUodGlsZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRpbGUgJiYgKHRoaXMuaGlkZGVuRmllbGQgPyAhdGlsZVt0aGlzLmhpZGRlbkZpZWxkXSA6IHRydWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzY3JvbGxUb3AoKSB7XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCgwLCAnc21vb3RoJyk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwRm9yQ29sdW1ucyhub2RlczogYW55W10sIGNvbHVtbnM6IG51bWJlcik6IGFueVtdW10ge1xuXG4gICAgY29uc3Qgcm93czogYW55W11bXSA9IFtdO1xuXG4gICAgY29uc3Qgcm93Q291bnQgPSBub2Rlcy5sZW5ndGggLyBjb2x1bW5zO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd0NvdW50OyByb3dJbmRleCsrKSB7XG4gICAgICBjb25zdCByb3dTdGFydEluZGV4ID0gcm93SW5kZXggKiBjb2x1bW5zO1xuICAgICAgY29uc3Qgcm93ID0gbm9kZXMuc2xpY2Uocm93U3RhcnRJbmRleCwgcm93U3RhcnRJbmRleCArIGNvbHVtbnMpO1xuXG4gICAgICB3aGlsZSAocm93Lmxlbmd0aCA8IGNvbHVtbnMpIHtcbiAgICAgICAgcm93LnB1c2gobnVsbCk7IC8vIEZpbGwgdXAgcmVtYWluaW5nXG4gICAgICB9XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHByaXZhdGUgcmVzcG9uc2l2ZUNvbHVtbigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGxldCBzdGFydCA9IDE7XG4gICAgdGhpcy5zaXplVG9Db2x1bW5zLmZvckVhY2goKGNvbHMsIG1xQWxpYXMpID0+IHtcbiAgICAgIGlmICh0aGlzLm1lZGlhT2JzZXJ2ZXIuaXNBY3RpdmUobXFBbGlhcykpIHtcbiAgICAgICAgc3RhcnQgPSBjb2xzO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm1lZGlhT2JzZXJ2ZXIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIGZpbHRlcihjaGFuZ2VzID0+IGNoYW5nZXMubGVuZ3RoID4gMCksXG4gICAgICBtYXAoY2hhbmdlcyA9PiB0aGlzLnNpemVUb0NvbHVtbnMuZ2V0KGNoYW5nZXNbMF0ubXFBbGlhcykpLFxuICAgICAgZGVib3VuY2VUaW1lKDE1MCksXG4gICAgICBzdGFydFdpdGgoc3RhcnQpXG4gICAgKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJzY3JvbGwtZml4XCIgZnhGaWxsPlxuXG4gIDwhLS0gR3JpZCBCcm93c2VyIC0tPlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4XG4gICAgICAgY2xhc3M9XCJzY3JvbGwtZml4IGVsZGVyLWdyaWQtY29udGFpbmVyXCJcbiAgICAgICAqbmdJZj1cImRhdGFDb250ZXh0JCB8IGFzeW5jIGFzIGRhdGFcIlxuICAgICAgIFtjbGFzcy5lbGRlci1tYXQtdGFibGUtY29udGFpbmVyXT1cIiFlbWJlZGRlZFwiXG4gICAgICAgW2NsYXNzLm1hdC1lbGV2YXRpb24tejVdPVwiZmxvYXRcIlxuICAgICAgIFtjbGFzcy5lbGRlci1tYXQtdGFibGUtZmxhdF09XCIhZW1iZWRkZWQgJiYgIWZsb2F0XCJcblxuICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXT1cImRhdGFcIiAjZGF0YVNlbGVjdGlvbj1cImVsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25cIlxuICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uTW9kZWxdPVwic2VsZWN0aW9uTW9kZWxcIlxuICA+XG5cbiAgICA8IS0tIFRvb2xiYXIgUm93IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ0b29sYmFyVmlzaWJsZVwiXG4gICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZsZXg9XCJub25lXCIgY2xhc3M9XCJlbGRlci1ncmlkLXRvb2xiYXJcIj5cblxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD1cIm5vbmVcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXJpZ2h0OiA4cHhcIiAqbmdJZj1cInNlbGVjdGlvblZpc2libGVcIj5cbiAgICAgICAgPGVsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3ggZnhGbGV4PVwibm9uZVwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxMnB4XCI+PC9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gVG9vbGJhciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyVGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGVsZGVyLXNpbmdsZS1zb3J0ICpuZ0lmPVwiYXZhaWxhYmxlU29ydHMgJiYgYXZhaWxhYmxlU29ydHMubGVuZ3RoID4gMCAmJiBkYXRhLnNvcnQuc29ydHMgfCBhc3luYyBhcyBzb3J0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgZnhGbGV4PVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZVNvcnRzXT1cImF2YWlsYWJsZVNvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRpb25QcmVmaXhdPVwic29ydFRyYW5zbGF0aW9uUHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJzb3J0c1swXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNvcnRDaGFuZ2UpPVwidXBkYXRlU29ydCgkZXZlbnQpXCI+XG4gICAgICA8L2VsZGVyLXNpbmdsZS1zb3J0PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b29sYmFyVmlzaWJsZVwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8ZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvciBmeEZsZXg9XCJub25lXCIgW2RhdGFDb250ZXh0XT1cImRhdGFcIj5cbiAgICA8L2VsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3I+XG5cbiAgICA8IS0tIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJ0cnVlXCIgLS0+XG4gICAgPCEtLSBjZGtEcm9wTGlzdCAtLT5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICBjbGFzcz1cImVsZGVyLWdyaWQtYnJvd3NlclwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4XG4gICAgICBpZD1cImRvY3VtZW50cy1jb250YWluZXJcIlxuICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgW21pbkJ1ZmZlclB4XT1cIml0ZW1IZWlnaHQgKiAyXCJcbiAgICAgIFttYXhCdWZmZXJQeF09XCJpdGVtSGVpZ2h0ICogM1wiXG4gICAgICAjdmlydHVhbFNjcm9sbFZpZXdQb3J0XG4gICAgICBpbmZpbml0ZVNjcm9sbFxuICAgICAgW2V2ZW50VGhyb3R0bGVdPVwiMjAwXCJcbiAgICAgIFtvZmZzZXRGYWN0b3JdPVwiMlwiXG4gICAgICBbaWdub3JlU2Nyb2xsRXZlbnRdPVwiZGF0YS5sb2FkaW5nIHwgYXN5bmNcIlxuICAgICAgW2NvbnRhaW5lcklkXT1cIidkb2N1bWVudHMtY29udGFpbmVyJ1wiIFtsaXN0ZW5Ub0hvc3RdPVwiZmFsc2VcIlxuICAgICAgKGNsb3NlVG9FbmQpPVwicmVxdWVzdE1vcmVEYXRhWm9uZWQoJGV2ZW50KVwiPlxuXG4gICAgICA8IS0tIChzY3JvbGxpbmcpPVwib25TY3JvbGxpbmcoJGV2ZW50KVwiIC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhUm93cyQ7IHRyYWNrQnk6IHRyYWNrQnlJbmRleDsgdGVtcGxhdGVDYWNoZVNpemU6IDUwXCJcbiAgICAgICAgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtcm93XCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpbGUgb2Ygcm93OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cblxuICAgICAgICAgIDwhLS0gVGlsZSBDZWxsIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VGlsZSh0aWxlKVwiIGNsYXNzPVwiZWxkZXItZ3JpZC10aWxlXCI+XG4gICAgICAgICAgICA8IS0tIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCIgW2Nka0RyYWdEYXRhXT1cInRpbGVcIiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRpbGUtcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtY29udGVudFwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayh0aWxlKVwiXG4gICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljayh0aWxlKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlVGVtcGxhdGUgfHwgc2ltcGxlVGlsZVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aWxlfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIE92ZXJsYXkgKFNlbGVjdGlvbikgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25WaXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiB8IGFzeW5jIGFzIHNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWdyaWQtdGlsZS1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1ncmlkLXRpbGUtb3ZlcmxheS1oaWRkZW5dPVwiIWluU2VsZWN0aW9uTW9kZShzZWxlY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1ncmlkLXRpbGUtb3ZlcmxheS12aXNpYmxlXT1cImluU2VsZWN0aW9uTW9kZShzZWxlY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1jbGljay10aHJvdWdoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZWwudG9nZ2xlKHRpbGUpXCIgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWdyaWQtdGlsZS1jaGVja1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItc2VsZWN0ZWRdPVwiKHNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24odGlsZSkgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3soc2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbih0aWxlKSB8IGFzeW5jKSA/ICdjaGVja19jaXJjbGUnIDogJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dUaWxlKHRpbGUpXCIgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtaGlkZGVuXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2Rpdj5cblxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG5cbiAgICA8bWF0LXByb2dyZXNzLWJhciBmeEZsZXg9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCIoZGF0YT8ubG9hZGluZyB8IGFzeW5jKSA/ICdpbmRldGVybWluYXRlJyA6ICdkZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIoZGF0YSAmJiAoZGF0YS5zdGF0dXMgfCBhc3luYyk/Lmhhc0Vycm9yKSA/ICd3YXJuJyA6ICdwcmltYXJ5J1wiPlxuICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlbGRlci1ncmlkLWZvb3RlclwiICpuZ0lmPVwiZm9vdGVyVmlzaWJsZVwiXG4gICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4RmxleD1cIm5vbmVcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiXG4gICAgICAgICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDEwcHhcIj5cblxuICAgICAgPCEtLSBDb250aW51YWJsZSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NvbnRpbnVhYmxlXCI+XG4gICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1jYXB0aW9uIG5vc2VsZWN0XCIgc3R5bGU9XCJjb2xvcjogZ3JheVwiPlxuICAgICAgICAgICAge3soZGF0YVNuYXBzaG90Py5kYXRhIHwgYXN5bmMpPy5sZW5ndGh9fSAvIHt7dG90YWwkIHwgYXN5bmN9fVxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkxvYWRNb3JlJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGFTbmFwc2hvdC5sb2FkTW9yZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIFBhZ2VkIC0tPlxuICAgICAgPG1hdC1wYWdpbmF0b3IgI21hdFBhZ2luYXRvciAqbmdJZj1cImlzQWN0aXZlUGFnZWQgJiYgKGRhdGFBY3RpdmVQYWdlZC5wYWdlIHwgYXN5bmMpIGFzIHBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgZnhGbGV4PVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFDb250ZXh0Py50b3RhbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZT8uaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2U/LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIj5cbiAgICAgIDwvbWF0LXBhZ2luYXRvcj5cblxuICAgICAgPCEtLSBMb2NhbCBTb3VyY2UgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWN0aXZlUGFnZWQgJiYgIWlzQ29udGludWFibGVcIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICAgICAgICB7eyhkYXRhU25hcHNob3Q/LmRhdGEgfCBhc3luYyk/Lmxlbmd0aH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cblxuXG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVGlsZVRlbXBsYXRlIGxldC10aWxlPlxuICA8ZGl2ICpuZ0lmPVwidGlsZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4IGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWVcIj5cbiAgICA8cCBjbGFzcz1cIm5vc2VsZWN0XCI+VGlsZToge3t0aWxlfX08L3A+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9ncmlkL2VsZGVyLWdyaWQvZWxkZXItZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9ncmlkL2VsZGVyLWdyaWQvZWxkZXItZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUF3Qyx3QkFBd0IsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBR2xJLE9BQU8sRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0scUVB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O2dCQUlDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFJQyxxQkFBcUI7c0JBRDNCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUkzQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLE9BQU87c0JBRGIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixTQUFTO3VCQUFDLFlBQVk7Z0JBSWhCLG9CQUFvQjtzQkFEMUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkE4RC9ELFlBQVk7c0JBRHRCLEtBQUs7Z0JBVUssZUFBZTtzQkFEekIsS0FBSztnQkFVSyxJQUFJO3NCQURkLEtBQUs7Z0JBc0JLLFdBQVc7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SURhdGFDb250ZXh0LCBJRGF0YUNvbnRleHRDb250aW51YWJsZSwgaXNDb250aW51YWJsZURhdGFDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0JztcbmltcG9ydCB7Q2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0fSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7U2VsZWN0aW9uTW9kZWx9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTb3J0fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9zb3J0JztcbmltcG9ydCB7RUxERVJfREFUQV9WSUVXfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldyc7XG5pbXBvcnQge0VsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldy1iYXNlJztcbmltcG9ydCB7TWF0UGFnaW5hdG9yfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtNYXRUYWJsZURhdGFDb250ZXh0QmluZGluZ0J1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9tYXQtdGFibGUtZGF0YS1jb250ZXh0LWJpbmRpbmcnO1xuaW1wb3J0IHtFbGRlckRhdGFWaWV3T3B0aW9uc1Byb3ZpZGVyfSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldy1vcHRpb25zLXByb3ZpZGVyJztcbmltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50c30gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyR3JpZFRpbGVdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkVGlsZURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgcHJvamVjdHMgbWFya2VkIGNvbnRlbnQgaW50byBhIHRvb2xiYXIuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW2VsZGVyR3JpZFRvb2xiYXJdJ30pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkVG9vbGJhckRpcmVjdGl2ZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxkZXItZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyR3JpZENvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJHcmlkQ29tcG9uZW50IGV4dGVuZHMgRWxkZXJEYXRhVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9jb2x1bW5Db3VudCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig0KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNpemVUb0NvbHVtbnMgPSBuZXcgTWFwKFtcbiAgICBbQnJlYWtwb2ludHMuWFNtYWxsLCAxXSxcbiAgICBbQnJlYWtwb2ludHMuU21hbGwsIDJdLFxuICAgIFtCcmVha3BvaW50cy5NZWRpdW0sIDNdLFxuICAgIFtCcmVha3BvaW50cy5MYXJnZSwgNF0sXG4gICAgW0JyZWFrcG9pbnRzLlhMYXJnZSwgNV1cbiAgXSk7XG5cbiAgLyoqXG4gICAqIExvYWQgbmV4dCBjaHVuayBhZnRlciBjdXJyZW50IGlzIGRvbmVcbiAgICovXG4gIHByaXZhdGUgbG9hZE5leHRRdWV1ZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgZGF0YVJvd3MkOiBPYnNlcnZhYmxlPGFueVtdW10+O1xuXG4gIHB1YmxpYyBjYW5Mb2FkTW9yZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyB0b3RhbCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBAQ29udGVudENoaWxkKEVsZGVyR3JpZFRpbGVEaXJlY3RpdmUsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSlcbiAgcHVibGljIHRpbGVUZW1wbGF0ZVF1ZXJ5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIF90aWxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRvb2xiYXJWaXNpYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVmlzaWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1IZWlnaHQgPSAyNTA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlc3BvbnNpdmVDb2x1bW5Db3VudCA9IHRydWU7XG5cbiAgQFZpZXdDaGlsZCgndmlydHVhbFNjcm9sbFZpZXdQb3J0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsVmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXZhaWxhYmxlU29ydHM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNvcnRUcmFuc2xhdGlvblByZWZpeCA9ICdkb2N1bWVudHMuc29ydHMuJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGlkZGVuRmllbGQ6IHN0cmluZyA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciByZXF1aXJlZC4gSWQgaXMgYXV0b21hdGljYWxseSBwaWNrZWQgZnJvbSB0aGUgRGF0YVNvdXJjZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZEZpZWxkID0gJ2lkJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0aW9uVmlzaWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VTaXplT3B0aW9ucyA9IFszMCwgNTAsIDEwMCwgMTUwLCAyMDBdO1xuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcbiAgcHVibGljIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIEBDb250ZW50Q2hpbGQoRWxkZXJHcmlkVG9vbGJhckRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWV9KVxuICBwdWJsaWMgdG9vbGJhclRlbXBsYXRlUXVlcnk6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgX3Rvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PixcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBkYXRhVmlld09wdGlvbnNQcm92aWRlcjogRWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcixcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKHNlbGVjdGlvbk1vZGVsLCBkYXRhVmlld09wdGlvbnNQcm92aWRlcik7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZWN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGNvbnN0IGNvbHVtbkNvdW50JCA9IChcbiAgICAgIHRoaXMucmVzcG9uc2l2ZUNvbHVtbkNvdW50XG4gICAgICAgID8gdGhpcy5yZXNwb25zaXZlQ29sdW1uKClcbiAgICAgICAgOiB0aGlzLl9jb2x1bW5Db3VudCk7XG5cbiAgICB0aGlzLmRhdGFSb3dzJCA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICBbXG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKGRjID0+ICEhZGMpLFxuICAgICAgICAgIHN3aXRjaE1hcChkYyA9PiBkYy5kYXRhKVxuICAgICAgICApLFxuICAgICAgICBjb2x1bW5Db3VudCRcbiAgICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgbWFwKFxuICAgICAgICAoW2RhdGEsIGNvbHVtbnNdKSA9PiB0aGlzLmdyb3VwRm9yQ29sdW1ucyhkYXRhLCBjb2x1bW5zKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgTWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyXG4gICAgICAuc3RhcnQodGhpcy5kYXRhQ29udGV4dCQpXG4gICAgICAud2l0aFBhZ2luYXRvcihvZih0aGlzLm1hdFBhZ2luYXRvcikpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0aWxlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl90aWxlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGlsZVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl90aWxlVGVtcGxhdGUgfHwgdGhpcy50aWxlVGVtcGxhdGVRdWVyeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5fdG9vbGJhclRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xiYXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fdG9vbGJhclRlbXBsYXRlIHx8IHRoaXMudG9vbGJhclRlbXBsYXRlUXVlcnk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogSURhdGFDb250ZXh0PGFueT4pIHtcbiAgICB0aGlzLmRhdGFDb250ZXh0JC5uZXh0KGRhdGEpO1xuXG4gICAgdGhpcy50b3RhbCQgPSBkYXRhLnRvdGFsLnBpcGUoXG4gICAgICBtYXAodG90YWwgPT4gdG90YWwgPyB0b3RhbCArICcnIDogJ+KInicpXG4gICAgKTtcblxuICAgIGlmIChpc0NvbnRpbnVhYmxlRGF0YUNvbnRleHQoZGF0YSkpIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gY29tYmluZUxhdGVzdChbZGF0YS5sb2FkaW5nLCBkYXRhLmhhc01vcmVEYXRhXSkucGlwZShcbiAgICAgICAgbWFwKChbbG9hZGluZywgaGFzTW9yZURhdGFdKSA9PiAhbG9hZGluZyAmJiBoYXNNb3JlRGF0YSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gb2YoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVNuYXBzaG90KCk6IElEYXRhQ29udGV4dENvbnRpbnVhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250aW51YWJsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY29sdW1uQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX2NvbHVtbkNvdW50Lm5leHQoY291bnQpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5Db3VudC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGluU2VsZWN0aW9uTW9kZShjdXJyZW50U2VsZWN0aW9uOiBhbnlbXSk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHRoaXMuaW50ZXJhY3Rpb25Nb2RlID09PSAnc2VsZWN0aW9uJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFNlbGVjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTbmFwc2hvdC5oYXNNb3JlRGF0YVNuYXBzaG90KSB7XG5cbiAgICAgIGlmICh0aGlzLmRhdGFTbmFwc2hvdC5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGFTbmFwc2hvdC5sb2FkTW9yZSgpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIGxvYWRlZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmxvYWROZXh0UXVldWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJhY2tCeUZuKCk6IFRyYWNrQnlGdW5jdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIGVudGl0eTogYW55KSA9PiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlciwgaXRlbXM6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU29ydChzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgY29uc3QgZGMgPSB0aGlzLmRhdGFDb250ZXh0JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChkYykge1xuICAgICAgZGMuc29ydC5yZXBsYWNlU29ydHMoW3NvcnRdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvd1RpbGUodGlsZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRpbGUgJiYgKHRoaXMuaGlkZGVuRmllbGQgPyAhdGlsZVt0aGlzLmhpZGRlbkZpZWxkXSA6IHRydWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzY3JvbGxUb3AoKSB7XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCgwLCAnc21vb3RoJyk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwRm9yQ29sdW1ucyhub2RlczogYW55W10sIGNvbHVtbnM6IG51bWJlcik6IGFueVtdW10ge1xuXG4gICAgY29uc3Qgcm93czogYW55W11bXSA9IFtdO1xuXG4gICAgY29uc3Qgcm93Q291bnQgPSBub2Rlcy5sZW5ndGggLyBjb2x1bW5zO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd0NvdW50OyByb3dJbmRleCsrKSB7XG4gICAgICBjb25zdCByb3dTdGFydEluZGV4ID0gcm93SW5kZXggKiBjb2x1bW5zO1xuICAgICAgY29uc3Qgcm93ID0gbm9kZXMuc2xpY2Uocm93U3RhcnRJbmRleCwgcm93U3RhcnRJbmRleCArIGNvbHVtbnMpO1xuXG4gICAgICB3aGlsZSAocm93Lmxlbmd0aCA8IGNvbHVtbnMpIHtcbiAgICAgICAgcm93LnB1c2gobnVsbCk7IC8vIEZpbGwgdXAgcmVtYWluaW5nXG4gICAgICB9XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHByaXZhdGUgcmVzcG9uc2l2ZUNvbHVtbigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRzID0gQXJyYXkuZnJvbSh0aGlzLnNpemVUb0NvbHVtbnMua2V5cygpKTtcbiAgICByZXR1cm4gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShicmVha3BvaW50cykucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICBsZXQgYWN0aXZlU2l6ZSA9IEJyZWFrcG9pbnRzLk1lZGl1bTtcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5icmVha3BvaW50c1txdWVyeV0pIHtcbiAgICAgICAgICAgIGFjdGl2ZVNpemUgPSBxdWVyeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zaXplVG9Db2x1bW5zLmdldChhY3RpdmVTaXplKTtcbiAgICAgIH0pLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBzdGFydFdpdGgodGhpcy5hY3RpdmVDb2x1bW5Db3VudCgpKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICBsZXQgY29sdW1uQ291bnQgPSAxO1xuICAgIHRoaXMuc2l6ZVRvQ29sdW1ucy5mb3JFYWNoKChjb2xzLCBtcUFsaWFzKSA9PiB7XG4gICAgICBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKG1xQWxpYXMpKSB7XG4gICAgICAgIGNvbHVtbkNvdW50ID0gY29scztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY29sdW1uQ291bnQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIGZ1bGxcIj5cblxuICA8IS0tIEdyaWQgQnJvd3NlciAtLT5cbiAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZmxleCBzY3JvbGwtZml4IGVsZGVyLWdyaWQtY29udGFpbmVyXCJcbiAgICAgICAqbmdJZj1cImRhdGFDb250ZXh0JCB8IGFzeW5jIGFzIGRhdGFcIlxuICAgICAgIFtjbGFzcy5lbGRlci1tYXQtdGFibGUtY29udGFpbmVyXT1cIiFlbWJlZGRlZFwiXG4gICAgICAgW2NsYXNzLm1hdC1lbGV2YXRpb24tejVdPVwiZmxvYXRcIlxuICAgICAgIFtjbGFzcy5lbGRlci1tYXQtdGFibGUtZmxhdF09XCIhZW1iZWRkZWQgJiYgIWZsb2F0XCJcblxuICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXT1cImRhdGFcIiAjZGF0YVNlbGVjdGlvbj1cImVsZGVyRGF0YUNvbnRleHRTZWxlY3Rpb25cIlxuICAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uTW9kZWxdPVwic2VsZWN0aW9uTW9kZWxcIlxuICA+XG5cbiAgICA8IS0tIFRvb2xiYXIgUm93IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJ0b29sYmFyVmlzaWJsZVwiXG4gICAgICAgICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGZsZXgtbm9uZSBlbGRlci1ncmlkLXRvb2xiYXJcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb2wgZmxleC1ub25lXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy1yaWdodDogOHB4XCIgKm5nSWY9XCJzZWxlY3Rpb25WaXNpYmxlXCI+XG4gICAgICAgIDxlbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94IGNsYXNzPVwiZmxleC1ub25lXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEycHhcIj48L2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUb29sYmFyIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xiYXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHRoaXN9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZWxkZXItc2luZ2xlLXNvcnQgKm5nSWY9XCJhdmFpbGFibGVTb3J0cyAmJiBhdmFpbGFibGVTb3J0cy5sZW5ndGggPiAwICYmIGRhdGEuc29ydC5zb3J0cyB8IGFzeW5jIGFzIHNvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2F2YWlsYWJsZVNvcnRzXT1cImF2YWlsYWJsZVNvcnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRpb25QcmVmaXhdPVwic29ydFRyYW5zbGF0aW9uUHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJzb3J0c1swXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNvcnRDaGFuZ2UpPVwidXBkYXRlU29ydCgkZXZlbnQpXCI+XG4gICAgICA8L2VsZGVyLXNpbmdsZS1zb3J0PlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9vbGJhclZpc2libGVcIj48L21hdC1kaXZpZGVyPlxuXG4gICAgPGVsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3IgY2xhc3M9XCJmbGV4LW5vbmVcIiBbZGF0YUNvbnRleHRdPVwiZGF0YVwiPlxuICAgIDwvZWxkZXItZGF0YS1jb250ZXh0LXN0YXRlLWluZGljYXRvcj5cblxuICAgIDwhLS0gW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cInRydWVcIiAtLT5cbiAgICA8IS0tIGNka0Ryb3BMaXN0IC0tPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgIGNsYXNzPVwibGF5b3V0LWNvbCBmbGV4IGVsZGVyLWdyaWQtYnJvd3NlclwiXG4gICAgICBpZD1cImRvY3VtZW50cy1jb250YWluZXJcIlxuICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgW21pbkJ1ZmZlclB4XT1cIml0ZW1IZWlnaHQgKiAyXCJcbiAgICAgIFttYXhCdWZmZXJQeF09XCJpdGVtSGVpZ2h0ICogM1wiXG4gICAgICAjdmlydHVhbFNjcm9sbFZpZXdQb3J0XG4gICAgICBpbmZpbml0ZVNjcm9sbFxuICAgICAgW2V2ZW50VGhyb3R0bGVdPVwiMjAwXCJcbiAgICAgIFtvZmZzZXRGYWN0b3JdPVwiMlwiXG4gICAgICBbaWdub3JlU2Nyb2xsRXZlbnRdPVwiZGF0YS5sb2FkaW5nIHwgYXN5bmNcIlxuICAgICAgW2NvbnRhaW5lcklkXT1cIidkb2N1bWVudHMtY29udGFpbmVyJ1wiIFtsaXN0ZW5Ub0hvc3RdPVwiZmFsc2VcIlxuICAgICAgKGNsb3NlVG9FbmQpPVwicmVxdWVzdE1vcmVEYXRhWm9uZWQoJGV2ZW50KVwiPlxuXG4gICAgICA8IS0tIChzY3JvbGxpbmcpPVwib25TY3JvbGxpbmcoJGV2ZW50KVwiIC0tPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhUm93cyQ7IHRyYWNrQnk6IHRyYWNrQnlJbmRleDsgdGVtcGxhdGVDYWNoZVNpemU6IDUwXCJcbiAgICAgICAgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtcm93XCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpbGUgb2Ygcm93OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cblxuICAgICAgICAgIDwhLS0gVGlsZSBDZWxsIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VGlsZSh0aWxlKVwiIGNsYXNzPVwiZWxkZXItZ3JpZC10aWxlXCI+XG4gICAgICAgICAgICA8IS0tIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCIgW2Nka0RyYWdEYXRhXT1cInRpbGVcIiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRpbGUtcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtY29udGVudFwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayh0aWxlKVwiXG4gICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljayh0aWxlKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWxlVGVtcGxhdGUgfHwgc2ltcGxlVGlsZVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aWxlfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIE92ZXJsYXkgKFNlbGVjdGlvbikgLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb25WaXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiB8IGFzeW5jIGFzIHNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWdyaWQtdGlsZS1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1ncmlkLXRpbGUtb3ZlcmxheS1oaWRkZW5dPVwiIWluU2VsZWN0aW9uTW9kZShzZWxlY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1ncmlkLXRpbGUtb3ZlcmxheS12aXNpYmxlXT1cImluU2VsZWN0aW9uTW9kZShzZWxlY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci1jbGljay10aHJvdWdoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uTW9kZWwudG9nZ2xlKHRpbGUpXCIgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLWdyaWQtdGlsZS1jaGVja1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItc2VsZWN0ZWRdPVwiKHNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24odGlsZSkgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3soc2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbih0aWxlKSB8IGFzeW5jKSA/ICdjaGVja19jaXJjbGUnIDogJ3JhZGlvX2J1dHRvbl91bmNoZWNrZWQnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dUaWxlKHRpbGUpXCIgY2xhc3M9XCJlbGRlci1ncmlkLXRpbGUtaGlkZGVuXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2Rpdj5cblxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG5cbiAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiKGRhdGE/LmxvYWRpbmcgfCBhc3luYykgPyAnaW5kZXRlcm1pbmF0ZScgOiAnZGV0ZXJtaW5hdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiKGRhdGEgJiYgKGRhdGEuc3RhdHVzIHwgYXN5bmMpPy5oYXNFcnJvcikgPyAnd2FybicgOiAncHJpbWFyeSdcIj5cbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XG5cbiAgICA8IS0tIEZvb3RlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1lbmQtY2VudGVyIGdhcC1tZCBmbGV4LW5vbmUgZWxkZXItZ3JpZC1mb290ZXJcIlxuICAgICAgICAgKm5nSWY9XCJmb290ZXJWaXNpYmxlXCJcbiAgICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDogMTJweFwiPlxuXG4gICAgICA8IS0tIENvbnRpbnVhYmxlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ29udGludWFibGVcIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICAgICAgICB7eyhkYXRhU25hcHNob3Q/LmRhdGEgfCBhc3luYyk/Lmxlbmd0aH19IC8ge3t0b3RhbCQgfCBhc3luY319XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YVNuYXBzaG90LmxvYWRNb3JlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUGFnZWQgLS0+XG4gICAgICA8bWF0LXBhZ2luYXRvciAjbWF0UGFnaW5hdG9yICpuZ0lmPVwiaXNBY3RpdmVQYWdlZCAmJiAoZGF0YUFjdGl2ZVBhZ2VkLnBhZ2UgfCBhc3luYykgYXMgcGFnZVwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFDb250ZXh0Py50b3RhbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZT8uaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2U/LnNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIj5cbiAgICAgIDwvbWF0LXBhZ2luYXRvcj5cblxuICAgICAgPCEtLSBMb2NhbCBTb3VyY2UgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWN0aXZlUGFnZWQgJiYgIWlzQ29udGludWFibGVcIj5cbiAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICAgICAgICB7eyhkYXRhU25hcHNob3Q/LmRhdGEgfCBhc3luYyk/Lmxlbmd0aH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cblxuXG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVGlsZVRlbXBsYXRlIGxldC10aWxlPlxuICA8ZGl2ICpuZ0lmPVwidGlsZVwiIGNsYXNzPVwibGF5b3V0LWNvbCBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXhcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZVwiPlxuICAgIDxwIGNsYXNzPVwibm9zZWxlY3RcIj5UaWxlOiB7e3RpbGV9fTwvcD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19