@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -2,69 +2,11 @@ import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, signal } from '@angular/core';
3
3
  import { TranslateModule } from '@ngx-translate/core';
4
4
  import { DEFAULT_LOADING_STATE_BLOCK_DELAY_MS, DEFAULT_LOADING_STATE_ID_PREFIX, DEFAULT_LOADING_STATE_FULLSCREEN_Z_INDEX, DEFAULT_LOADING_STATE_UNBLOCK_DELAY_MS } from '../../core/constants/loading-state.const';
5
- import { IconRendererComponent } from '../../core/components/icon-renderer/icon-renderer.component';
6
5
  import { nextSequentialId } from '../../core/utils/id.util';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@angular/common";
9
8
  import * as i2 from "@ngx-translate/core";
10
9
  export class LoadingStateComponent {
11
- static LOGO_SVG = `
12
- <svg
13
- viewBox="0 0 348 613"
14
- fill="none"
15
- xmlns="http://www.w3.org/2000/svg"
16
- >
17
- <g filter="url(#sdcLoadingLogoShadow)">
18
- <path
19
- d="M174.719 518.932L258.161 439.782C264.546 433.762 269.614 426.603 273.072 418.719C276.53 410.834 278.31 402.378 278.31 393.838C278.31 385.298 276.53 376.843 273.072 368.958C269.614 361.073 264.546 353.915 258.161 347.895L174.719 269.199C168.45 263.304 163.474 256.289 160.077 248.56C156.681 240.83 154.933 232.539 154.933 224.165C154.933 215.792 156.681 207.501 160.077 199.771C163.474 192.042 168.45 185.027 174.719 179.132L303.718 301.496C329.517 326.089 344 359.371 344 394.066C344 428.76 329.517 462.043 303.718 486.635L174.719 609C168.45 603.105 163.474 596.09 160.077 588.36C156.681 580.631 154.933 572.34 154.933 563.966C154.933 555.592 156.681 547.301 160.077 539.572C163.474 531.842 168.45 524.828 174.719 518.932ZM173.76 94.0677L90.3189 173.218C83.9334 179.238 78.8659 186.397 75.408 194.281C71.95 202.166 70.1698 210.622 70.1698 219.162C70.1698 227.702 71.95 236.157 75.408 244.042C78.8659 251.927 83.9334 259.085 90.3189 265.105L173.76 344.256C180.03 350.151 185.006 357.166 188.402 364.895C191.798 372.625 193.547 380.916 193.547 389.289C193.547 397.663 191.798 405.954 188.402 413.684C185.006 421.413 180.03 428.428 173.76 434.323L44.2823 311.504C18.4832 286.911 4 253.629 4 218.934C4 184.24 18.4832 150.957 44.2823 126.365L173.76 4C186.213 16.0129 193.192 32.1861 193.192 49.0338C193.192 65.8815 186.213 82.0547 173.76 94.0677Z"
20
- fill="white"
21
- />
22
- </g>
23
- <defs>
24
- <filter
25
- id="sdcLoadingLogoShadow"
26
- x="0"
27
- y="0"
28
- width="348"
29
- height="613"
30
- filterUnits="userSpaceOnUse"
31
- color-interpolation-filters="sRGB"
32
- >
33
- <feFlood
34
- flood-opacity="0"
35
- result="BackgroundImageFix"
36
- />
37
- <feColorMatrix
38
- in="SourceAlpha"
39
- type="matrix"
40
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
41
- result="hardAlpha"
42
- />
43
- <feOffset />
44
- <feGaussianBlur stdDeviation="2" />
45
- <feComposite
46
- in2="hardAlpha"
47
- operator="out"
48
- />
49
- <feColorMatrix
50
- type="matrix"
51
- values="0 0 0 0 0.418936 0 0 0 0 1 0 0 0 0 0.930272 0 0 0 0.35 0"
52
- />
53
- <feBlend
54
- mode="normal"
55
- in2="BackgroundImageFix"
56
- result="effect1_dropShadow"
57
- />
58
- <feBlend
59
- mode="normal"
60
- in="SourceGraphic"
61
- in2="effect1_dropShadow"
62
- result="shape"
63
- />
64
- </filter>
65
- </defs>
66
- </svg>
67
- `.trim();
68
10
  contents = null;
69
11
  indicator = 'dots';
70
12
  id = nextSequentialId(DEFAULT_LOADING_STATE_ID_PREFIX);
@@ -88,7 +30,6 @@ export class LoadingStateComponent {
88
30
  return this._blocking();
89
31
  }
90
32
  fullscreenZIndex = DEFAULT_LOADING_STATE_FULLSCREEN_Z_INDEX;
91
- logoSvg = LoadingStateComponent.LOGO_SVG;
92
33
  _loading = signal(false);
93
34
  _blocking = signal(false);
94
35
  blockTimeoutId;
@@ -126,11 +67,11 @@ export class LoadingStateComponent {
126
67
  }
127
68
  }
128
69
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
129
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadingStateComponent, isStandalone: true, selector: "sdc-loading-state", inputs: { indicator: "indicator", id: "id", blockWindow: "blockWindow", blockDelayMs: "blockDelayMs", unblockDelayMs: "unblockDelayMs", loading: "loading" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-wrap\">\n <sdc-icon-renderer\n class=\"sdc-loading-state__logo-icon\"\n [icon]=\"logoSvg\"\n iconType=\"svg\"\n ></sdc-icon-renderer>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:calc(var(--sdc-loading-logo-size, 64px) * .68);height:calc(var(--sdc-loading-logo-size, 64px) * .68);line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon .sdc-icon-renderer--svg{width:100%!important;height:100%!important}:host ::ng-deep .sdc-loading-state__logo-icon svg{display:block;width:100%;height:100%}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LoadingStateComponent, isStandalone: true, selector: "sdc-loading-state", inputs: { indicator: "indicator", id: "id", blockWindow: "blockWindow", blockDelayMs: "blockDelayMs", unblockDelayMs: "unblockDelayMs", loading: "loading" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <svg\n class=\"sdc-loading-state__logo-svg\"\n viewBox=\"0 0 348 613\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#sdc-loading-senior-shadow)\">\n <path\n fill=\"white\"\n d=\"M174.719 518.932L258.161 439.782\n C264.546 433.762 269.614 426.603 273.072 418.719\n C276.53 410.834 278.31 402.378 278.31 393.838\n C278.31 385.298 276.53 376.843 273.072 368.958\n C269.614 361.073 264.546 353.915 258.161 347.895\n L174.719 269.199\n C168.45 263.304 163.474 256.289 160.077 248.56\n C156.681 240.83 154.933 232.539 154.933 224.165\n C154.933 215.792 156.681 207.501 160.077 199.771\n C163.474 192.042 168.45 185.027 174.719 179.132\n L303.718 301.496\n C329.517 326.089 344 359.371 344 394.066\n C344 428.76 329.517 462.043 303.718 486.635\n L174.719 609\n C168.45 603.105 163.474 596.09 160.077 588.36\n C156.681 580.631 154.933 572.34 154.933 563.966\n C154.933 555.592 156.681 547.301 160.077 539.572\n C163.474 531.842 168.45 524.828 174.719 518.932Z\n M173.76 94.0677L90.3189 173.218\n C83.9334 179.238 78.8659 186.397 75.408 194.281\n C71.95 202.166 70.1698 210.622 70.1698 219.162\n C70.1698 227.702 71.95 236.157 75.408 244.042\n C78.8659 251.927 83.9334 259.085 90.3189 265.105\n L173.76 344.256\n C180.03 350.151 185.006 357.166 188.402 364.895\n C191.798 372.625 193.547 380.916 193.547 389.289\n C193.547 397.663 191.798 405.954 188.402 413.684\n C185.006 421.413 180.03 428.428 173.76 434.323\n L44.2823 311.504\n C18.4832 286.911 4 253.629 4 218.934\n C4 184.24 18.4832 150.957 44.2823 126.365\n L173.76 4\n C186.213 16.0129 193.192 32.1861 193.192 49.0338\n C193.192 65.8815 186.213 82.0547 173.76 94.0677Z\"\n />\n </g>\n <defs>\n <filter\n id=\"sdc-loading-senior-shadow\"\n x=\"0\" y=\"0\" width=\"348\" height=\"613\"\n filterUnits=\"userSpaceOnUse\"\n color-interpolation-filters=\"sRGB\"\n >\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix\n in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset/><feGaussianBlur stdDeviation=\"2\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.418936 0 0 0 0 1 0 0 0 0 0.930272 0 0 0 0.35 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\"/>\n </filter>\n </defs>\n </svg>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-svg{display:block;flex-shrink:0;height:calc(var(--sdc-loading-logo-size, 64px) * .68);width:calc(var(--sdc-loading-logo-size, 64px) * .68)}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
130
71
  }
131
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LoadingStateComponent, decorators: [{
132
73
  type: Component,
133
- args: [{ selector: 'sdc-loading-state', standalone: true, imports: [CommonModule, IconRendererComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <span class=\"sdc-loading-state__logo-icon-wrap\">\n <sdc-icon-renderer\n class=\"sdc-loading-state__logo-icon\"\n [icon]=\"logoSvg\"\n iconType=\"svg\"\n ></sdc-icon-renderer>\n </span>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-icon-wrap{display:inline-flex;align-items:center;justify-content:center;width:calc(var(--sdc-loading-logo-size, 64px) * .68);height:calc(var(--sdc-loading-logo-size, 64px) * .68);line-height:0}.sdc-loading-state .sdc-loading-state__logo-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:0}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}:host ::ng-deep .sdc-loading-state__logo-icon>*{display:inline-flex;align-items:center;justify-content:center}:host ::ng-deep .sdc-loading-state__logo-icon .sdc-icon-renderer--svg{width:100%!important;height:100%!important}:host ::ng-deep .sdc-loading-state__logo-icon svg{display:block;width:100%;height:100%}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"] }]
74
+ args: [{ selector: 'sdc-loading-state', standalone: true, imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n [id]=\"id\"\n class=\"sdc-loading-state\"\n [ngClass]=\"{\n 'sdc-loading-state--loading': loading,\n 'sdc-loading-state--blocking': blocking,\n 'sdc-loading-state--fullscreen': blockWindow\n }\"\n>\n <div [id]=\"id + '-loader'\" class=\"sdc-loading-state__loader\">\n <div [id]=\"id + '-spinner'\" class=\"sdc-loading-state__spinner\">\n @switch (indicator) {\n @case ('logo') {\n <div class=\"sdc-loading-state__logo\" aria-hidden=\"true\">\n <svg\n class=\"sdc-loading-state__logo-svg\"\n viewBox=\"0 0 348 613\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#sdc-loading-senior-shadow)\">\n <path\n fill=\"white\"\n d=\"M174.719 518.932L258.161 439.782\n C264.546 433.762 269.614 426.603 273.072 418.719\n C276.53 410.834 278.31 402.378 278.31 393.838\n C278.31 385.298 276.53 376.843 273.072 368.958\n C269.614 361.073 264.546 353.915 258.161 347.895\n L174.719 269.199\n C168.45 263.304 163.474 256.289 160.077 248.56\n C156.681 240.83 154.933 232.539 154.933 224.165\n C154.933 215.792 156.681 207.501 160.077 199.771\n C163.474 192.042 168.45 185.027 174.719 179.132\n L303.718 301.496\n C329.517 326.089 344 359.371 344 394.066\n C344 428.76 329.517 462.043 303.718 486.635\n L174.719 609\n C168.45 603.105 163.474 596.09 160.077 588.36\n C156.681 580.631 154.933 572.34 154.933 563.966\n C154.933 555.592 156.681 547.301 160.077 539.572\n C163.474 531.842 168.45 524.828 174.719 518.932Z\n M173.76 94.0677L90.3189 173.218\n C83.9334 179.238 78.8659 186.397 75.408 194.281\n C71.95 202.166 70.1698 210.622 70.1698 219.162\n C70.1698 227.702 71.95 236.157 75.408 244.042\n C78.8659 251.927 83.9334 259.085 90.3189 265.105\n L173.76 344.256\n C180.03 350.151 185.006 357.166 188.402 364.895\n C191.798 372.625 193.547 380.916 193.547 389.289\n C193.547 397.663 191.798 405.954 188.402 413.684\n C185.006 421.413 180.03 428.428 173.76 434.323\n L44.2823 311.504\n C18.4832 286.911 4 253.629 4 218.934\n C4 184.24 18.4832 150.957 44.2823 126.365\n L173.76 4\n C186.213 16.0129 193.192 32.1861 193.192 49.0338\n C193.192 65.8815 186.213 82.0547 173.76 94.0677Z\"\n />\n </g>\n <defs>\n <filter\n id=\"sdc-loading-senior-shadow\"\n x=\"0\" y=\"0\" width=\"348\" height=\"613\"\n filterUnits=\"userSpaceOnUse\"\n color-interpolation-filters=\"sRGB\"\n >\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix\n in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset/><feGaussianBlur stdDeviation=\"2\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.418936 0 0 0 0 1 0 0 0 0 0.930272 0 0 0 0.35 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\"/>\n </filter>\n </defs>\n </svg>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @case ('spinner') {\n <div class=\"sdc-loading-state__spinner-indicator\" aria-hidden=\"true\"></div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n @default {\n <div class=\"sdc-loading-state__dots\" aria-hidden=\"true\">\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--1\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--2\"></div>\n <div class=\"sdc-loading-state__dot sdc-loading-state__dot--3\"></div>\n </div>\n <progress\n class=\"sdc-loading-state__progress sr-only\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n ></progress>\n }\n }\n </div>\n <div [id]=\"id + '-overlay'\" class=\"sdc-loading-state__overlay\"></div>\n </div>\n\n <div [id]=\"id + '-contents'\" class=\"sdc-loading-state__contents\">\n <ng-container *ngTemplateOutlet=\"contents || originalContent\"></ng-container>\n <ng-template #originalContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", styles: [".sdc-loading-state{position:relative;overflow:visible;border-radius:inherit;box-sizing:border-box;isolation:isolate}.sdc-loading-state .sdc-loading-state__loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out;z-index:2;pointer-events:none;overflow:visible}.sdc-loading-state .sdc-loading-state__overlay{position:absolute;inset:0;width:100%;height:100%;background-color:var(--sdc-loading-overlay-bg, #ffffff);opacity:var(--sdc-loading-overlay-opacity, .8);transition:opacity .2s ease-out;border-radius:inherit;box-sizing:border-box;z-index:0}.sdc-loading-state .sdc-loading-state__spinner{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;overflow:visible;padding:var(--sdc-loading-indicator-safe-space, 40px);box-sizing:border-box}.sdc-loading-state .sdc-loading-state__contents{position:relative;z-index:0;width:100%;box-sizing:border-box;border-radius:inherit;overflow:visible}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__loader,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__loader{visibility:visible;cursor:wait;pointer-events:auto}.sdc-loading-state.sdc-loading-state--loading>.sdc-loading-state__contents,.sdc-loading-state.sdc-loading-state--blocking>.sdc-loading-state__contents{position:relative;z-index:0!important}.sdc-loading-state.sdc-loading-state--fullscreen>.sdc-loading-state__loader{position:fixed;inset:0;z-index:var(--sdc-loading-fullscreen-z-index, 1005)}.sdc-loading-state.sdc-loading-state--blocking.sdc-loading-state--loading>.sdc-loading-state__loader{opacity:1}.sdc-loading-state .sdc-loading-state__spinner-indicator{width:var(--sdc-loading-spinner-size, 32px);height:var(--sdc-loading-spinner-size, 32px);border-radius:999px;border-width:var(--sdc-loading-spinner-stroke, 3px);border-style:solid;border-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));border-right-color:transparent;animation:sdc-spin .8s linear infinite}.sdc-loading-state .sdc-loading-state__logo{width:var(--sdc-loading-logo-size, 64px);height:var(--sdc-loading-logo-size, 64px);border-radius:50%;background-color:var(--sdc-loading-logo-bg, #00c89a);box-shadow:0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843));display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;animation:sdc-pulsar 1s infinite,sdc-scale 1s infinite;transform-origin:center}.sdc-loading-state .sdc-loading-state__logo-svg{display:block;flex-shrink:0;height:calc(var(--sdc-loading-logo-size, 64px) * .68);width:calc(var(--sdc-loading-logo-size, 64px) * .68)}.sdc-loading-state .sdc-loading-state__dots{display:inline-flex;align-items:center}.sdc-loading-state .sdc-loading-state__dot{width:var(--sdc-loading-dot-size, 10px);height:var(--sdc-loading-dot-size, 10px);border-radius:999px;background-color:var(--sdc-loading-indicator-color, var(--sdc-text-default, #333));display:inline-block;animation:sdc-bounce 1.2s infinite ease-out}.sdc-loading-state .sdc-loading-state__dot+.sdc-loading-state__dot{margin-left:var(--sdc-loading-dot-gap, 15px)}.sdc-loading-state .sdc-loading-state__dot--1{animation-delay:0ms}.sdc-loading-state .sdc-loading-state__dot--2{animation-delay:.1s}.sdc-loading-state .sdc-loading-state__dot--3{animation-delay:.2s}@keyframes sdc-spin{to{transform:rotate(360deg)}}@keyframes sdc-bounce{80%{transform:scale(1)}90%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes sdc-pulsar{0%{box-shadow:0 0 0 0 var(--sdc-loading-logo-shadow-color, rgba(0, 200, 154, .7019607843))}70%{box-shadow:0 0 0 40px #00c89a00}to{box-shadow:0 0 #00c89a00}}@keyframes sdc-scale{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}\n"] }]
134
75
  }], propDecorators: { indicator: [{
135
76
  type: Input
136
77
  }], id: [{
@@ -145,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
145
86
  type: Input,
146
87
  args: [{ required: true }]
147
88
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QyxzQ0FBc0MsRUFDdkMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUVwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVc1RCxNQUFNLE9BQU8scUJBQXFCO0lBQ3hCLE1BQU0sQ0FBVSxRQUFRLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0RsQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ0YsUUFBUSxHQUFnQyxJQUFJLENBQUM7SUFHN0MsU0FBUyxHQUEwQixNQUFNLENBQUM7SUFHMUMsRUFBRSxHQUFXLGdCQUFnQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFHL0QsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUdwQixZQUFZLEdBQUcsb0NBQW9DLENBQUM7SUFHcEQsY0FBYyxHQUFH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V0FBVztzQkFEakIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUssT0FBTztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9MT0FESU5HX1NUQVRFX0JMT0NLX0RFTEFZX01TLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfSURfUFJFRklYLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfRlVMTFNDUkVFTl9aX0lOREVYLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfVU5CTE9DS19ERUxBWV9NU1xufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9sb2FkaW5nLXN0YXRlLmNvbnN0JztcbmltcG9ydCB7IEljb25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9pY29uLXJlbmRlcmVyL2ljb24tcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgTG9hZGluZ1N0YXRlSW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9sb2FkaW5nLXN0YXRlLnR5cGUnO1xuaW1wb3J0IHsgbmV4dFNlcXVlbnRpYWxJZCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaWQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1sb2FkaW5nLXN0YXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvblJlbmRlcmVyQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9hZGluZy1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2FkaW5nLXN0YXRlLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIExvYWRpbmdTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExPR09fU1ZHID0gYFxuICAgIDxzdmdcbiAgICAgIHZpZXdCb3g9XCIwIDAgMzQ4IDYxM1wiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI3NkY0xvYWRpbmdMb2dvU2hhZG93KVwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTc0LjcxOSA1MTguOTMyTDI1OC4xNjEgNDM5Ljc4MkMyNjQuNTQ2IDQzMy43NjIgMjY5LjYxNCA0MjYuNjAzIDI3My4wNzIgNDE4LjcxOUMyNzYuNTMgNDEwLjgzNCAyNzguMzEgNDAyLjM3OCAyNzguMzEgMzkzLjgzOEMyNzguMzEgMzg1LjI5OCAyNzYuNTMgMzc2Ljg0MyAyNzMuMDcyIDM2OC45NThDMjY5LjYxNCAzNjEuMDczIDI2NC41NDYgMzUzLjkxNSAyNTguMTYxIDM0Ny44OTVMMTc0LjcxOSAyNjkuMTk5QzE2OC40NSAyNjMuMzA0IDE2My40NzQgMjU2LjI4OSAxNjAuMDc3IDI0OC41NkMxNTYuNjgxIDI0MC44MyAxNTQuOTMzIDIzMi41MzkgMTU0LjkzMyAyMjQuMTY1QzE1NC45MzMgMjE1Ljc5MiAxNTYuNjgxIDIwNy41MDEgMTYwLjA3NyAxOTkuNzcxQzE2My40NzQgMTkyLjA0MiAxNjguNDUgMTg1LjAyNyAxNzQuNzE5IDE3OS4xMzJMMzAzLjcxOCAzMDEuNDk2QzMyOS41MTcgMzI2LjA4OSAzNDQgMzU5LjM3MSAzNDQgMzk0LjA2NkMzNDQgNDI4Ljc2IDMyOS41MTcgNDYyLjA0MyAzMDMuNzE4IDQ4Ni42MzVMMTc0LjcxOSA2MDlDMTY4LjQ1IDYwMy4xMDUgMTYzLjQ3NCA1OTYuMDkgMTYwLjA3NyA1ODguMzZDMTU2LjY4MSA1ODAuNjMxIDE1NC45MzMgNTcyLjM0IDE1NC45MzMgNTYzLjk2NkMxNTQuOTMzIDU1NS41OTIgMTU2LjY4MSA1NDcuMzAxIDE2MC4wNzcgNTM5LjU3MkMxNjMuNDc0IDUzMS44NDIgMTY4LjQ1IDUyNC44MjggMTc0LjcxOSA1MTguOTMyWk0xNzMuNzYgOTQuMDY3N0w5MC4zMTg5IDE3My4yMThDODMuOTMzNCAxNzkuMjM4IDc4Ljg2NTkgMTg2LjM5NyA3NS40MDggMTk0LjI4MUM3MS45NSAyMDIuMTY2IDcwLjE2OTggMjEwLjYyMiA3MC4xNjk4IDIxOS4xNjJDNzAuMTY5OCAyMjcuNzAyIDcxLjk1IDIzNi4xNTcgNzUuNDA4IDI0NC4wNDJDNzguODY1OSAyNTEuOTI3IDgzLjkzMzQgMjU5LjA4NSA5MC4zMTg5IDI2NS4xMDVMMTczLjc2IDM0NC4yNTZDMTgwLjAzIDM1MC4xNTEgMTg1LjAwNiAzNTcuMTY2IDE4OC40MDIgMzY0Ljg5NUMxOTEuNzk4IDM3Mi42MjUgMTkzLjU0NyAzODAuOTE2IDE5My41NDcgMzg5LjI4OUMxOTMuNTQ3IDM5Ny42NjMgMTkxLjc5OCA0MDUuOTU0IDE4OC40MDIgNDEzLjY4NEMxODUuMDA2IDQyMS40MTMgMTgwLjAzIDQyOC40MjggMTczLjc2IDQzNC4zMjNMNDQuMjgyMyAzMTEuNTA0QzE4LjQ4MzIgMjg2LjkxMSA0IDI1My42MjkgNCAyMTguOTM0QzQgMTg0LjI0IDE4LjQ4MzIgMTUwLjk1NyA0NC4yODIzIDEyNi4zNjVMMTczLjc2IDRDMTg2LjIxMyAxNi4wMTI5IDE5My4xOTIgMzIuMTg2MSAxOTMuMTkyIDQ5LjAzMzhDMTkzLjE5MiA2NS44ODE1IDE4Ni4yMTMgODIuMDU0NyAxNzMuNzYgOTQuMDY3N1pcIlxuICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2c+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPGZpbHRlclxuICAgICAgICAgIGlkPVwic2RjTG9hZGluZ0xvZ29TaGFkb3dcIlxuICAgICAgICAgIHg9XCIwXCJcbiAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgd2lkdGg9XCIzNDhcIlxuICAgICAgICAgIGhlaWdodD1cIjYxM1wiXG4gICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZmVGbG9vZFxuICAgICAgICAgICAgZmxvb2Qtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxmZUNvbG9yTWF0cml4XG4gICAgICAgICAgICBpbj1cIlNvdXJjZUFscGhhXCJcbiAgICAgICAgICAgIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxuICAgICAgICAgICAgcmVzdWx0PVwiaGFyZEFscGhhXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxmZU9mZnNldCAvPlxuICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIgLz5cbiAgICAgICAgICA8ZmVDb21wb3NpdGVcbiAgICAgICAgICAgIGluMj1cImhhcmRBbHBoYVwiXG4gICAgICAgICAgICBvcGVyYXRvcj1cIm91dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZmVDb2xvck1hdHJpeFxuICAgICAgICAgICAgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuNDE4OTM2IDAgMCAwIDAgMSAwIDAgMCAwIDAuOTMwMjcyIDAgMCAwIDAuMzUgMFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZmVCbGVuZFxuICAgICAgICAgICAgbW9kZT1cIm5vcm1hbFwiXG4gICAgICAgICAgICBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxuICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxmZUJsZW5kXG4gICAgICAgICAgICBtb2RlPVwibm9ybWFsXCJcbiAgICAgICAgICAgIGluPVwiU291cmNlR3JhcGhpY1wiXG4gICAgICAgICAgICBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dcIlxuICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZmlsdGVyPlxuICAgICAgPC9kZWZzPlxuICAgIDwvc3ZnPlxuICBgLnRyaW0oKTtcbiAgcHVibGljIGNvbnRlbnRzOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmRpY2F0b3I6IExvYWRpbmdTdGF0ZUluZGljYXRvciA9ICdkb3RzJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaWQ6IHN0cmluZyA9IG5leHRTZXF1ZW50aWFsSWQoREVGQVVMVF9MT0FESU5HX1NUQVRFX0lEX1BSRUZJWCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJsb2NrV2luZG93ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGJsb2NrRGVsYXlNcyA9IERFRkFVTFRfTE9BRElOR19TVEFURV9CTE9DS19ERUxBWV9NUztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdW5ibG9ja0RlbGF5TXMgPSBERUZBVUxUX0xPQURJTkdfU1RBVEVfVU5CTE9DS19ERUxBWV9NUztcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSBCb29sZWFuKHZhbHVlKTtcbiAgICB0aGlzLl9sb2FkaW5nLnNldChpc0xvYWRpbmcpO1xuXG4gICAgaWYgKGlzTG9hZGluZykge1xuICAgICAgdGhpcy5zY2hlZHVsZUJsb2NrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVVbmJsb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJsb2NraW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja2luZygpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGZ1bGxzY3JlZW5aSW5kZXggPSBERUZBVUxUX0xPQURJTkdfU1RBVEVfRlVMTFNDUkVFTl9aX0lOREVYO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nb1N2ZyA9IExvYWRpbmdTdGF0ZUNvbXBvbmVudC5MT0dPX1NWRztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmxvY2tpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgYmxvY2tUaW1lb3V0SWQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSB1bmJsb2NrVGltZW91dElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmxvY2tUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJsb2NrVGltZW91dElkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51bmJsb2NrVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51bmJsb2NrVGltZW91dElkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlQmxvY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudW5ibG9ja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudW5ibG9ja1RpbWVvdXRJZCk7XG4gICAgICB0aGlzLnVuYmxvY2tUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmJsb2NrVGltZW91dElkKSB7XG4gICAgICB0aGlzLmJsb2NrVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Jsb2NraW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5ibG9ja1RpbWVvdXRJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH0sIHRoaXMuYmxvY2tEZWxheU1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlVW5ibG9jaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ibG9ja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYmxvY2tUaW1lb3V0SWQpO1xuICAgICAgdGhpcy5ibG9ja1RpbWVvdXRJZCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudW5ibG9ja1RpbWVvdXRJZCkge1xuICAgICAgdGhpcy51bmJsb2NrVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Jsb2NraW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMudW5ibG9ja1RpbWVvdXRJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH0sIHRoaXMudW5ibG9ja0RlbGF5TXMpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBbaWRdPVwiaWRcIlxuICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdzZGMtbG9hZGluZy1zdGF0ZS0tbG9hZGluZyc6IGxvYWRpbmcsXG4gICAgJ3NkYy1sb2FkaW5nLXN0YXRlLS1ibG9ja2luZyc6IGJsb2NraW5nLFxuICAgICdzZGMtbG9hZGluZy1zdGF0ZS0tZnVsbHNjcmVlbic6IGJsb2NrV2luZG93XG4gIH1cIlxuPlxuICA8ZGl2IFtpZF09XCJpZCArICctbG9hZGVyJ1wiIGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX2xvYWRlclwiPlxuICAgIDxkaXYgW2lkXT1cImlkICsgJy1zcGlubmVyJ1wiIGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX3NwaW5uZXJcIj5cbiAgICAgIEBzd2l0Y2ggKGluZGljYXRvcikge1xuICAgICAgICBAY2FzZSAoJ2xvZ28nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19sb2dvXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19sb2dvLWljb24td3JhcFwiPlxuICAgICAgICAgICAgICA8c2RjLWljb24tcmVuZGVyZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19sb2dvLWljb25cIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImxvZ29TdmdcIlxuICAgICAgICAgICAgICAgIGljb25UeXBlPVwic3ZnXCJcbiAgICAgICAgICAgICAgPjwvc2RjLWljb24tcmVuZGVyZXI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHByb2dyZXNzXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19wcm9ncmVzcyBzci1vbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubG9hZGluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L3Byb2dyZXNzPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc3Bpbm5lcicpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX3NwaW5uZXItaW5kaWNhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgPHByb2dyZXNzXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19wcm9ncmVzcyBzci1vbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubG9hZGluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L3Byb2dyZXNzPlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX2RvdHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTFcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTNcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cHJvZ3Jlc3NcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX3Byb2dyZXNzIHNyLW9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5sb2FkaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvcHJvZ3Jlc3M+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtpZF09XCJpZCArICctb3ZlcmxheSdcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19vdmVybGF5XCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgW2lkXT1cImlkICsgJy1jb250ZW50cydcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19jb250ZW50c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50cyB8fCBvcmlnaW5hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI29yaWdpbmFsQ29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsK0JBQStCLEVBQy9CLHdDQUF3QyxFQUN4QyxzQ0FBc0MsRUFDdkMsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVc1RCxNQUFNLE9BQU8scUJBQXFCO0lBQ3pCLFFBQVEsR0FBZ0MsSUFBSSxDQUFDO0lBRzdDLFNBQVMsR0FBMEIsTUFBTSxDQUFDO0lBRzFDLEVBQUUsR0FBVyxnQkFBZ0IsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBRy9ELFdBQVcsR0FBRyxLQUFLLENBQUM7SUFHcEIsWUFBWSxHQUFHLG9DQUFvQyxDQUFDO0lBR3BELGNBQWMsR0FBRyxzQ0FBc0MsQ0FBQztJQUUvRCxJQUNXLE9BQU8sQ0FBQyxLQUFjO1FBQy9CLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVlLGdCQUFnQixHQUFHLHdDQUF3QyxDQUFDO0lBRTNELFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxjQUFjLENBQWlDO0lBQy9DLGdCQUFnQixDQUFpQztJQUV6RCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDbEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUNwQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3dHQWxGVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiwyT0M5QmxDLG1nTEF1SEEsK3dIRC9GWSxZQUFZLG1TQUFFLGVBQWU7OzRGQU01QixxQkFBcUI7a0JBVGpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLFFBQVE7OEJBTWxDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxFQUFFO3NCQURSLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUssT0FBTztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9MT0FESU5HX1NUQVRFX0JMT0NLX0RFTEFZX01TLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfSURfUFJFRklYLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfRlVMTFNDUkVFTl9aX0lOREVYLFxuICBERUZBVUxUX0xPQURJTkdfU1RBVEVfVU5CTE9DS19ERUxBWV9NU1xufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9sb2FkaW5nLXN0YXRlLmNvbnN0JztcbmltcG9ydCB0eXBlIHsgTG9hZGluZ1N0YXRlSW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9sb2FkaW5nLXN0YXRlLnR5cGUnO1xuaW1wb3J0IHsgbmV4dFNlcXVlbnRpYWxJZCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaWQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1sb2FkaW5nLXN0YXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRpbmctc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbG9hZGluZy1zdGF0ZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkaW5nU3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgY29udGVudHM6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGluZGljYXRvcjogTG9hZGluZ1N0YXRlSW5kaWNhdG9yID0gJ2RvdHMnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gbmV4dFNlcXVlbnRpYWxJZChERUZBVUxUX0xPQURJTkdfU1RBVEVfSURfUFJFRklYKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmxvY2tXaW5kb3cgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmxvY2tEZWxheU1zID0gREVGQVVMVF9MT0FESU5HX1NUQVRFX0JMT0NLX0RFTEFZX01TO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB1bmJsb2NrRGVsYXlNcyA9IERFRkFVTFRfTE9BRElOR19TVEFURV9VTkJMT0NLX0RFTEFZX01TO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IEJvb2xlYW4odmFsdWUpO1xuICAgIHRoaXMuX2xvYWRpbmcuc2V0KGlzTG9hZGluZyk7XG5cbiAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLnNjaGVkdWxlQmxvY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY2hlZHVsZVVuYmxvY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmxvY2tpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2NraW5nKCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZnVsbHNjcmVlblpJbmRleCA9IERFRkFVTFRfTE9BRElOR19TVEFURV9GVUxMU0NSRUVOX1pfSU5ERVg7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jsb2NraW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGJsb2NrVGltZW91dElkPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgdW5ibG9ja1RpbWVvdXRJZD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJsb2NrVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5ibG9ja1RpbWVvdXRJZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudW5ibG9ja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudW5ibG9ja1RpbWVvdXRJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZUJsb2NrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVuYmxvY2tUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnVuYmxvY2tUaW1lb3V0SWQpO1xuICAgICAgdGhpcy51bmJsb2NrVGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5ibG9ja1RpbWVvdXRJZCkge1xuICAgICAgdGhpcy5ibG9ja1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9ibG9ja2luZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuYmxvY2tUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICB9LCB0aGlzLmJsb2NrRGVsYXlNcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVVuYmxvY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmxvY2tUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmJsb2NrVGltZW91dElkKTtcbiAgICAgIHRoaXMuYmxvY2tUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnVuYmxvY2tUaW1lb3V0SWQpIHtcbiAgICAgIHRoaXMudW5ibG9ja1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9ibG9ja2luZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnVuYmxvY2tUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICB9LCB0aGlzLnVuYmxvY2tEZWxheU1zKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2lkXT1cImlkXCJcbiAgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2RjLWxvYWRpbmctc3RhdGUtLWxvYWRpbmcnOiBsb2FkaW5nLFxuICAgICdzZGMtbG9hZGluZy1zdGF0ZS0tYmxvY2tpbmcnOiBibG9ja2luZyxcbiAgICAnc2RjLWxvYWRpbmctc3RhdGUtLWZ1bGxzY3JlZW4nOiBibG9ja1dpbmRvd1xuICB9XCJcbj5cbiAgPGRpdiBbaWRdPVwiaWQgKyAnLWxvYWRlcidcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19sb2FkZXJcIj5cbiAgICA8ZGl2IFtpZF09XCJpZCArICctc3Bpbm5lcidcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19zcGlubmVyXCI+XG4gICAgICBAc3dpdGNoIChpbmRpY2F0b3IpIHtcbiAgICAgICAgQGNhc2UgKCdsb2dvJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19sb2dvLXN2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzQ4IDYxM1wiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjc2RjLWxvYWRpbmctc2VuaW9yLXNoYWRvdylcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTc0LjcxOSA1MTguOTMyTDI1OC4xNjEgNDM5Ljc4MlxuICAgICAgICAgICAgICAgICAgICBDMjY0LjU0NiA0MzMuNzYyIDI2OS42MTQgNDI2LjYwMyAyNzMuMDcyIDQxOC43MTlcbiAgICAgICAgICAgICAgICAgICAgQzI3Ni41MyA0MTAuODM0IDI3OC4zMSA0MDIuMzc4IDI3OC4zMSAzOTMuODM4XG4gICAgICAgICAgICAgICAgICAgIEMyNzguMzEgMzg1LjI5OCAyNzYuNTMgMzc2Ljg0MyAyNzMuMDcyIDM2OC45NThcbiAgICAgICAgICAgICAgICAgICAgQzI2OS42MTQgMzYxLjA3MyAyNjQuNTQ2IDM1My45MTUgMjU4LjE2MSAzNDcuODk1XG4gICAgICAgICAgICAgICAgICAgIEwxNzQuNzE5IDI2OS4xOTlcbiAgICAgICAgICAgICAgICAgICAgQzE2OC40NSAyNjMuMzA0IDE2My40NzQgMjU2LjI4OSAxNjAuMDc3IDI0OC41NlxuICAgICAgICAgICAgICAgICAgICBDMTU2LjY4MSAyNDAuODMgMTU0LjkzMyAyMzIuNTM5IDE1NC45MzMgMjI0LjE2NVxuICAgICAgICAgICAgICAgICAgICBDMTU0LjkzMyAyMTUuNzkyIDE1Ni42ODEgMjA3LjUwMSAxNjAuMDc3IDE5OS43NzFcbiAgICAgICAgICAgICAgICAgICAgQzE2My40NzQgMTkyLjA0MiAxNjguNDUgMTg1LjAyNyAxNzQuNzE5IDE3OS4xMzJcbiAgICAgICAgICAgICAgICAgICAgTDMwMy43MTggMzAxLjQ5NlxuICAgICAgICAgICAgICAgICAgICBDMzI5LjUxNyAzMjYuMDg5IDM0NCAzNTkuMzcxIDM0NCAzOTQuMDY2XG4gICAgICAgICAgICAgICAgICAgIEMzNDQgNDI4Ljc2IDMyOS41MTcgNDYyLjA0MyAzMDMuNzE4IDQ4Ni42MzVcbiAgICAgICAgICAgICAgICAgICAgTDE3NC43MTkgNjA5XG4gICAgICAgICAgICAgICAgICAgIEMxNjguNDUgNjAzLjEwNSAxNjMuNDc0IDU5Ni4wOSAxNjAuMDc3IDU4OC4zNlxuICAgICAgICAgICAgICAgICAgICBDMTU2LjY4MSA1ODAuNjMxIDE1NC45MzMgNTcyLjM0IDE1NC45MzMgNTYzLjk2NlxuICAgICAgICAgICAgICAgICAgICBDMTU0LjkzMyA1NTUuNTkyIDE1Ni42ODEgNTQ3LjMwMSAxNjAuMDc3IDUzOS41NzJcbiAgICAgICAgICAgICAgICAgICAgQzE2My40NzQgNTMxLjg0MiAxNjguNDUgNTI0LjgyOCAxNzQuNzE5IDUxOC45MzJaXG4gICAgICAgICAgICAgICAgICAgIE0xNzMuNzYgOTQuMDY3N0w5MC4zMTg5IDE3My4yMThcbiAgICAgICAgICAgICAgICAgICAgQzgzLjkzMzQgMTc5LjIzOCA3OC44NjU5IDE4Ni4zOTcgNzUuNDA4IDE5NC4yODFcbiAgICAgICAgICAgICAgICAgICAgQzcxLjk1IDIwMi4xNjYgNzAuMTY5OCAyMTAuNjIyIDcwLjE2OTggMjE5LjE2MlxuICAgICAgICAgICAgICAgICAgICBDNzAuMTY5OCAyMjcuNzAyIDcxLjk1IDIzNi4xNTcgNzUuNDA4IDI0NC4wNDJcbiAgICAgICAgICAgICAgICAgICAgQzc4Ljg2NTkgMjUxLjkyNyA4My45MzM0IDI1OS4wODUgOTAuMzE4OSAyNjUuMTA1XG4gICAgICAgICAgICAgICAgICAgIEwxNzMuNzYgMzQ0LjI1NlxuICAgICAgICAgICAgICAgICAgICBDMTgwLjAzIDM1MC4xNTEgMTg1LjAwNiAzNTcuMTY2IDE4OC40MDIgMzY0Ljg5NVxuICAgICAgICAgICAgICAgICAgICBDMTkxLjc5OCAzNzIuNjI1IDE5My41NDcgMzgwLjkxNiAxOTMuNTQ3IDM4OS4yODlcbiAgICAgICAgICAgICAgICAgICAgQzE5My41NDcgMzk3LjY2MyAxOTEuNzk4IDQwNS45NTQgMTg4LjQwMiA0MTMuNjg0XG4gICAgICAgICAgICAgICAgICAgIEMxODUuMDA2IDQyMS40MTMgMTgwLjAzIDQyOC40MjggMTczLjc2IDQzNC4zMjNcbiAgICAgICAgICAgICAgICAgICAgTDQ0LjI4MjMgMzExLjUwNFxuICAgICAgICAgICAgICAgICAgICBDMTguNDgzMiAyODYuOTExIDQgMjUzLjYyOSA0IDIxOC45MzRcbiAgICAgICAgICAgICAgICAgICAgQzQgMTg0LjI0IDE4LjQ4MzIgMTUwLjk1NyA0NC4yODIzIDEyNi4zNjVcbiAgICAgICAgICAgICAgICAgICAgTDE3My43NiA0XG4gICAgICAgICAgICAgICAgICAgIEMxODYuMjEzIDE2LjAxMjkgMTkzLjE5MiAzMi4xODYxIDE5My4xOTIgNDkuMDMzOFxuICAgICAgICAgICAgICAgICAgICBDMTkzLjE5MiA2NS44ODE1IDE4Ni4yMTMgODIuMDU0NyAxNzMuNzYgOTQuMDY3N1pcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGZpbHRlclxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZGMtbG9hZGluZy1zZW5pb3Itc2hhZG93XCJcbiAgICAgICAgICAgICAgICAgIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjM0OFwiIGhlaWdodD1cIjYxM1wiXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXhcbiAgICAgICAgICAgICAgICAgICAgaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImhhcmRBbHBoYVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0Lz48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuNDE4OTM2IDAgMCAwIDAgMSAwIDAgMCAwIDAuOTMwMjcyIDAgMCAwIDAuMzUgMFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd1wiLz5cbiAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHByb2dyZXNzXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19wcm9ncmVzcyBzci1vbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubG9hZGluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L3Byb2dyZXNzPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc3Bpbm5lcicpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX3NwaW5uZXItaW5kaWNhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgPHByb2dyZXNzXG4gICAgICAgICAgICBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19wcm9ncmVzcyBzci1vbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubG9hZGluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L3Byb2dyZXNzPlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX2RvdHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTFcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtbG9hZGluZy1zdGF0ZV9fZG90IHNkYy1sb2FkaW5nLXN0YXRlX19kb3QtLTNcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cHJvZ3Jlc3NcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWxvYWRpbmctc3RhdGVfX3Byb2dyZXNzIHNyLW9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5sb2FkaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvcHJvZ3Jlc3M+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtpZF09XCJpZCArICctb3ZlcmxheSdcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19vdmVybGF5XCI+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgW2lkXT1cImlkICsgJy1jb250ZW50cydcIiBjbGFzcz1cInNkYy1sb2FkaW5nLXN0YXRlX19jb250ZW50c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50cyB8fCBvcmlnaW5hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI29yaWdpbmFsQ29udGVudD5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,34 @@
1
+ import { Directive, EventEmitter, HostListener, Input, Output, numberAttribute } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DoubleClickDirective {
4
+ lastClickAt = 0;
5
+ delay = 300;
6
+ doubleClicked = new EventEmitter();
7
+ onClick(event) {
8
+ const now = Date.now();
9
+ if (now - this.lastClickAt <= Math.max(0, this.delay)) {
10
+ this.lastClickAt = 0;
11
+ this.doubleClicked.emit(event);
12
+ return;
13
+ }
14
+ this.lastClickAt = now;
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DoubleClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.14", type: DoubleClickDirective, isStandalone: true, selector: "[sdcDoubleClick]", inputs: { delay: ["doubleClickDelay", "delay", numberAttribute] }, outputs: { doubleClicked: "doubleClicked" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DoubleClickDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[sdcDoubleClick]',
23
+ standalone: true
24
+ }]
25
+ }], propDecorators: { delay: [{
26
+ type: Input,
27
+ args: [{ alias: 'doubleClickDelay', transform: numberAttribute }]
28
+ }], doubleClicked: [{
29
+ type: Output
30
+ }], onClick: [{
31
+ type: HostListener,
32
+ args: ['click', ['$event']]
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG91YmxlLWNsaWNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvbW91c2UtZXZlbnRzL2RpcmVjdGl2ZXMvZG91YmxlLWNsaWNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXRHLE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUUwQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ3BFLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBRy9DLE9BQU8sQ0FBQyxLQUFpQjtRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7d0dBakJVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG1HQUdnQixlQUFlOzs0RkFIbkQsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFJbUUsS0FBSztzQkFBdEUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUN0RCxhQUFhO3NCQUF0QixNQUFNO2dCQUdHLE9BQU87c0JBRGhCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgbnVtYmVyQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZGNEb3VibGVDbGlja10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERvdWJsZUNsaWNrRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBsYXN0Q2xpY2tBdCA9IDA7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdkb3VibGVDbGlja0RlbGF5JywgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgZGVsYXkgPSAzMDA7XG4gIEBPdXRwdXQoKSBkb3VibGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKG5vdyAtIHRoaXMubGFzdENsaWNrQXQgPD0gTWF0aC5tYXgoMCwgdGhpcy5kZWxheSkpIHtcbiAgICAgIHRoaXMubGFzdENsaWNrQXQgPSAwO1xuICAgICAgdGhpcy5kb3VibGVDbGlja2VkLmVtaXQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubGFzdENsaWNrQXQgPSBub3c7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,61 @@
1
+ import { Directive, EventEmitter, HostListener, Input, Output, numberAttribute } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LongPressDirective {
4
+ pressHandle = null;
5
+ delay = 500;
6
+ longPressed = new EventEmitter();
7
+ ngOnDestroy() {
8
+ this.clearPressHandle();
9
+ }
10
+ startPress(event) {
11
+ this.clearPressHandle();
12
+ this.pressHandle = setTimeout(() => {
13
+ this.pressHandle = null;
14
+ this.longPressed.emit(event);
15
+ }, Math.max(0, this.delay));
16
+ }
17
+ cancelPress() {
18
+ this.clearPressHandle();
19
+ }
20
+ clearPressHandle() {
21
+ if (!this.pressHandle) {
22
+ return;
23
+ }
24
+ clearTimeout(this.pressHandle);
25
+ this.pressHandle = null;
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LongPressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.14", type: LongPressDirective, isStandalone: true, selector: "[sdcLongPress]", inputs: { delay: ["sdcLongPressDelay", "delay", numberAttribute] }, outputs: { longPressed: "sdcLongPress" }, host: { listeners: { "mousedown": "startPress($event)", "touchstart": "startPress($event)", "mouseup": "cancelPress()", "mouseleave": "cancelPress()", "touchend": "cancelPress()", "touchcancel": "cancelPress()" } }, ngImport: i0 });
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LongPressDirective, decorators: [{
31
+ type: Directive,
32
+ args: [{
33
+ selector: '[sdcLongPress]',
34
+ standalone: true
35
+ }]
36
+ }], propDecorators: { delay: [{
37
+ type: Input,
38
+ args: [{ alias: 'sdcLongPressDelay', transform: numberAttribute }]
39
+ }], longPressed: [{
40
+ type: Output,
41
+ args: ['sdcLongPress']
42
+ }], startPress: [{
43
+ type: HostListener,
44
+ args: ['mousedown', ['$event']]
45
+ }, {
46
+ type: HostListener,
47
+ args: ['touchstart', ['$event']]
48
+ }], cancelPress: [{
49
+ type: HostListener,
50
+ args: ['mouseup']
51
+ }, {
52
+ type: HostListener,
53
+ args: ['mouseleave']
54
+ }, {
55
+ type: HostListener,
56
+ args: ['touchend']
57
+ }, {
58
+ type: HostListener,
59
+ args: ['touchcancel']
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL21vdXNlLWV2ZW50cy9kaXJlY3RpdmVzL2xvbmctcHJlc3MuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7O0FBTXZCLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsV0FBVyxHQUF5QyxJQUFJLENBQUM7SUFFRSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ3ZELFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRWhFLFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBSVMsVUFBVSxDQUFDLEtBQVk7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBTVMsV0FBVztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7d0dBbkNVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtHQUdtQixlQUFlOzs0RkFIcEQsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFJb0UsS0FBSztzQkFBdkUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUN6QyxXQUFXO3NCQUFsQyxNQUFNO3VCQUFDLGNBQWM7Z0JBUVosVUFBVTtzQkFGbkIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNwQyxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhNUIsV0FBVztzQkFKcEIsWUFBWTt1QkFBQyxTQUFTOztzQkFDdEIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxVQUFVOztzQkFDdkIsWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzZGNMb25nUHJlc3NdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHByZXNzSGFuZGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAnc2RjTG9uZ1ByZXNzRGVsYXknLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBkZWxheSA9IDUwMDtcbiAgQE91dHB1dCgnc2RjTG9uZ1ByZXNzJykgbG9uZ1ByZXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJQcmVzc0hhbmRsZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBzdGFydFByZXNzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJQcmVzc0hhbmRsZSgpO1xuICAgIHRoaXMucHJlc3NIYW5kbGUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJlc3NIYW5kbGUgPSBudWxsO1xuICAgICAgdGhpcy5sb25nUHJlc3NlZC5lbWl0KGV2ZW50KTtcbiAgICB9LCBNYXRoLm1heCgwLCB0aGlzLmRlbGF5KSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZXVwJylcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hjYW5jZWwnKVxuICBwcm90ZWN0ZWQgY2FuY2VsUHJlc3MoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclByZXNzSGFuZGxlKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUHJlc3NIYW5kbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXNzSGFuZGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMucHJlc3NIYW5kbGUpO1xuICAgIHRoaXMucHJlc3NIYW5kbGUgPSBudWxsO1xuICB9XG59XG4iXX0=
@@ -50,6 +50,11 @@ export class PaginatorComponent {
50
50
  const count = this.pageCount();
51
51
  const current = this.currentPage();
52
52
  const windowSize = this.isMobile() ? PAGINATOR_MOBILE_WINDOW_SIZE : PAGINATOR_DESKTOP_WINDOW_SIZE;
53
+ // For small page counts (≤ 12), show all pages without ellipsis to avoid unnecessary truncation
54
+ const showAllPagesThreshold = 12;
55
+ if (count <= showAllPagesThreshold) {
56
+ return Array.from({ length: count }, (_, i) => i);
57
+ }
53
58
  if (count <= windowSize) {
54
59
  return Array.from({ length: count }, (_, i) => i);
55
60
  }
@@ -137,12 +142,12 @@ export class PaginatorComponent {
137
142
  });
138
143
  }
139
144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "sdc-paginator", inputs: { first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, showRowsPerPageSelector: { classPropertyName: "showRowsPerPageSelector", publicName: "showRowsPerPageSelector", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, totalRecordsLabel: { classPropertyName: "totalRecordsLabel", publicName: "totalRecordsLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<nav\n class=\"sdc-paginator\"\n role=\"navigation\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n>\n <div class=\"sdc-paginator-left\">\n <div class=\"sdc-paginator-pages\">\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"firstPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.first_page' | translate\"\n >\n <i class=\"fas fa-angle-double-left\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"prevPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.previous_page' | translate\"\n >\n <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\n </button>\n\n @for (p of pages(); track $index) {\n @if (asNumber(p)) {\n <button\n type=\"button\"\n class=\"sdc-page\"\n [class.is-active]=\"isCurrent(p)\"\n [attr.aria-current]=\"isCurrent(p) ? 'page' : null\"\n [attr.aria-label]=\"\n isCurrent(p)\n ? ('platform.datacore.accessibility.current_page' | translate).replace('{number}', getPageLabel(p))\n : ('platform.datacore.accessibility.page_number' | translate).replace('{number}', getPageLabel(p))\n \"\n (click)=\"gotoPage(p)\"\n >\n {{ p + 1 }}\n </button>\n } @else {\n <button type=\"button\" class=\"sdc-page sdc-page--ellipsis\" disabled aria-hidden=\"true\" tabindex=\"-1\">\n <span class=\"sdc-ellipsis-dots\" aria-hidden=\"true\">\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n </span>\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.next_page' | translate\"\n >\n <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"lastPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.last_page' | translate\"\n >\n <i class=\"fas fa-angle-double-right\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (showRowsPerPageSelector()) {\n <sdc-combobox\n class=\"sdc-rows-combobox\"\n [multiple]=\"false\"\n [options]=\"rowOptions()\"\n [appendTo]=\"'body'\"\n [showClear]=\"false\"\n [ngModel]=\"rows().toString()\"\n (onSelectedItem)=\"onRowsComboModel($event)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.rows_per_page' | translate\"\n >\n </sdc-combobox>\n }\n </div>\n\n @if (totalRecordsLabel()) {\n <span class=\"sdc-total\" aria-live=\"polite\">\n @if (shouldDisplayTotalRecordsFirst()) {\n {{ totalRecords() }} {{ totalRecordsDisplayLabel() | translate }}\n } @else {\n {{ totalRecordsDisplayLabel() | translate }}: {{ totalRecords() }}\n }\n </span>\n }\n</nav>\n", styles: [":host{--sdc-paginator-page-size: var(--sdc-table-paginator-size, 34px);--sdc-paginator-border: var(--sdc-table-border-gray, #cccccc);--sdc-paginator-primary: var(--sdc-table-primary, #428bca);--sdc-paginator-primary-hover: var(--sdc-table-primary-hover, #6aa3d5);display:block}.sdc-paginator{display:flex;align-items:center;justify-content:space-between;gap:var(--sdc-paginator-gap, 1rem);width:100%;box-sizing:border-box;padding:var(--sdc-paginator-padding, 10px 10px 10px 0)}.sdc-paginator .sdc-paginator-left{display:inline-flex;align-items:center;gap:var(--sdc-paginator-section-gap, .75rem)}.sdc-paginator .sdc-paginator-left ::ng-deep .sdc-combobox{width:var(--sdc-paginator-combobox-width, 6.5rem)!important;padding-left:var(--sdc-paginator-combobox-padding-left, 1rem)!important}.sdc-paginator .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-paginator .sdc-page{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:var(--sdc-paginator-page-size);min-width:var(--sdc-paginator-page-size);max-width:var(--sdc-paginator-page-size);height:var(--sdc-paginator-page-size);min-height:var(--sdc-paginator-page-size);max-height:var(--sdc-paginator-page-size);margin:0;padding:0;border:1px solid var(--sdc-paginator-border);border-right-width:0;border-radius:0;background:transparent;color:var(--sdc-paginator-primary);display:inline-flex;align-items:center;justify-content:center;flex:0 0 var(--sdc-paginator-page-size);overflow:hidden;cursor:pointer;text-align:center;line-height:1;transition:var(--sdc-paginator-transition, background-color .2s ease-out, color .2s ease-out, border-color .2s ease-out)}.sdc-paginator .sdc-page:focus-visible{outline:2px solid currentColor;outline-offset:2px;z-index:1;position:relative}.sdc-paginator .sdc-page:hover:not(:disabled):not(.sdc-page--ellipsis):not(.is-active){color:var(--sdc-paginator-page-hover-text, #202129)}.sdc-paginator .sdc-page.is-active,.sdc-paginator .sdc-page.is-active:hover{background:var(--sdc-paginator-primary);color:var(--sdc-paginator-active-text, #ffffff);border-color:var(--sdc-paginator-primary)}.sdc-paginator .sdc-page:disabled{opacity:.5;cursor:not-allowed}.sdc-paginator .sdc-page--ellipsis{opacity:1;cursor:default;pointer-events:none;color:var(--sdc-paginator-primary);overflow:visible}.sdc-paginator .sdc-ellipsis-dots{display:inline-flex;align-items:center;justify-content:center;gap:var(--sdc-paginator-ellipsis-gap, 4px);position:relative;top:var(--sdc-paginator-ellipsis-offset-y, 2px)}.sdc-paginator .sdc-ellipsis-dot{width:var(--sdc-paginator-ellipsis-dot-size, 3px);height:var(--sdc-paginator-ellipsis-dot-size, 3px);border-radius:var(--sdc-radius-pill, 9999px);background:currentColor;display:block}.sdc-paginator .sdc-paginator-pages>.sdc-page:first-child{border-radius:var(--sdc-paginator-radius, 4px) 0 0 var(--sdc-paginator-radius, 4px)}.sdc-paginator .sdc-paginator-pages>.sdc-page:last-child{border-right-width:1px;border-radius:0 var(--sdc-paginator-radius, 4px) var(--sdc-paginator-radius, 4px) 0}.sdc-paginator .sdc-rows-combobox{width:max-content;min-width:var(--sdc-paginator-rows-min-width, 88px)}.sdc-paginator .sdc-total{white-space:nowrap}::ng-deep .sdc-paginator .sdc-rows-combobox{min-height:var(--sdc-paginator-rows-min-height, 24px)}@media (max-width: 768px){.sdc-paginator{flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.625rem .5rem}.sdc-paginator .sdc-paginator-left{flex-wrap:wrap;justify-content:center}.sdc-paginator .sdc-total{font-size:.8125rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ComboboxComponent, selector: "sdc-combobox", inputs: ["multiple", "appendTo", "zIndex", "options", "overrideChipMessage", "maxSelectedLabels", "showClear", "iconSelector", "showIconClass", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "infoTooltipAllowHtml"], outputs: ["onSelectedItem", "panelClosed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PaginatorComponent, isStandalone: true, selector: "sdc-paginator", inputs: { first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: true, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: true, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, showRowsPerPageSelector: { classPropertyName: "showRowsPerPageSelector", publicName: "showRowsPerPageSelector", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null }, totalRecordsLabel: { classPropertyName: "totalRecordsLabel", publicName: "totalRecordsLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<nav\n class=\"sdc-paginator\"\n role=\"navigation\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n>\n <div class=\"sdc-paginator-left\">\n <div class=\"sdc-paginator-pages\">\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"firstPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.first_page' | translate\"\n >\n <i class=\"fas fa-angle-double-left\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"prevPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.previous_page' | translate\"\n >\n <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\n </button>\n\n @for (p of pages(); track $index) {\n @if (asNumber(p)) {\n <button\n type=\"button\"\n class=\"sdc-page\"\n [class.is-active]=\"isCurrent(p)\"\n [attr.aria-current]=\"isCurrent(p) ? 'page' : null\"\n [attr.aria-label]=\"\n isCurrent(p)\n ? ('platform.datacore.accessibility.current_page' | translate).replace('{number}', getPageLabel(p))\n : ('platform.datacore.accessibility.page_number' | translate).replace('{number}', getPageLabel(p))\n \"\n (click)=\"gotoPage(p)\"\n >\n {{ p + 1 }}\n </button>\n } @else {\n <button type=\"button\" class=\"sdc-page sdc-page--ellipsis\" disabled aria-hidden=\"true\" tabindex=\"-1\">\n <span class=\"sdc-ellipsis-dots\" aria-hidden=\"true\">\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n </span>\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.next_page' | translate\"\n >\n <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"lastPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.last_page' | translate\"\n >\n <i class=\"fas fa-angle-double-right\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (showRowsPerPageSelector()) {\n <sdc-combobox\n class=\"sdc-rows-combobox\"\n [multiple]=\"false\"\n [searchable]=\"false\"\n [options]=\"rowOptions()\"\n [appendTo]=\"'body'\"\n [showClear]=\"false\"\n [ngModel]=\"rows().toString()\"\n (onSelectedItem)=\"onRowsComboModel($event)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.rows_per_page' | translate\"\n >\n </sdc-combobox>\n }\n </div>\n\n @if (totalRecordsLabel()) {\n <span class=\"sdc-total\" aria-live=\"polite\">\n @if (shouldDisplayTotalRecordsFirst()) {\n {{ totalRecords() }} {{ totalRecordsDisplayLabel() | translate }}\n } @else {\n {{ totalRecordsDisplayLabel() | translate }}: {{ totalRecords() }}\n }\n </span>\n }\n</nav>\n", styles: [":host{--sdc-paginator-page-size: var(--sdc-table-paginator-size, 34px);--sdc-paginator-border: var(--sdc-table-border-gray, #cccccc);--sdc-paginator-primary: var(--sdc-table-primary, #428bca);--sdc-paginator-primary-hover: var(--sdc-table-primary-hover, #6aa3d5);display:block}.sdc-paginator{display:flex;align-items:center;justify-content:space-between;gap:var(--sdc-paginator-gap, 1rem);width:100%;box-sizing:border-box;padding:var(--sdc-paginator-padding, 10px 10px 10px 0)}.sdc-paginator .sdc-paginator-left{display:inline-flex;align-items:center;gap:var(--sdc-paginator-section-gap, .75rem)}.sdc-paginator .sdc-paginator-left ::ng-deep .sdc-combobox{width:var(--sdc-paginator-combobox-width, 6.5rem)!important;padding-left:var(--sdc-paginator-combobox-padding-left, 1rem)!important}.sdc-paginator .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-paginator .sdc-page{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:var(--sdc-paginator-page-size);min-width:var(--sdc-paginator-page-size);max-width:var(--sdc-paginator-page-size);height:var(--sdc-paginator-page-size);min-height:var(--sdc-paginator-page-size);max-height:var(--sdc-paginator-page-size);margin:0;padding:0;border:1px solid var(--sdc-paginator-border);border-right-width:0;border-radius:0;background:transparent;color:var(--sdc-paginator-primary);display:inline-flex;align-items:center;justify-content:center;flex:0 0 var(--sdc-paginator-page-size);overflow:hidden;cursor:pointer;text-align:center;line-height:1;transition:var(--sdc-paginator-transition, background-color .2s ease-out, color .2s ease-out, border-color .2s ease-out)}.sdc-paginator .sdc-page:focus-visible{outline:2px solid currentColor;outline-offset:2px;z-index:1;position:relative}.sdc-paginator .sdc-page:hover:not(:disabled):not(.sdc-page--ellipsis):not(.is-active){color:var(--sdc-paginator-page-hover-text, #202129)}.sdc-paginator .sdc-page.is-active,.sdc-paginator .sdc-page.is-active:hover{background:var(--sdc-paginator-primary);color:var(--sdc-paginator-active-text, #ffffff);border-color:var(--sdc-paginator-primary)}.sdc-paginator .sdc-page:disabled{opacity:.5;cursor:not-allowed}.sdc-paginator .sdc-page--ellipsis{opacity:1;cursor:default;pointer-events:none;color:var(--sdc-paginator-primary);overflow:visible}.sdc-paginator .sdc-ellipsis-dots{display:inline-flex;align-items:center;justify-content:center;gap:var(--sdc-paginator-ellipsis-gap, 4px);position:relative;top:var(--sdc-paginator-ellipsis-offset-y, 2px)}.sdc-paginator .sdc-ellipsis-dot{width:var(--sdc-paginator-ellipsis-dot-size, 3px);height:var(--sdc-paginator-ellipsis-dot-size, 3px);border-radius:var(--sdc-radius-pill, 9999px);background:currentColor;display:block}.sdc-paginator .sdc-paginator-pages>.sdc-page:first-child{border-radius:var(--sdc-paginator-radius, 4px) 0 0 var(--sdc-paginator-radius, 4px)}.sdc-paginator .sdc-paginator-pages>.sdc-page:last-child{border-right-width:1px;border-radius:0 var(--sdc-paginator-radius, 4px) var(--sdc-paginator-radius, 4px) 0}.sdc-paginator .sdc-rows-combobox{width:max-content;min-width:var(--sdc-paginator-rows-min-width, 88px)}.sdc-paginator .sdc-total{white-space:nowrap}::ng-deep .sdc-paginator .sdc-rows-combobox{min-height:var(--sdc-paginator-rows-min-height, 24px)}@media (max-width: 768px){.sdc-paginator{flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.625rem .5rem}.sdc-paginator .sdc-paginator-left{flex-wrap:wrap;justify-content:center}.sdc-paginator .sdc-total{font-size:.8125rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ComboboxComponent, selector: "sdc-combobox", inputs: ["multiple", "appendTo", "zIndex", "options", "overrideChipMessage", "maxSelectedLabels", "showClear", "searchable", "iconSelector", "showIconClass", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "infoTooltipAllowHtml"], outputs: ["onSelectedItem", "panelClosed"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
141
146
  }
142
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginatorComponent, decorators: [{
143
148
  type: Component,
144
- args: [{ selector: 'sdc-paginator', standalone: true, imports: [CommonModule, FormsModule, ComboboxComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n class=\"sdc-paginator\"\n role=\"navigation\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n>\n <div class=\"sdc-paginator-left\">\n <div class=\"sdc-paginator-pages\">\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"firstPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.first_page' | translate\"\n >\n <i class=\"fas fa-angle-double-left\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"prevPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.previous_page' | translate\"\n >\n <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\n </button>\n\n @for (p of pages(); track $index) {\n @if (asNumber(p)) {\n <button\n type=\"button\"\n class=\"sdc-page\"\n [class.is-active]=\"isCurrent(p)\"\n [attr.aria-current]=\"isCurrent(p) ? 'page' : null\"\n [attr.aria-label]=\"\n isCurrent(p)\n ? ('platform.datacore.accessibility.current_page' | translate).replace('{number}', getPageLabel(p))\n : ('platform.datacore.accessibility.page_number' | translate).replace('{number}', getPageLabel(p))\n \"\n (click)=\"gotoPage(p)\"\n >\n {{ p + 1 }}\n </button>\n } @else {\n <button type=\"button\" class=\"sdc-page sdc-page--ellipsis\" disabled aria-hidden=\"true\" tabindex=\"-1\">\n <span class=\"sdc-ellipsis-dots\" aria-hidden=\"true\">\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n </span>\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.next_page' | translate\"\n >\n <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"lastPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.last_page' | translate\"\n >\n <i class=\"fas fa-angle-double-right\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (showRowsPerPageSelector()) {\n <sdc-combobox\n class=\"sdc-rows-combobox\"\n [multiple]=\"false\"\n [options]=\"rowOptions()\"\n [appendTo]=\"'body'\"\n [showClear]=\"false\"\n [ngModel]=\"rows().toString()\"\n (onSelectedItem)=\"onRowsComboModel($event)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.rows_per_page' | translate\"\n >\n </sdc-combobox>\n }\n </div>\n\n @if (totalRecordsLabel()) {\n <span class=\"sdc-total\" aria-live=\"polite\">\n @if (shouldDisplayTotalRecordsFirst()) {\n {{ totalRecords() }} {{ totalRecordsDisplayLabel() | translate }}\n } @else {\n {{ totalRecordsDisplayLabel() | translate }}: {{ totalRecords() }}\n }\n </span>\n }\n</nav>\n", styles: [":host{--sdc-paginator-page-size: var(--sdc-table-paginator-size, 34px);--sdc-paginator-border: var(--sdc-table-border-gray, #cccccc);--sdc-paginator-primary: var(--sdc-table-primary, #428bca);--sdc-paginator-primary-hover: var(--sdc-table-primary-hover, #6aa3d5);display:block}.sdc-paginator{display:flex;align-items:center;justify-content:space-between;gap:var(--sdc-paginator-gap, 1rem);width:100%;box-sizing:border-box;padding:var(--sdc-paginator-padding, 10px 10px 10px 0)}.sdc-paginator .sdc-paginator-left{display:inline-flex;align-items:center;gap:var(--sdc-paginator-section-gap, .75rem)}.sdc-paginator .sdc-paginator-left ::ng-deep .sdc-combobox{width:var(--sdc-paginator-combobox-width, 6.5rem)!important;padding-left:var(--sdc-paginator-combobox-padding-left, 1rem)!important}.sdc-paginator .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-paginator .sdc-page{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:var(--sdc-paginator-page-size);min-width:var(--sdc-paginator-page-size);max-width:var(--sdc-paginator-page-size);height:var(--sdc-paginator-page-size);min-height:var(--sdc-paginator-page-size);max-height:var(--sdc-paginator-page-size);margin:0;padding:0;border:1px solid var(--sdc-paginator-border);border-right-width:0;border-radius:0;background:transparent;color:var(--sdc-paginator-primary);display:inline-flex;align-items:center;justify-content:center;flex:0 0 var(--sdc-paginator-page-size);overflow:hidden;cursor:pointer;text-align:center;line-height:1;transition:var(--sdc-paginator-transition, background-color .2s ease-out, color .2s ease-out, border-color .2s ease-out)}.sdc-paginator .sdc-page:focus-visible{outline:2px solid currentColor;outline-offset:2px;z-index:1;position:relative}.sdc-paginator .sdc-page:hover:not(:disabled):not(.sdc-page--ellipsis):not(.is-active){color:var(--sdc-paginator-page-hover-text, #202129)}.sdc-paginator .sdc-page.is-active,.sdc-paginator .sdc-page.is-active:hover{background:var(--sdc-paginator-primary);color:var(--sdc-paginator-active-text, #ffffff);border-color:var(--sdc-paginator-primary)}.sdc-paginator .sdc-page:disabled{opacity:.5;cursor:not-allowed}.sdc-paginator .sdc-page--ellipsis{opacity:1;cursor:default;pointer-events:none;color:var(--sdc-paginator-primary);overflow:visible}.sdc-paginator .sdc-ellipsis-dots{display:inline-flex;align-items:center;justify-content:center;gap:var(--sdc-paginator-ellipsis-gap, 4px);position:relative;top:var(--sdc-paginator-ellipsis-offset-y, 2px)}.sdc-paginator .sdc-ellipsis-dot{width:var(--sdc-paginator-ellipsis-dot-size, 3px);height:var(--sdc-paginator-ellipsis-dot-size, 3px);border-radius:var(--sdc-radius-pill, 9999px);background:currentColor;display:block}.sdc-paginator .sdc-paginator-pages>.sdc-page:first-child{border-radius:var(--sdc-paginator-radius, 4px) 0 0 var(--sdc-paginator-radius, 4px)}.sdc-paginator .sdc-paginator-pages>.sdc-page:last-child{border-right-width:1px;border-radius:0 var(--sdc-paginator-radius, 4px) var(--sdc-paginator-radius, 4px) 0}.sdc-paginator .sdc-rows-combobox{width:max-content;min-width:var(--sdc-paginator-rows-min-width, 88px)}.sdc-paginator .sdc-total{white-space:nowrap}::ng-deep .sdc-paginator .sdc-rows-combobox{min-height:var(--sdc-paginator-rows-min-height, 24px)}@media (max-width: 768px){.sdc-paginator{flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.625rem .5rem}.sdc-paginator .sdc-paginator-left{flex-wrap:wrap;justify-content:center}.sdc-paginator .sdc-total{font-size:.8125rem}}\n"] }]
149
+ args: [{ selector: 'sdc-paginator', standalone: true, imports: [CommonModule, FormsModule, ComboboxComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav\n class=\"sdc-paginator\"\n role=\"navigation\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n>\n <div class=\"sdc-paginator-left\">\n <div class=\"sdc-paginator-pages\">\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"firstPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.first_page' | translate\"\n >\n <i class=\"fas fa-angle-double-left\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoBack()\"\n (click)=\"prevPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.previous_page' | translate\"\n >\n <i class=\"fas fa-angle-left\" aria-hidden=\"true\"></i>\n </button>\n\n @for (p of pages(); track $index) {\n @if (asNumber(p)) {\n <button\n type=\"button\"\n class=\"sdc-page\"\n [class.is-active]=\"isCurrent(p)\"\n [attr.aria-current]=\"isCurrent(p) ? 'page' : null\"\n [attr.aria-label]=\"\n isCurrent(p)\n ? ('platform.datacore.accessibility.current_page' | translate).replace('{number}', getPageLabel(p))\n : ('platform.datacore.accessibility.page_number' | translate).replace('{number}', getPageLabel(p))\n \"\n (click)=\"gotoPage(p)\"\n >\n {{ p + 1 }}\n </button>\n } @else {\n <button type=\"button\" class=\"sdc-page sdc-page--ellipsis\" disabled aria-hidden=\"true\" tabindex=\"-1\">\n <span class=\"sdc-ellipsis-dots\" aria-hidden=\"true\">\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n <span class=\"sdc-ellipsis-dot\"></span>\n </span>\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.next_page' | translate\"\n >\n <i class=\"fas fa-angle-right\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n type=\"button\"\n class=\"sdc-page sdc-edge\"\n [disabled]=\"!canGoForward()\"\n (click)=\"lastPage()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.last_page' | translate\"\n >\n <i class=\"fas fa-angle-double-right\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (showRowsPerPageSelector()) {\n <sdc-combobox\n class=\"sdc-rows-combobox\"\n [multiple]=\"false\"\n [searchable]=\"false\"\n [options]=\"rowOptions()\"\n [appendTo]=\"'body'\"\n [showClear]=\"false\"\n [ngModel]=\"rows().toString()\"\n (onSelectedItem)=\"onRowsComboModel($event)\"\n [attr.aria-label]=\"'platform.datacore.accessibility.rows_per_page' | translate\"\n >\n </sdc-combobox>\n }\n </div>\n\n @if (totalRecordsLabel()) {\n <span class=\"sdc-total\" aria-live=\"polite\">\n @if (shouldDisplayTotalRecordsFirst()) {\n {{ totalRecords() }} {{ totalRecordsDisplayLabel() | translate }}\n } @else {\n {{ totalRecordsDisplayLabel() | translate }}: {{ totalRecords() }}\n }\n </span>\n }\n</nav>\n", styles: [":host{--sdc-paginator-page-size: var(--sdc-table-paginator-size, 34px);--sdc-paginator-border: var(--sdc-table-border-gray, #cccccc);--sdc-paginator-primary: var(--sdc-table-primary, #428bca);--sdc-paginator-primary-hover: var(--sdc-table-primary-hover, #6aa3d5);display:block}.sdc-paginator{display:flex;align-items:center;justify-content:space-between;gap:var(--sdc-paginator-gap, 1rem);width:100%;box-sizing:border-box;padding:var(--sdc-paginator-padding, 10px 10px 10px 0)}.sdc-paginator .sdc-paginator-left{display:inline-flex;align-items:center;gap:var(--sdc-paginator-section-gap, .75rem)}.sdc-paginator .sdc-paginator-left ::ng-deep .sdc-combobox{width:var(--sdc-paginator-combobox-width, 6.5rem)!important;padding-left:var(--sdc-paginator-combobox-padding-left, 1rem)!important}.sdc-paginator .sdc-paginator-pages{display:inline-flex;align-items:center;gap:0}.sdc-paginator .sdc-page{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:var(--sdc-paginator-page-size);min-width:var(--sdc-paginator-page-size);max-width:var(--sdc-paginator-page-size);height:var(--sdc-paginator-page-size);min-height:var(--sdc-paginator-page-size);max-height:var(--sdc-paginator-page-size);margin:0;padding:0;border:1px solid var(--sdc-paginator-border);border-right-width:0;border-radius:0;background:transparent;color:var(--sdc-paginator-primary);display:inline-flex;align-items:center;justify-content:center;flex:0 0 var(--sdc-paginator-page-size);overflow:hidden;cursor:pointer;text-align:center;line-height:1;transition:var(--sdc-paginator-transition, background-color .2s ease-out, color .2s ease-out, border-color .2s ease-out)}.sdc-paginator .sdc-page:focus-visible{outline:2px solid currentColor;outline-offset:2px;z-index:1;position:relative}.sdc-paginator .sdc-page:hover:not(:disabled):not(.sdc-page--ellipsis):not(.is-active){color:var(--sdc-paginator-page-hover-text, #202129)}.sdc-paginator .sdc-page.is-active,.sdc-paginator .sdc-page.is-active:hover{background:var(--sdc-paginator-primary);color:var(--sdc-paginator-active-text, #ffffff);border-color:var(--sdc-paginator-primary)}.sdc-paginator .sdc-page:disabled{opacity:.5;cursor:not-allowed}.sdc-paginator .sdc-page--ellipsis{opacity:1;cursor:default;pointer-events:none;color:var(--sdc-paginator-primary);overflow:visible}.sdc-paginator .sdc-ellipsis-dots{display:inline-flex;align-items:center;justify-content:center;gap:var(--sdc-paginator-ellipsis-gap, 4px);position:relative;top:var(--sdc-paginator-ellipsis-offset-y, 2px)}.sdc-paginator .sdc-ellipsis-dot{width:var(--sdc-paginator-ellipsis-dot-size, 3px);height:var(--sdc-paginator-ellipsis-dot-size, 3px);border-radius:var(--sdc-radius-pill, 9999px);background:currentColor;display:block}.sdc-paginator .sdc-paginator-pages>.sdc-page:first-child{border-radius:var(--sdc-paginator-radius, 4px) 0 0 var(--sdc-paginator-radius, 4px)}.sdc-paginator .sdc-paginator-pages>.sdc-page:last-child{border-right-width:1px;border-radius:0 var(--sdc-paginator-radius, 4px) var(--sdc-paginator-radius, 4px) 0}.sdc-paginator .sdc-rows-combobox{width:max-content;min-width:var(--sdc-paginator-rows-min-width, 88px)}.sdc-paginator .sdc-total{white-space:nowrap}::ng-deep .sdc-paginator .sdc-rows-combobox{min-height:var(--sdc-paginator-rows-min-height, 24px)}@media (max-width: 768px){.sdc-paginator{flex-direction:column;align-items:center;justify-content:center;gap:.375rem;padding:.625rem .5rem}.sdc-paginator .sdc-paginator-left{flex-wrap:wrap;justify-content:center}.sdc-paginator .sdc-total{font-size:.8125rem}}\n"] }]
145
150
  }], propDecorators: { pageChange: [{
146
151
  type: Output
147
152
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUcsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIsNkNBQTZDLEVBQzdDLHFDQUFxQyxFQUNyQyw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDOUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVVuRSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDakMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNoQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBRXhDLGtCQUFrQixHQUFHLEtBQUssQ0FBOEIsU0FBUyxDQUFDLENBQUM7SUFDbkUsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLDZDQUE2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U0FBUztZQUNoQixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLGFBQWE7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F4S1Usa0JBQWtCOzRGQUFsQixrQkFBa0IsNmxDQzlCL0IsbzZHQW9HQSx1Z0hEM0VZLFlBQVksOEJBQUUsV0FBVywrVkFBRSxpQkFBaUIsdVVBQUUsZUFBZTs7NEZBSzVELGtCQUFrQjtrQkFSOUIsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUMsbUJBR3ZELHVCQUF1QixDQUFDLE1BQU07OEJBWXJDLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBPcHRpb25JdGVtLCBPcHRpb25WYWx1ZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvc2VtYW50aWNzLnR5cGUnO1xuaW1wb3J0IHR5cGUgeyBQYWdpbmF0b3JTdGF0ZSwgUGFnaW5hdG9yUGFnZXNJdGVtLCBQYWdpbmF0b3JSb3dzUGVyUGFnZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BhZ2luYXRvci50eXBlJztcbmltcG9ydCB7XG4gIFBBR0lOQVRPUl9ERUZBVUxUX0lTX01PQklMRSxcbiAgUEFHSU5BVE9SX0RFRkFVTFRfUk9XU19PUFRJT05TLFxuICBQQUdJTkFUT1JfREVGQVVMVF9TSE9XX1JPV1NfUEVSX1BBR0VfU0VMRUNUT1IsXG4gIFBBR0lOQVRPUl9ERUZBVUxUX1RPVEFMX1JFQ09SRFNfTEFCRUwsXG4gIFBBR0lOQVRPUl9ERVNLVE9QX1dJTkRPV19TSVpFLFxuICBQQUdJTkFUT1JfRklSU1RfUEFHRV9JTkRFWCxcbiAgUEFHSU5BVE9SX01JTl9ST1dTLFxuICBQQUdJTkFUT1JfTU9CSUxFX1dJTkRPV19TSVpFLFxuICBQQUdJTkFUT1JfUkVDT1JEX0ZPVU5EX0xBQkVMLFxuICBQQUdJTkFUT1JfUkVDT1JEU19GT1VORF9MQUJFTCxcbiAgUEFHSU5BVE9SX1RPVEFMX1JFQ09SRFNfTEFCRUxcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvcGFnaW5hdG9yLmNvbnN0JztcbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXBhZ2luYXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBDb21ib2JveENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQge1xuICBmaXJzdCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgcm93cyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgdG90YWxSZWNvcmRzID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXG4gIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PFBhZ2luYXRvclJvd3NQZXJQYWdlT3B0aW9ucz4odW5kZWZpbmVkKTtcbiAgc2hvd1Jvd3NQZXJQYWdlU2VsZWN0b3IgPSBpbnB1dChQQUdJTkFUT1JfREVGQVVMVF9TSE9XX1JPV1NfUEVSX1BBR0VfU0VMRUNUT1IpO1xuICBpc01vYmlsZSA9IGlucHV0KFBBR0lOQVRPUl9ERUZBVUxUX0lTX01PQklMRSk7XG4gIHRvdGFsUmVjb3Jkc0xhYmVsID0gaW5wdXQ8c3RyaW5nPihQQUdJTkFUT1JfREVGQVVMVF9UT1RBTF9SRUNPUkRTX0xBQkVMKTtcblxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdG9yU3RhdGU+KCk7XG5cbiAgcmVhZG9ubHkgZWZmZWN0aXZlUm93c1BlclBhZ2VPcHRpb25zID0gY29tcHV0ZWQ8bnVtYmVyW10+KCgpID0+IHtcbiAgICBjb25zdCBwcm92aWRlZCA9IHRoaXMucm93c1BlclBhZ2VPcHRpb25zKCkgPz8gUEFHSU5BVE9SX0RFRkFVTFRfUk9XU19PUFRJT05TO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBbLi4ucHJvdmlkZWRdXG4gICAgICAubWFwKE51bWJlcilcbiAgICAgIC5maWx0ZXIodiA9PiBOdW1iZXIuaXNGaW5pdGUodikgJiYgdiA+IDApXG4gICAgICAubWFwKHYgPT4gTWF0aC50cnVuYyh2KSk7XG5cbiAgICBjb25zdCB1bmlxdWUgPSBBcnJheS5mcm9tKG5ldyBTZXQobm9ybWFsaXplZCkpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3dzID0gTWF0aC5tYXgoUEFHSU5BVE9SX01JTl9ST1dTLCBNYXRoLnRydW5jKHRoaXMucm93cygpIHx8IFBBR0lOQVRPUl9NSU5fUk9XUykpO1xuXG4gICAgaWYgKCF1bmlxdWUuaW5jbHVkZXMoY3VycmVudFJvd3MpKSB7XG4gICAgICB1bmlxdWUudW5zaGlmdChjdXJyZW50Um93cyk7XG4gICAgfVxuXG4gICAgaWYgKHVuaXF1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbY3VycmVudFJvd3NdO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlxdWU7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJvd09wdGlvbnMgPSBjb21wdXRlZDxPcHRpb25JdGVtW10+KCgpID0+XG4gICAgdGhpcy5lZmZlY3RpdmVSb3dzUGVyUGFnZU9wdGlvbnMoKS5tYXAodiA9PiAoe1xuICAgICAgdGV4dDogU3RyaW5nKHYpLFxuICAgICAgdmFsdWU6IFN0cmluZyh2KSBhcyBPcHRpb25WYWx1ZVxuICAgIH0pKVxuICApO1xuXG4gIHJlYWRvbmx5IHBhZ2VDb3VudCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIGNvbnN0IHRvdGFsID0gTWF0aC5tYXgoMCwgdGhpcy50b3RhbFJlY29yZHMoKSk7XG4gICAgY29uc3QgcGFnZVNpemUgPSBNYXRoLm1heChQQUdJTkFUT1JfTUlOX1JPV1MsIHRoaXMucm93cygpKTtcbiAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IE1hdGgubWF4KFBBR0lOQVRPUl9NSU5fUk9XUywgdGhpcy5yb3dzKCkpO1xuICAgIGNvbnN0IHJhdyA9IE1hdGguZmxvb3IodGhpcy5maXJzdCgpIC8gcGFnZVNpemUpO1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChyYXcsIFBBR0lOQVRPUl9GSVJTVF9QQUdFX0lOREVYKSwgdGhpcy5wYWdlQ291bnQoKSAtIDEpO1xuICB9KTtcblxuICByZWFkb25seSBwYWdlcyA9IGNvbXB1dGVkPFBhZ2luYXRvclBhZ2VzSXRlbVtdPigoKSA9PiB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnBhZ2VDb3VudCgpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmN1cnJlbnRQYWdlKCk7XG4gICAgY29uc3Qgd2luZG93U2l6ZSA9IHRoaXMuaXNNb2JpbGUoKSA/IFBBR0lOQVRPUl9NT0JJTEVfV0lORE9XX1NJWkUgOiBQQUdJTkFUT1JfREVTS1RPUF9XSU5ET1dfU0laRTtcblxuICAgIGlmIChjb3VudCA8PSB3aW5kb3dTaXplKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgKF8sIGkpID0+IGkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZGVTbG90cyA9IE1hdGguZmxvb3IoKHdpbmRvd1NpemUgLSAzKSAvIDIpO1xuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMSwgY3VycmVudCAtIHNpZGVTbG90cyk7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4oY291bnQgLSAyLCBjdXJyZW50ICsgc2lkZVNsb3RzKTtcblxuICAgIGNvbnN0IGl0ZW1zOiBQYWdpbmF0b3JQYWdlc0l0ZW1bXSA9IFswXTtcblxuICAgIGlmIChzdGFydCA+IDEpIHtcbiAgICAgIGl0ZW1zLnB1c2goJ+KApicpO1xuICAgIH1cblxuICAgIGZvciAobGV0IHAgPSBzdGFydDsgcCA8PSBlbmQ7IHArKykge1xuICAgICAgaXRlbXMucHVzaChwKTtcbiAgICB9XG5cbiAgICBpZiAoZW5kIDwgY291bnQgLSAyKSB7XG4gICAgICBpdGVtcy5wdXNoKCfigKYnKTtcbiAgICB9XG5cbiAgICBpdGVtcy5wdXNoKGNvdW50IC0gMSk7XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNhbkdvQmFjayA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHRoaXMuY3VycmVudFBhZ2UoKSA+IFBBR0lOQVRPUl9GSVJTVF9QQUdFX0lOREVYKTtcbiAgcmVhZG9ubHkgY2FuR29Gb3J3YXJkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5jdXJyZW50UGFnZSgpIDwgdGhpcy5wYWdlQ291bnQoKSAtIDEpO1xuICByZWFkb25seSBzaG91bGREaXNwbGF5VG90YWxSZWNvcmRzRmlyc3QgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PlxuICAgIHRoaXMuaXNEZWZhdWx0UmVjb3Jkc0xhYmVsKHRoaXMudG90YWxSZWNvcmRzTGFiZWwoKSlcbiAgKTtcbiAgcmVhZG9ubHkgdG90YWxSZWNvcmRzRGlzcGxheUxhYmVsID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnRvdGFsUmVjb3Jkc0xhYmVsKCk7XG5cbiAgICBpZiAoIXRoaXMuaXNEZWZhdWx0UmVjb3Jkc0xhYmVsKGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvdGFsUmVjb3JkcygpID09PSAxXG4gICAgICA/IFBBR0lOQVRPUl9SRUNPUkRfRk9VTkRfTEFCRUxcbiAgICAgIDogUEFHSU5BVE9SX1JFQ09SRFNfRk9VTkRfTEFCRUw7XG4gIH0pO1xuXG4gIGdvdG9QYWdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBNYXRoLm1pbihNYXRoLm1heChNYXRoLnRydW5jKGluZGV4KSwgMCksIHRoaXMucGFnZUNvdW50KCkgLSAxKTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UodGFyZ2V0ICogTWF0aC5tYXgoUEFHSU5BVE9SX01JTl9ST1dTLCB0aGlzLnJvd3MoKSkpO1xuICB9XG5cbiAgZmlyc3RQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuZ290b1BhZ2UoMCk7XG4gIH1cblxuICBwcmV2UGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmdvdG9QYWdlKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpO1xuICB9XG5cbiAgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5nb3RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlKCkgKyAxKTtcbiAgfVxuXG4gIGxhc3RQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuZ290b1BhZ2UodGhpcy5wYWdlQ291bnQoKSAtIDEpO1xuICB9XG5cbiAgb25Sb3dzQ2hhbmdlKHJvd3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZW1pdENoYW5nZSgwLCByb3dzKTtcbiAgfVxuXG4gIG9uUm93c0NvbWJvTW9kZWwodmFsOiBPcHRpb25WYWx1ZSB8IE9wdGlvblZhbHVlW10gfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgcmF3ID0gQXJyYXkuaXNBcnJheSh2YWwpID8gdmFsWzBdIDogdmFsO1xuICAgIGNvbnN0IG4gPSBOdW1iZXIocmF3KTtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pICYmIG4gPiAwKSB7XG4gICAgICB0aGlzLm9uUm93c0NoYW5nZShuKTtcbiAgICB9XG4gIH1cblxuICBpc0N1cnJlbnQocGFnZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2UgPT09IHRoaXMuY3VycmVudFBhZ2UoKTtcbiAgfVxuXG4gIGFzTnVtYmVyKHA6IFBhZ2luYXRvclBhZ2VzSXRlbSk6IHAgaXMgbnVtYmVyIHtcbiAgICByZXR1cm4gdHlwZW9mIHAgPT09ICdudW1iZXInO1xuICB9XG5cbiAgZ2V0UGFnZUxhYmVsKHBhZ2U6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyhwYWdlICsgMSk7XG4gIH1cblxuICBwcml2YXRlIGlzRGVmYXVsdFJlY29yZHNMYWJlbChsYWJlbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFBBR0lOQVRPUl9UT1RBTF9SRUNPUkRTX0xBQkVMLFxuICAgICAgUEFHSU5BVE9SX1JFQ09SRF9GT1VORF9MQUJFTCxcbiAgICAgIFBBR0lOQVRPUl9SRUNPUkRTX0ZPVU5EX0xBQkVMXG4gICAgXS5pbmNsdWRlcyhsYWJlbCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UoZmlyc3Q6IG51bWJlciwgcm93cyA9IHRoaXMucm93cygpKTogdm9pZCB7XG4gICAgY29uc3Qgc2FmZVJvd3MgPSBNYXRoLm1heChQQUdJTkFUT1JfTUlOX1JPV1MsIE1hdGgudHJ1bmMocm93cyB8fCBQQUdJTkFUT1JfTUlOX1JPV1MpKTtcbiAgICBjb25zdCBzYWZlUGFnZUNvdW50ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKE1hdGgubWF4KDAsIHRoaXMudG90YWxSZWNvcmRzKCkpIC8gc2FmZVJvd3MpKTtcbiAgICBjb25zdCBtYXhGaXJzdCA9IE1hdGgubWF4KDAsIChzYWZlUGFnZUNvdW50IC0gMSkgKiBzYWZlUm93cyk7XG4gICAgY29uc3Qgc2FmZUZpcnN0ID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgTWF0aC50cnVuYyhmaXJzdCB8fCAwKSksIG1heEZpcnN0KTtcbiAgICBjb25zdCBzYWZlUGFnZSA9IE1hdGguZmxvb3Ioc2FmZUZpcnN0IC8gc2FmZVJvd3MpO1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgZmlyc3Q6IHNhZmVGaXJzdCxcbiAgICAgIHJvd3M6IHNhZmVSb3dzLFxuICAgICAgcGFnZTogc2FmZVBhZ2UsXG4gICAgICBwYWdlQ291bnQ6IHNhZmVQYWdlQ291bnRcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5hdlxuICBjbGFzcz1cInNkYy1wYWdpbmF0b3JcIlxuICByb2xlPVwibmF2aWdhdGlvblwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFnaW5hdGlvbl9uYXZpZ2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZGMtcGFnaW5hdG9yLWxlZnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLXBhZ2luYXRvci1wYWdlc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtcGFnZSBzZGMtZWRnZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29CYWNrKClcIlxuICAgICAgICAoY2xpY2spPVwiZmlyc3RQYWdlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LmZpcnN0X3BhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG91YmxlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtcGFnZSBzZGMtZWRnZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29CYWNrKClcIlxuICAgICAgICAoY2xpY2spPVwicHJldlBhZ2UoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucHJldmlvdXNfcGFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIEBmb3IgKHAgb2YgcGFnZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBpZiAoYXNOdW1iZXIocCkpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLXBhZ2VcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJpc0N1cnJlbnQocClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImlzQ3VycmVudChwKSA/ICdwYWdlJyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgaXNDdXJyZW50KHApXG4gICAgICAgICAgICAgICAgPyAoJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkuY3VycmVudF9wYWdlJyB8IHRyYW5zbGF0ZSkucmVwbGFjZSgne251bWJlcn0nLCBnZXRQYWdlTGFiZWwocCkpXG4gICAgICAgICAgICAgICAgOiAoJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFnZV9udW1iZXInIHwgdHJhbnNsYXRlKS5yZXBsYWNlKCd7bnVtYmVyfScsIGdldFBhZ2VMYWJlbChwKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ290b1BhZ2UocClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHAgKyAxIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2RjLXBhZ2Ugc2RjLXBhZ2UtLWVsbGlwc2lzXCIgZGlzYWJsZWQgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZWxsaXBzaXMtZG90c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1lbGxpcHNpcy1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWVsbGlwc2lzLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZWxsaXBzaXMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwic2RjLXBhZ2Ugc2RjLWVkZ2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvRm9yd2FyZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5Lm5leHRfcGFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNkYy1wYWdlIHNkYy1lZGdlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb0ZvcndhcmQoKVwiXG4gICAgICAgIChjbGljayk9XCJsYXN0UGFnZSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5sYXN0X3BhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtZG91YmxlLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHNob3dSb3dzUGVyUGFnZVNlbGVjdG9yKCkpIHtcbiAgICAgIDxzZGMtY29tYm9ib3hcbiAgICAgICAgY2xhc3M9XCJzZGMtcm93cy1jb21ib2JveFwiXG4gICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgIFtvcHRpb25zXT1cInJvd09wdGlvbnMoKVwiXG4gICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICBbc2hvd0NsZWFyXT1cImZhbHNlXCJcbiAgICAgICAgW25nTW9kZWxdPVwicm93cygpLnRvU3RyaW5nKClcIlxuICAgICAgICAob25TZWxlY3RlZEl0ZW0pPVwib25Sb3dzQ29tYm9Nb2RlbCgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5yb3dzX3Blcl9wYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3NkYy1jb21ib2JveD5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAodG90YWxSZWNvcmRzTGFiZWwoKSkge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLXRvdGFsXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICBAaWYgKHNob3VsZERpc3BsYXlUb3RhbFJlY29yZHNGaXJzdCgpKSB7XG4gICAgICAgIHt7IHRvdGFsUmVjb3JkcygpIH19IHt7IHRvdGFsUmVjb3Jkc0Rpc3BsYXlMYWJlbCgpIHwgdHJhbnNsYXRlIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgdG90YWxSZWNvcmRzRGlzcGxheUxhYmVsKCkgfCB0cmFuc2xhdGUgfX06IHt7IHRvdGFsUmVjb3JkcygpIH19XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICB9XG48L25hdj5cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUcsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw4QkFBOEIsRUFDOUIsNkNBQTZDLEVBQzdDLHFDQUFxQyxFQUNyQyw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDOUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVVuRSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDakMsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNoQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBRXhDLGtCQUFrQixHQUFHLEtBQUssQ0FBOEIsU0FBUyxDQUFDLENBQUM7SUFDbkUsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLDZDQUE2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QyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRSxhQUFhO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBOUtVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDZsQ0M5Qi9CLG84R0FxR0EsdWdIRDVFWSxZQUFZLDhCQUFFLFdBQVcsK1ZBQUUsaUJBQWlCLHFWQUFFLGVBQWU7OzRGQUs1RCxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLG1CQUd2RCx1QkFBdUIsQ0FBQyxNQUFNOzhCQVlyQyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgT3B0aW9uSXRlbSwgT3B0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3NlbWFudGljcy50eXBlJztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdG9yU3RhdGUsIFBhZ2luYXRvclBhZ2VzSXRlbSwgUGFnaW5hdG9yUm93c1BlclBhZ2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9wYWdpbmF0b3IudHlwZSc7XG5pbXBvcnQge1xuICBQQUdJTkFUT1JfREVGQVVMVF9JU19NT0JJTEUsXG4gIFBBR0lOQVRPUl9ERUZBVUxUX1JPV1NfT1BUSU9OUyxcbiAgUEFHSU5BVE9SX0RFRkFVTFRfU0hPV19ST1dTX1BFUl9QQUdFX1NFTEVDVE9SLFxuICBQQUdJTkFUT1JfREVGQVVMVF9UT1RBTF9SRUNPUkRTX0xBQkVMLFxuICBQQUdJTkFUT1JfREVTS1RPUF9XSU5ET1dfU0laRSxcbiAgUEFHSU5BVE9SX0ZJUlNUX1BBR0VfSU5ERVgsXG4gIFBBR0lOQVRPUl9NSU5fUk9XUyxcbiAgUEFHSU5BVE9SX01PQklMRV9XSU5ET1dfU0laRSxcbiAgUEFHSU5BVE9SX1JFQ09SRF9GT1VORF9MQUJFTCxcbiAgUEFHSU5BVE9SX1JFQ09SRFNfRk9VTkRfTEFCRUwsXG4gIFBBR0lOQVRPUl9UT1RBTF9SRUNPUkRTX0xBQkVMXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3BhZ2luYXRvci5jb25zdCc7XG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1wYWdpbmF0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ29tYm9ib3hDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdG9yQ29tcG9uZW50IHtcbiAgZmlyc3QgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHJvd3MgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHRvdGFsUmVjb3JkcyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblxuICByb3dzUGVyUGFnZU9wdGlvbnMgPSBpbnB1dDxQYWdpbmF0b3JSb3dzUGVyUGFnZU9wdGlvbnM+KHVuZGVmaW5lZCk7XG4gIHNob3dSb3dzUGVyUGFnZVNlbGVjdG9yID0gaW5wdXQoUEFHSU5BVE9SX0RFRkFVTFRfU0hPV19ST1dTX1BFUl9QQUdFX1NFTEVDVE9SKTtcbiAgaXNNb2JpbGUgPSBpbnB1dChQQUdJTkFUT1JfREVGQVVMVF9JU19NT0JJTEUpO1xuICB0b3RhbFJlY29yZHNMYWJlbCA9IGlucHV0PHN0cmluZz4oUEFHSU5BVE9SX0RFRkFVTFRfVE9UQUxfUkVDT1JEU19MQUJFTCk7XG5cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRvclN0YXRlPigpO1xuXG4gIHJlYWRvbmx5IGVmZmVjdGl2ZVJvd3NQZXJQYWdlT3B0aW9ucyA9IGNvbXB1dGVkPG51bWJlcltdPigoKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZWQgPSB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucygpID8/IFBBR0lOQVRPUl9ERUZBVUxUX1JPV1NfT1BUSU9OUztcbiAgICBjb25zdCBub3JtYWxpemVkID0gWy4uLnByb3ZpZGVkXVxuICAgICAgLm1hcChOdW1iZXIpXG4gICAgICAuZmlsdGVyKHYgPT4gTnVtYmVyLmlzRmluaXRlKHYpICYmIHYgPiAwKVxuICAgICAgLm1hcCh2ID0+IE1hdGgudHJ1bmModikpO1xuXG4gICAgY29uc3QgdW5pcXVlID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vcm1hbGl6ZWQpKTtcbiAgICBjb25zdCBjdXJyZW50Um93cyA9IE1hdGgubWF4KFBBR0lOQVRPUl9NSU5fUk9XUywgTWF0aC50cnVuYyh0aGlzLnJvd3MoKSB8fCBQQUdJTkFUT1JfTUlOX1JPV1MpKTtcblxuICAgIGlmICghdW5pcXVlLmluY2x1ZGVzKGN1cnJlbnRSb3dzKSkge1xuICAgICAgdW5pcXVlLnVuc2hpZnQoY3VycmVudFJvd3MpO1xuICAgIH1cblxuICAgIGlmICh1bmlxdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW2N1cnJlbnRSb3dzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5pcXVlO1xuICB9KTtcblxuICByZWFkb25seSByb3dPcHRpb25zID0gY29tcHV0ZWQ8T3B0aW9uSXRlbVtdPigoKSA9PlxuICAgIHRoaXMuZWZmZWN0aXZlUm93c1BlclBhZ2VPcHRpb25zKCkubWFwKHYgPT4gKHtcbiAgICAgIHRleHQ6IFN0cmluZyh2KSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodikgYXMgT3B0aW9uVmFsdWVcbiAgICB9KSlcbiAgKTtcblxuICByZWFkb25seSBwYWdlQ291bnQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IE1hdGgubWF4KDAsIHRoaXMudG90YWxSZWNvcmRzKCkpO1xuICAgIGNvbnN0IHBhZ2VTaXplID0gTWF0aC5tYXgoUEFHSU5BVE9SX01JTl9ST1dTLCB0aGlzLnJvd3MoKSk7XG4gICAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRQYWdlID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgcGFnZVNpemUgPSBNYXRoLm1heChQQUdJTkFUT1JfTUlOX1JPV1MsIHRoaXMucm93cygpKTtcbiAgICBjb25zdCByYXcgPSBNYXRoLmZsb29yKHRoaXMuZmlyc3QoKSAvIHBhZ2VTaXplKTtcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgocmF3LCBQQUdJTkFUT1JfRklSU1RfUEFHRV9JTkRFWCksIHRoaXMucGFnZUNvdW50KCkgLSAxKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGFnZXMgPSBjb21wdXRlZDxQYWdpbmF0b3JQYWdlc0l0ZW1bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wYWdlQ291bnQoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5jdXJyZW50UGFnZSgpO1xuICAgIGNvbnN0IHdpbmRvd1NpemUgPSB0aGlzLmlzTW9iaWxlKCkgPyBQQUdJTkFUT1JfTU9CSUxFX1dJTkRPV19TSVpFIDogUEFHSU5BVE9SX0RFU0tUT1BfV0lORE9XX1NJWkU7XG5cbiAgICAvLyBGb3Igc21hbGwgcGFnZSBjb3VudHMgKOKJpCAxMiksIHNob3cgYWxsIHBhZ2VzIHdpdGhvdXQgZWxsaXBzaXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgdHJ1bmNhdGlvblxuICAgIGNvbnN0IHNob3dBbGxQYWdlc1RocmVzaG9sZCA9IDEyO1xuICAgIGlmIChjb3VudCA8PSBzaG93QWxsUGFnZXNUaHJlc2hvbGQpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoXywgaSkgPT4gaSk7XG4gICAgfVxuXG4gICAgaWYgKGNvdW50IDw9IHdpbmRvd1NpemUpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoXywgaSkgPT4gaSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lkZVNsb3RzID0gTWF0aC5mbG9vcigod2luZG93U2l6ZSAtIDMpIC8gMik7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgxLCBjdXJyZW50IC0gc2lkZVNsb3RzKTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihjb3VudCAtIDIsIGN1cnJlbnQgKyBzaWRlU2xvdHMpO1xuXG4gICAgY29uc3QgaXRlbXM6IFBhZ2luYXRvclBhZ2VzSXRlbVtdID0gWzBdO1xuXG4gICAgaWYgKHN0YXJ0ID4gMSkge1xuICAgICAgaXRlbXMucHVzaCgn4oCmJyk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgcCA9IHN0YXJ0OyBwIDw9IGVuZDsgcCsrKSB7XG4gICAgICBpdGVtcy5wdXNoKHApO1xuICAgIH1cblxuICAgIGlmIChlbmQgPCBjb3VudCAtIDIpIHtcbiAgICAgIGl0ZW1zLnB1c2goJ+KApicpO1xuICAgIH1cblxuICAgIGl0ZW1zLnB1c2goY291bnQgLSAxKTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY2FuR29CYWNrID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5jdXJyZW50UGFnZSgpID4gUEFHSU5BVE9SX0ZJUlNUX1BBR0VfSU5ERVgpO1xuICByZWFkb25seSBjYW5Hb0ZvcndhcmQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLmN1cnJlbnRQYWdlKCkgPCB0aGlzLnBhZ2VDb3VudCgpIC0gMSk7XG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlUb3RhbFJlY29yZHNGaXJzdCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy5pc0RlZmF1bHRSZWNvcmRzTGFiZWwodGhpcy50b3RhbFJlY29yZHNMYWJlbCgpKVxuICApO1xuICByZWFkb25seSB0b3RhbFJlY29yZHNEaXNwbGF5TGFiZWwgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMudG90YWxSZWNvcmRzTGFiZWwoKTtcblxuICAgIGlmICghdGhpcy5pc0RlZmF1bHRSZWNvcmRzTGFiZWwobGFiZWwpKSB7XG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudG90YWxSZWNvcmRzKCkgPT09IDFcbiAgICAgID8gUEFHSU5BVE9SX1JFQ09SRF9GT1VORF9MQUJFTFxuICAgICAgOiBQQUdJTkFUT1JfUkVDT1JEU19GT1VORF9MQUJFTDtcbiAgfSk7XG5cbiAgZ290b1BhZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IE1hdGgubWluKE1hdGgubWF4KE1hdGgudHJ1bmMoaW5kZXgpLCAwKSwgdGhpcy5wYWdlQ291bnQoKSAtIDEpO1xuICAgIHRoaXMuZW1pdENoYW5nZSh0YXJnZXQgKiBNYXRoLm1heChQQUdJTkFUT1JfTUlOX1JPV1MsIHRoaXMucm93cygpKSk7XG4gIH1cblxuICBmaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5nb3RvUGFnZSgwKTtcbiAgfVxuXG4gIHByZXZQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuZ290b1BhZ2UodGhpcy5jdXJyZW50UGFnZSgpIC0gMSk7XG4gIH1cblxuICBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmdvdG9QYWdlKHRoaXMuY3VycmVudFBhZ2UoKSArIDEpO1xuICB9XG5cbiAgbGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5nb3RvUGFnZSh0aGlzLnBhZ2VDb3VudCgpIC0gMSk7XG4gIH1cblxuICBvblJvd3NDaGFuZ2Uocm93czogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKDAsIHJvd3MpO1xuICB9XG5cbiAgb25Sb3dzQ29tYm9Nb2RlbCh2YWw6IE9wdGlvblZhbHVlIHwgT3B0aW9uVmFsdWVbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBjb25zdCByYXcgPSBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWxbMF0gOiB2YWw7XG4gICAgY29uc3QgbiA9IE51bWJlcihyYXcpO1xuXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikgJiYgbiA+IDApIHtcbiAgICAgIHRoaXMub25Sb3dzQ2hhbmdlKG4pO1xuICAgIH1cbiAgfVxuXG4gIGlzQ3VycmVudChwYWdlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSgpO1xuICB9XG5cbiAgYXNOdW1iZXIocDogUGFnaW5hdG9yUGFnZXNJdGVtKTogcCBpcyBudW1iZXIge1xuICAgIHJldHVybiB0eXBlb2YgcCA9PT0gJ251bWJlcic7XG4gIH1cblxuICBnZXRQYWdlTGFiZWwocGFnZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHBhZ2UgKyAxKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEZWZhdWx0UmVjb3Jkc0xhYmVsKGxhYmVsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgUEFHSU5BVE9SX1RPVEFMX1JFQ09SRFNfTEFCRUwsXG4gICAgICBQQUdJTkFUT1JfUkVDT1JEX0ZPVU5EX0xBQkVMLFxuICAgICAgUEFHSU5BVE9SX1JFQ09SRFNfRk9VTkRfTEFCRUxcbiAgICBdLmluY2x1ZGVzKGxhYmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZShmaXJzdDogbnVtYmVyLCByb3dzID0gdGhpcy5yb3dzKCkpOiB2b2lkIHtcbiAgICBjb25zdCBzYWZlUm93cyA9IE1hdGgubWF4KFBBR0lOQVRPUl9NSU5fUk9XUywgTWF0aC50cnVuYyhyb3dzIHx8IFBBR0lOQVRPUl9NSU5fUk9XUykpO1xuICAgIGNvbnN0IHNhZmVQYWdlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoTWF0aC5tYXgoMCwgdGhpcy50b3RhbFJlY29yZHMoKSkgLyBzYWZlUm93cykpO1xuICAgIGNvbnN0IG1heEZpcnN0ID0gTWF0aC5tYXgoMCwgKHNhZmVQYWdlQ291bnQgLSAxKSAqIHNhZmVSb3dzKTtcbiAgICBjb25zdCBzYWZlRmlyc3QgPSBNYXRoLm1pbihNYXRoLm1heCgwLCBNYXRoLnRydW5jKGZpcnN0IHx8IDApKSwgbWF4Rmlyc3QpO1xuICAgIGNvbnN0IHNhZmVQYWdlID0gTWF0aC5mbG9vcihzYWZlRmlyc3QgLyBzYWZlUm93cyk7XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICBmaXJzdDogc2FmZUZpcnN0LFxuICAgICAgcm93czogc2FmZVJvd3MsXG4gICAgICBwYWdlOiBzYWZlUGFnZSxcbiAgICAgIHBhZ2VDb3VudDogc2FmZVBhZ2VDb3VudFxuICAgIH0pO1xuICB9XG59XG4iLCI8bmF2XG4gIGNsYXNzPVwic2RjLXBhZ2luYXRvclwiXG4gIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYWdpbmF0aW9uX25hdmlnYXRpb24nIHwgdHJhbnNsYXRlXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy1wYWdpbmF0b3ItbGVmdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZGMtcGFnaW5hdG9yLXBhZ2VzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNkYy1wYWdlIHNkYy1lZGdlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb0JhY2soKVwiXG4gICAgICAgIChjbGljayk9XCJmaXJzdFBhZ2UoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkuZmlyc3RfcGFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3VibGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInNkYy1wYWdlIHNkYy1lZGdlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb0JhY2soKVwiXG4gICAgICAgIChjbGljayk9XCJwcmV2UGFnZSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wcmV2aW91c19wYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgQGZvciAocCBvZiBwYWdlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChhc051bWJlcihwKSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtcGFnZVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cImlzQ3VycmVudChwKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNDdXJyZW50KHApID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICBpc0N1cnJlbnQocClcbiAgICAgICAgICAgICAgICA/ICgncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5jdXJyZW50X3BhZ2UnIHwgdHJhbnNsYXRlKS5yZXBsYWNlKCd7bnVtYmVyfScsIGdldFBhZ2VMYWJlbChwKSlcbiAgICAgICAgICAgICAgICA6ICgncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYWdlX251bWJlcicgfCB0cmFuc2xhdGUpLnJlcGxhY2UoJ3tudW1iZXJ9JywgZ2V0UGFnZUxhYmVsKHApKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb3RvUGFnZShwKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcCArIDEgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzZGMtcGFnZSBzZGMtcGFnZS0tZWxsaXBzaXNcIiBkaXNhYmxlZCBhcmlhLWhpZGRlbj1cInRydWVcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1lbGxpcHNpcy1kb3RzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWVsbGlwc2lzLWRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZWxsaXBzaXMtZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1lbGxpcHNpcy1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtcGFnZSBzZGMtZWRnZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29Gb3J3YXJkKClcIlxuICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubmV4dF9wYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFuZ2xlLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwic2RjLXBhZ2Ugc2RjLWVkZ2VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvRm9yd2FyZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cImxhc3RQYWdlKClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5Lmxhc3RfcGFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoc2hvd1Jvd3NQZXJQYWdlU2VsZWN0b3IoKSkge1xuICAgICAgPHNkYy1jb21ib2JveFxuICAgICAgICBjbGFzcz1cInNkYy1yb3dzLWNvbWJvYm94XCJcbiAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxuICAgICAgICBbb3B0aW9uc109XCJyb3dPcHRpb25zKClcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgW3Nob3dDbGVhcl09XCJmYWxzZVwiXG4gICAgICAgIFtuZ01vZGVsXT1cInJvd3MoKS50b1N0cmluZygpXCJcbiAgICAgICAgKG9uU2VsZWN0ZWRJdGVtKT1cIm9uUm93c0NvbWJvTW9kZWwoJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucm93c19wZXJfcGFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgPC9zZGMtY29tYm9ib3g+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKHRvdGFsUmVjb3Jkc0xhYmVsKCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cInNkYy10b3RhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgQGlmIChzaG91bGREaXNwbGF5VG90YWxSZWNvcmRzRmlyc3QoKSkge1xuICAgICAgICB7eyB0b3RhbFJlY29yZHMoKSB9fSB7eyB0b3RhbFJlY29yZHNEaXNwbGF5TGFiZWwoKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IHRvdGFsUmVjb3Jkc0Rpc3BsYXlMYWJlbCgpIHwgdHJhbnNsYXRlIH19OiB7eyB0b3RhbFJlY29yZHMoKSB9fVxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgfVxuPC9uYXY+XG4iXX0=