valtech-components 2.0.689 → 2.0.690

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 (1362) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +94 -0
  2. package/esm2022/lib/components/atoms/avatar/types.mjs +2 -0
  3. package/esm2022/lib/components/atoms/box/box.component.mjs +88 -0
  4. package/esm2022/lib/components/atoms/box/types.mjs +2 -0
  5. package/esm2022/lib/components/atoms/button/button.component.mjs +174 -0
  6. package/esm2022/lib/components/atoms/button/factory.mjs +217 -0
  7. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +340 -0
  8. package/esm2022/lib/components/atoms/countdown/types.mjs +27 -0
  9. package/esm2022/lib/components/atoms/display/display.component.mjs +51 -0
  10. package/esm2022/lib/components/atoms/display/types.mjs +2 -0
  11. package/esm2022/lib/components/atoms/divider/divider.component.mjs +27 -0
  12. package/esm2022/lib/components/atoms/divider/types.mjs +2 -0
  13. package/esm2022/lib/components/atoms/fab/fab.component.mjs +190 -0
  14. package/esm2022/lib/components/atoms/fab/types.mjs +2 -0
  15. package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
  16. package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
  17. package/esm2022/lib/components/atoms/href/href.component.mjs +62 -0
  18. package/esm2022/lib/components/atoms/href/types.mjs +2 -0
  19. package/esm2022/lib/components/atoms/icon/icon.component.mjs +29 -0
  20. package/esm2022/lib/components/atoms/icon/types.mjs +2 -0
  21. package/esm2022/lib/components/atoms/image/image.component.mjs +507 -0
  22. package/esm2022/lib/components/atoms/image/types.mjs +2 -0
  23. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +235 -0
  24. package/esm2022/lib/components/atoms/price-tag/types.mjs +15 -0
  25. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +91 -0
  26. package/esm2022/lib/components/atoms/progress-bar/types.mjs +2 -0
  27. package/esm2022/lib/components/atoms/progress-ring/progress-ring.component.mjs +149 -0
  28. package/esm2022/lib/components/atoms/progress-ring/types.mjs +2 -0
  29. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +394 -0
  30. package/esm2022/lib/components/atoms/qr-code/types.mjs +2 -0
  31. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +108 -0
  32. package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
  33. package/esm2022/lib/components/atoms/skeleton/skeleton.component.mjs +193 -0
  34. package/esm2022/lib/components/atoms/skeleton/types.mjs +13 -0
  35. package/esm2022/lib/components/atoms/text/text.component.mjs +132 -0
  36. package/esm2022/lib/components/atoms/text/types.mjs +2 -0
  37. package/esm2022/lib/components/atoms/title/title.component.mjs +68 -0
  38. package/esm2022/lib/components/atoms/title/types.mjs +22 -0
  39. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +120 -0
  40. package/esm2022/lib/components/molecules/accordion/types.mjs +2 -0
  41. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +298 -0
  42. package/esm2022/lib/components/molecules/action-card/types.mjs +11 -0
  43. package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +26 -0
  44. package/esm2022/lib/components/molecules/action-header/types.mjs +2 -0
  45. package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +274 -0
  46. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +119 -0
  47. package/esm2022/lib/components/molecules/alert-box/types.mjs +2 -0
  48. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +130 -0
  49. package/esm2022/lib/components/molecules/breadcrumb/types.mjs +2 -0
  50. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +63 -0
  51. package/esm2022/lib/components/molecules/button-group/types.mjs +2 -0
  52. package/esm2022/lib/components/molecules/card/card.component.mjs +450 -0
  53. package/esm2022/lib/components/molecules/card/types.mjs +16 -0
  54. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +82 -0
  55. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +166 -0
  56. package/esm2022/lib/components/molecules/chip-group/types.mjs +2 -0
  57. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +115 -0
  58. package/esm2022/lib/components/molecules/code-display/types.mjs +2 -0
  59. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +49 -0
  60. package/esm2022/lib/components/molecules/command-display/types.mjs +2 -0
  61. package/esm2022/lib/components/molecules/comment/comment.component.mjs +618 -0
  62. package/esm2022/lib/components/molecules/comment/types.mjs +2 -0
  63. package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +41 -0
  64. package/esm2022/lib/components/molecules/comment-input/types.mjs +2 -0
  65. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +42 -0
  66. package/esm2022/lib/components/molecules/content-loader/types.mjs +2 -0
  67. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +218 -0
  68. package/esm2022/lib/components/molecules/content-reaction/types.mjs +2 -0
  69. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +347 -0
  70. package/esm2022/lib/components/molecules/currency-input/types.mjs +18 -0
  71. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +148 -0
  72. package/esm2022/lib/components/molecules/date-input/types.mjs +2 -0
  73. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +416 -0
  74. package/esm2022/lib/components/molecules/date-range-input/types.mjs +2 -0
  75. package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +222 -0
  76. package/esm2022/lib/components/molecules/docs-api-table/types.mjs +11 -0
  77. package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +144 -0
  78. package/esm2022/lib/components/molecules/docs-breadcrumb/types.mjs +2 -0
  79. package/esm2022/lib/components/molecules/docs-callout/docs-callout.component.mjs +60 -0
  80. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +255 -0
  81. package/esm2022/lib/components/molecules/docs-code-example/types.mjs +2 -0
  82. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +140 -0
  83. package/esm2022/lib/components/molecules/docs-nav-links/types.mjs +2 -0
  84. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +268 -0
  85. package/esm2022/lib/components/molecules/docs-search/types.mjs +2 -0
  86. package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +85 -0
  87. package/esm2022/lib/components/molecules/docs-section/types.mjs +2 -0
  88. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +68 -0
  89. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +77 -0
  90. package/esm2022/lib/components/molecules/expandable-text/types.mjs +2 -0
  91. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +185 -0
  92. package/esm2022/lib/components/molecules/features-list/types.mjs +11 -0
  93. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +354 -0
  94. package/esm2022/lib/components/molecules/feedback-form/types.mjs +2 -0
  95. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +90 -0
  96. package/esm2022/lib/components/molecules/file-input/types.mjs +2 -0
  97. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +391 -0
  98. package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
  99. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +314 -0
  100. package/esm2022/lib/components/molecules/glow-card/types.mjs +11 -0
  101. package/esm2022/lib/components/molecules/hint/hint.component.mjs +90 -0
  102. package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +28 -0
  103. package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +174 -0
  104. package/esm2022/lib/components/molecules/image-crop/index.mjs +2 -0
  105. package/esm2022/lib/components/molecules/info/info.component.mjs +49 -0
  106. package/esm2022/lib/components/molecules/info/types.mjs +2 -0
  107. package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +221 -0
  108. package/esm2022/lib/components/molecules/language-selector/types.mjs +2 -0
  109. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +104 -0
  110. package/esm2022/lib/components/molecules/layered-card/types.mjs +2 -0
  111. package/esm2022/lib/components/molecules/link/link.component.mjs +64 -0
  112. package/esm2022/lib/components/molecules/link/types.mjs +2 -0
  113. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +236 -0
  114. package/esm2022/lib/components/molecules/linked-providers/types.mjs +27 -0
  115. package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +185 -0
  116. package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
  117. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +51 -0
  118. package/esm2022/lib/components/molecules/links-cake/types.mjs +2 -0
  119. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +488 -0
  120. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +69 -0
  121. package/esm2022/lib/components/molecules/notes-box/types.mjs +2 -0
  122. package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +143 -0
  123. package/esm2022/lib/components/molecules/number-from-to/types.mjs +2 -0
  124. package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +34 -0
  125. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +379 -0
  126. package/esm2022/lib/components/molecules/number-stepper/types.mjs +2 -0
  127. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +253 -0
  128. package/esm2022/lib/components/molecules/pagination/types.mjs +2 -0
  129. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +514 -0
  130. package/esm2022/lib/components/molecules/participant-card/types.mjs +21 -0
  131. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +93 -0
  132. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +365 -0
  133. package/esm2022/lib/components/molecules/phone-input/types.mjs +19 -0
  134. package/esm2022/lib/components/molecules/pill/pill.component.mjs +92 -0
  135. package/esm2022/lib/components/molecules/pill/types.mjs +2 -0
  136. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +78 -0
  137. package/esm2022/lib/components/molecules/pin-input/types.mjs +2 -0
  138. package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +82 -0
  139. package/esm2022/lib/components/molecules/plain-code-box/types.mjs +2 -0
  140. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +188 -0
  141. package/esm2022/lib/components/molecules/popover-selector/types.mjs +2 -0
  142. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +105 -0
  143. package/esm2022/lib/components/molecules/progress-status/types.mjs +2 -0
  144. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +85 -0
  145. package/esm2022/lib/components/molecules/prompter/types.mjs +2 -0
  146. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +155 -0
  147. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +52 -0
  148. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +476 -0
  149. package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +23 -0
  150. package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +127 -0
  151. package/esm2022/lib/components/molecules/range-input/types.mjs +2 -0
  152. package/esm2022/lib/components/molecules/rating/rating.component.mjs +166 -0
  153. package/esm2022/lib/components/molecules/rating/types.mjs +2 -0
  154. package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +78 -0
  155. package/esm2022/lib/components/molecules/recap-card/types.mjs +2 -0
  156. package/esm2022/lib/components/molecules/refresher/refresher.component.mjs +269 -0
  157. package/esm2022/lib/components/molecules/refresher/types.mjs +15 -0
  158. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +127 -0
  159. package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
  160. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +137 -0
  161. package/esm2022/lib/components/molecules/segment-control/types.mjs +2 -0
  162. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +130 -0
  163. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +420 -0
  164. package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +274 -0
  165. package/esm2022/lib/components/molecules/share-buttons/types.mjs +88 -0
  166. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +213 -0
  167. package/esm2022/lib/components/molecules/stats-card/types.mjs +2 -0
  168. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +242 -0
  169. package/esm2022/lib/components/molecules/stepper/types.mjs +2 -0
  170. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
  171. package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
  172. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +139 -0
  173. package/esm2022/lib/components/molecules/tabs/types.mjs +2 -0
  174. package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
  175. package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
  176. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +77 -0
  177. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +213 -0
  178. package/esm2022/lib/components/molecules/textarea-input/types.mjs +2 -0
  179. package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +489 -0
  180. package/esm2022/lib/components/molecules/ticket-grid/types.mjs +11 -0
  181. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +140 -0
  182. package/esm2022/lib/components/molecules/timeline/types.mjs +2 -0
  183. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +102 -0
  184. package/esm2022/lib/components/molecules/title-block/types.mjs +2 -0
  185. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +93 -0
  186. package/esm2022/lib/components/molecules/toggle-input/types.mjs +2 -0
  187. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +112 -0
  188. package/esm2022/lib/components/molecules/username-input/types.mjs +2 -0
  189. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +260 -0
  190. package/esm2022/lib/components/molecules/winner-display/types.mjs +9 -0
  191. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +359 -0
  192. package/esm2022/lib/components/organisms/article/article.component.mjs +573 -0
  193. package/esm2022/lib/components/organisms/article/types.mjs +183 -0
  194. package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +372 -0
  195. package/esm2022/lib/components/organisms/avatar-upload/types.mjs +15 -0
  196. package/esm2022/lib/components/organisms/banner/banner.component.mjs +111 -0
  197. package/esm2022/lib/components/organisms/banner/types.mjs +2 -0
  198. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +368 -0
  199. package/esm2022/lib/components/organisms/bottom-nav/types.mjs +18 -0
  200. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +61 -0
  201. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
  202. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +537 -0
  203. package/esm2022/lib/components/organisms/comment-section/types.mjs +2 -0
  204. package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +76 -0
  205. package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
  206. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1081 -0
  207. package/esm2022/lib/components/organisms/data-table/types.mjs +13 -0
  208. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +290 -0
  209. package/esm2022/lib/components/organisms/docs-sidebar/types.mjs +2 -0
  210. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +307 -0
  211. package/esm2022/lib/components/organisms/docs-toc/types.mjs +2 -0
  212. package/esm2022/lib/components/organisms/footer/footer.component.mjs +73 -0
  213. package/esm2022/lib/components/organisms/footer/types.mjs +2 -0
  214. package/esm2022/lib/components/organisms/form/factory.mjs +29 -0
  215. package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +83 -0
  216. package/esm2022/lib/components/organisms/form/form.component.mjs +417 -0
  217. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
  218. package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
  219. package/esm2022/lib/components/organisms/header/header.component.mjs +51 -0
  220. package/esm2022/lib/components/organisms/header/types.mjs +2 -0
  221. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +620 -0
  222. package/esm2022/lib/components/organisms/infinite-list/types.mjs +15 -0
  223. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +418 -0
  224. package/esm2022/lib/components/organisms/item-list/types.mjs +2 -0
  225. package/esm2022/lib/components/organisms/login/login.component.mjs +741 -0
  226. package/esm2022/lib/components/organisms/login/types.mjs +11 -0
  227. package/esm2022/lib/components/organisms/menu/menu.component.mjs +206 -0
  228. package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
  229. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +66 -0
  230. package/esm2022/lib/components/organisms/no-content/types.mjs +2 -0
  231. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +180 -0
  232. package/esm2022/lib/components/organisms/rotating-text/types.mjs +2 -0
  233. package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +170 -0
  234. package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
  235. package/esm2022/lib/components/organisms/terminal-404/terminal-404.component.mjs +214 -0
  236. package/esm2022/lib/components/organisms/terminal-404/types.mjs +2 -0
  237. package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
  238. package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
  239. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +237 -0
  240. package/esm2022/lib/components/organisms/toolbar/types.mjs +2 -0
  241. package/esm2022/lib/components/organisms/wizard/types.mjs +10 -0
  242. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +111 -0
  243. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +161 -0
  244. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +149 -0
  245. package/esm2022/lib/components/templates/auth-background/types.mjs +2 -0
  246. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +221 -0
  247. package/esm2022/lib/components/templates/docs-layout/types.mjs +2 -0
  248. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +251 -0
  249. package/esm2022/lib/components/templates/docs-page/types.mjs +2 -0
  250. package/esm2022/lib/components/templates/docs-shell/docs-shell.component.mjs +376 -0
  251. package/esm2022/lib/components/templates/docs-shell/types.mjs +2 -0
  252. package/esm2022/lib/components/templates/layout/layout.component.mjs +19 -0
  253. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +153 -0
  254. package/esm2022/lib/components/templates/maintenance-page/types.mjs +2 -0
  255. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +193 -0
  256. package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
  257. package/esm2022/lib/components/templates/page-template/page-template.component.mjs +188 -0
  258. package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
  259. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +192 -0
  260. package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
  261. package/esm2022/lib/components/templates/simple/simple.component.mjs +125 -0
  262. package/esm2022/lib/components/templates/simple/types.mjs +2 -0
  263. package/esm2022/lib/components/types.mjs +58 -0
  264. package/esm2022/lib/config/company-footer.config.mjs +109 -0
  265. package/esm2022/lib/config/index.mjs +5 -0
  266. package/esm2022/lib/services/ads/ads-loader.service.mjs +120 -0
  267. package/esm2022/lib/services/ads/ads.service.mjs +236 -0
  268. package/esm2022/lib/services/ads/config.mjs +81 -0
  269. package/esm2022/lib/services/ads/index.mjs +13 -0
  270. package/esm2022/lib/services/ads/types.mjs +23 -0
  271. package/esm2022/lib/services/app-config/app-config.service.mjs +209 -0
  272. package/esm2022/lib/services/app-config/config.mjs +47 -0
  273. package/esm2022/lib/services/app-config/index.mjs +48 -0
  274. package/esm2022/lib/services/app-config/types.mjs +13 -0
  275. package/esm2022/lib/services/app-config/version.mjs +85 -0
  276. package/esm2022/lib/services/auth/auth-state.service.mjs +186 -0
  277. package/esm2022/lib/services/auth/auth.service.mjs +1087 -0
  278. package/esm2022/lib/services/auth/config.mjs +77 -0
  279. package/esm2022/lib/services/auth/device.service.mjs +135 -0
  280. package/esm2022/lib/services/auth/guards.mjs +194 -0
  281. package/esm2022/lib/services/auth/index.mjs +92 -0
  282. package/esm2022/lib/services/auth/interceptor.mjs +122 -0
  283. package/esm2022/lib/services/auth/oauth-callback.component.mjs +169 -0
  284. package/esm2022/lib/services/auth/oauth.service.mjs +318 -0
  285. package/esm2022/lib/services/auth/session.service.mjs +78 -0
  286. package/esm2022/lib/services/auth/storage.service.mjs +152 -0
  287. package/esm2022/lib/services/auth/sync.service.mjs +149 -0
  288. package/esm2022/lib/services/auth/token.service.mjs +122 -0
  289. package/esm2022/lib/services/auth/types.mjs +30 -0
  290. package/esm2022/lib/services/confirmation-dialog/confirmation-dialog.service.mjs +180 -0
  291. package/esm2022/lib/services/confirmation-dialog/types.mjs +14 -0
  292. package/esm2022/lib/services/docs/docs-navigation.service.mjs +91 -0
  293. package/esm2022/lib/services/download.service.mjs +80 -0
  294. package/esm2022/lib/services/feedback/config.mjs +49 -0
  295. package/esm2022/lib/services/feedback/feedback.service.mjs +296 -0
  296. package/esm2022/lib/services/feedback/index.mjs +44 -0
  297. package/esm2022/lib/services/feedback/types.mjs +30 -0
  298. package/esm2022/lib/services/firebase/analytics-error-handler.mjs +141 -0
  299. package/esm2022/lib/services/firebase/analytics-router-tracker.mjs +99 -0
  300. package/esm2022/lib/services/firebase/analytics-types.mjs +7 -0
  301. package/esm2022/lib/services/firebase/analytics.service.mjs +620 -0
  302. package/esm2022/lib/services/firebase/config.mjs +131 -0
  303. package/esm2022/lib/services/firebase/firebase.service.mjs +456 -0
  304. package/esm2022/lib/services/firebase/firestore-collection.mjs +262 -0
  305. package/esm2022/lib/services/firebase/firestore.service.mjs +536 -0
  306. package/esm2022/lib/services/firebase/index.mjs +56 -0
  307. package/esm2022/lib/services/firebase/messaging.service.mjs +597 -0
  308. package/esm2022/lib/services/firebase/notifications.service.mjs +210 -0
  309. package/esm2022/lib/services/firebase/shared-config.mjs +114 -0
  310. package/esm2022/lib/services/firebase/storage.service.mjs +472 -0
  311. package/esm2022/lib/services/firebase/types.mjs +18 -0
  312. package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
  313. package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
  314. package/esm2022/lib/services/i18n/config.mjs +110 -0
  315. package/esm2022/lib/services/i18n/default-content.mjs +563 -0
  316. package/esm2022/lib/services/i18n/i18n.service.mjs +196 -0
  317. package/esm2022/lib/services/i18n/index.mjs +13 -0
  318. package/esm2022/lib/services/i18n/input-i18n.helper.mjs +97 -0
  319. package/esm2022/lib/services/i18n/translate.pipe.mjs +50 -0
  320. package/esm2022/lib/services/i18n/types.mjs +15 -0
  321. package/esm2022/lib/services/icons.service.mjs +76 -0
  322. package/esm2022/lib/services/image/image.service.mjs +244 -0
  323. package/esm2022/lib/services/image/index.mjs +3 -0
  324. package/esm2022/lib/services/image/types.mjs +13 -0
  325. package/esm2022/lib/services/in-app-browser.service.mjs +35 -0
  326. package/esm2022/lib/services/link-processor.service.mjs +259 -0
  327. package/esm2022/lib/services/local-storage.service.mjs +37 -0
  328. package/esm2022/lib/services/locale.service.mjs +75 -0
  329. package/esm2022/lib/services/meta/index.mjs +3 -0
  330. package/esm2022/lib/services/meta/meta.service.mjs +63 -0
  331. package/esm2022/lib/services/meta/types.mjs +2 -0
  332. package/esm2022/lib/services/modal/modal.service.mjs +212 -0
  333. package/esm2022/lib/services/modal/simple-modal-content.component.mjs +133 -0
  334. package/esm2022/lib/services/modal/types.mjs +26 -0
  335. package/esm2022/lib/services/navigation/index.mjs +3 -0
  336. package/esm2022/lib/services/navigation/navigation.service.mjs +216 -0
  337. package/esm2022/lib/services/navigation/types.mjs +16 -0
  338. package/esm2022/lib/services/pagination/index.mjs +5 -0
  339. package/esm2022/lib/services/pagination/pagination.service.mjs +218 -0
  340. package/esm2022/lib/services/pagination/types.mjs +14 -0
  341. package/esm2022/lib/services/presets/config.mjs +46 -0
  342. package/esm2022/lib/services/presets/index.mjs +5 -0
  343. package/esm2022/lib/services/presets/preset.service.mjs +104 -0
  344. package/esm2022/lib/services/presets/types.mjs +2 -0
  345. package/esm2022/lib/services/qr-generator/qr-generator.service.mjs +341 -0
  346. package/esm2022/lib/services/qr-generator/types.mjs +46 -0
  347. package/esm2022/lib/services/skeleton/config.mjs +79 -0
  348. package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +215 -0
  349. package/esm2022/lib/services/skeleton/index.mjs +16 -0
  350. package/esm2022/lib/services/skeleton/skeleton.service.mjs +198 -0
  351. package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +223 -0
  352. package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +127 -0
  353. package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +154 -0
  354. package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +110 -0
  355. package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +207 -0
  356. package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +116 -0
  357. package/esm2022/lib/services/skeleton/types.mjs +11 -0
  358. package/esm2022/lib/services/theme.service.mjs +144 -0
  359. package/esm2022/lib/services/toast.service.mjs +47 -0
  360. package/esm2022/lib/services/types.mjs +5 -0
  361. package/esm2022/lib/shared/constants/storage.mjs +3 -0
  362. package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
  363. package/esm2022/lib/shared/utils/dom.mjs +27 -0
  364. package/esm2022/lib/shared/utils/form-defaults.mjs +112 -0
  365. package/esm2022/lib/shared/utils/styles.mjs +37 -0
  366. package/esm2022/lib/shared/utils/text.mjs +12 -0
  367. package/esm2022/lib/version.mjs +6 -0
  368. package/esm2022/public-api.mjs +333 -0
  369. package/esm2022/valtech-components.mjs +5 -0
  370. package/fesm2022/valtech-components.mjs +42067 -0
  371. package/fesm2022/valtech-components.mjs.map +1 -0
  372. package/index.d.ts +5 -0
  373. package/lib/components/atoms/avatar/avatar.component.d.ts +36 -0
  374. package/lib/components/atoms/avatar/types.d.ts +15 -0
  375. package/lib/components/atoms/box/box.component.d.ts +26 -0
  376. package/lib/components/atoms/box/types.d.ts +19 -0
  377. package/lib/components/atoms/button/button.component.d.ts +63 -0
  378. package/lib/components/atoms/button/factory.d.ts +71 -0
  379. package/lib/components/atoms/countdown/countdown.component.d.ts +38 -0
  380. package/lib/components/atoms/countdown/types.d.ts +108 -0
  381. package/lib/components/atoms/display/display.component.d.ts +19 -0
  382. package/lib/components/atoms/display/types.d.ts +33 -0
  383. package/lib/components/atoms/divider/divider.component.d.ts +27 -0
  384. package/lib/components/atoms/divider/types.d.ts +12 -0
  385. package/lib/components/atoms/fab/fab.component.d.ts +36 -0
  386. package/lib/components/atoms/fab/types.d.ts +45 -0
  387. package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
  388. package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
  389. package/lib/components/atoms/href/href.component.d.ts +25 -0
  390. package/lib/components/atoms/href/types.d.ts +19 -0
  391. package/lib/components/atoms/icon/icon.component.d.ts +18 -0
  392. package/lib/components/atoms/icon/types.d.ts +13 -0
  393. package/lib/components/atoms/image/image.component.d.ts +41 -0
  394. package/lib/components/atoms/image/types.d.ts +37 -0
  395. package/lib/components/atoms/price-tag/price-tag.component.d.ts +15 -0
  396. package/lib/components/atoms/price-tag/types.d.ts +59 -0
  397. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +35 -0
  398. package/lib/components/atoms/progress-bar/types.d.ts +19 -0
  399. package/lib/components/atoms/progress-ring/progress-ring.component.d.ts +20 -0
  400. package/lib/components/atoms/progress-ring/types.d.ts +24 -0
  401. package/lib/components/atoms/qr-code/qr-code.component.d.ts +33 -0
  402. package/lib/components/atoms/qr-code/types.d.ts +124 -0
  403. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +53 -0
  404. package/lib/components/atoms/rights-footer/types.d.ts +21 -0
  405. package/lib/components/atoms/skeleton/skeleton.component.d.ts +12 -0
  406. package/lib/components/atoms/skeleton/types.d.ts +29 -0
  407. package/lib/components/atoms/text/text.component.d.ts +33 -0
  408. package/lib/components/atoms/text/types.d.ts +42 -0
  409. package/lib/components/atoms/title/title.component.d.ts +21 -0
  410. package/lib/components/atoms/title/types.d.ts +36 -0
  411. package/lib/components/molecules/accordion/accordion.component.d.ts +18 -0
  412. package/lib/components/molecules/accordion/types.d.ts +47 -0
  413. package/lib/components/molecules/action-card/action-card.component.d.ts +90 -0
  414. package/lib/components/molecules/action-card/types.d.ts +83 -0
  415. package/lib/components/molecules/action-header/action-header.component.d.ts +7 -0
  416. package/lib/components/molecules/action-header/types.d.ts +6 -0
  417. package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +69 -0
  418. package/lib/components/molecules/alert-box/alert-box.component.d.ts +39 -0
  419. package/lib/components/molecules/alert-box/types.d.ts +37 -0
  420. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +22 -0
  421. package/lib/components/molecules/breadcrumb/types.d.ts +45 -0
  422. package/lib/components/molecules/button-group/button-group.component.d.ts +23 -0
  423. package/lib/components/molecules/button-group/types.d.ts +13 -0
  424. package/lib/components/molecules/card/card.component.d.ts +49 -0
  425. package/lib/components/molecules/card/types.d.ts +32 -0
  426. package/lib/components/molecules/check-input/check-input.component.d.ts +36 -0
  427. package/lib/components/molecules/chip-group/chip-group.component.d.ts +22 -0
  428. package/lib/components/molecules/chip-group/types.d.ts +65 -0
  429. package/lib/components/molecules/code-display/code-display.component.d.ts +24 -0
  430. package/lib/components/molecules/code-display/types.d.ts +10 -0
  431. package/lib/components/molecules/command-display/command-display.component.d.ts +11 -0
  432. package/lib/components/molecules/command-display/types.d.ts +3 -0
  433. package/lib/components/molecules/comment/comment.component.d.ts +42 -0
  434. package/lib/components/molecules/comment/types.d.ts +171 -0
  435. package/lib/components/molecules/comment-input/comment-input.component.d.ts +16 -0
  436. package/lib/components/molecules/comment-input/types.d.ts +59 -0
  437. package/lib/components/molecules/content-loader/content-loader.component.d.ts +18 -0
  438. package/lib/components/molecules/content-loader/types.d.ts +15 -0
  439. package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +58 -0
  440. package/lib/components/molecules/content-reaction/types.d.ts +77 -0
  441. package/lib/components/molecules/currency-input/currency-input.component.d.ts +40 -0
  442. package/lib/components/molecules/currency-input/types.d.ts +96 -0
  443. package/lib/components/molecules/date-input/date-input.component.d.ts +40 -0
  444. package/lib/components/molecules/date-input/types.d.ts +74 -0
  445. package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +50 -0
  446. package/lib/components/molecules/date-range-input/types.d.ts +109 -0
  447. package/lib/components/molecules/docs-api-table/docs-api-table.component.d.ts +41 -0
  448. package/lib/components/molecules/docs-api-table/types.d.ts +62 -0
  449. package/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.d.ts +31 -0
  450. package/lib/components/molecules/docs-breadcrumb/types.d.ts +20 -0
  451. package/lib/components/molecules/docs-callout/docs-callout.component.d.ts +17 -0
  452. package/lib/components/molecules/docs-code-example/docs-code-example.component.d.ts +45 -0
  453. package/lib/components/molecules/docs-code-example/types.d.ts +63 -0
  454. package/lib/components/molecules/docs-nav-links/docs-nav-links.component.d.ts +30 -0
  455. package/lib/components/molecules/docs-nav-links/types.d.ts +31 -0
  456. package/lib/components/molecules/docs-search/docs-search.component.d.ts +47 -0
  457. package/lib/components/molecules/docs-search/types.d.ts +27 -0
  458. package/lib/components/molecules/docs-section/docs-section.component.d.ts +29 -0
  459. package/lib/components/molecules/docs-section/types.d.ts +27 -0
  460. package/lib/components/molecules/email-input/email-input.component.d.ts +34 -0
  461. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +23 -0
  462. package/lib/components/molecules/expandable-text/types.d.ts +14 -0
  463. package/lib/components/molecules/features-list/features-list.component.d.ts +66 -0
  464. package/lib/components/molecules/features-list/types.d.ts +36 -0
  465. package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +58 -0
  466. package/lib/components/molecules/feedback-form/types.d.ts +54 -0
  467. package/lib/components/molecules/file-input/file-input.component.d.ts +25 -0
  468. package/lib/components/molecules/file-input/types.d.ts +72 -0
  469. package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
  470. package/lib/components/molecules/footer-links/types.d.ts +50 -0
  471. package/lib/components/molecules/glow-card/glow-card.component.d.ts +60 -0
  472. package/lib/components/molecules/glow-card/types.d.ts +94 -0
  473. package/lib/components/molecules/hint/hint.component.d.ts +19 -0
  474. package/lib/components/molecules/hour-input/hour-input.component.d.ts +15 -0
  475. package/lib/components/molecules/image-crop/image-crop.component.d.ts +59 -0
  476. package/lib/components/molecules/info/info.component.d.ts +9 -0
  477. package/lib/components/molecules/info/types.d.ts +10 -0
  478. package/lib/components/molecules/language-selector/language-selector.component.d.ts +40 -0
  479. package/lib/components/molecules/language-selector/types.d.ts +82 -0
  480. package/lib/components/molecules/layered-card/layered-card.component.d.ts +10 -0
  481. package/lib/components/molecules/layered-card/types.d.ts +15 -0
  482. package/lib/components/molecules/link/link.component.d.ts +24 -0
  483. package/lib/components/molecules/link/types.d.ts +19 -0
  484. package/lib/components/molecules/linked-providers/linked-providers.component.d.ts +30 -0
  485. package/lib/components/molecules/linked-providers/types.d.ts +38 -0
  486. package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +61 -0
  487. package/lib/components/molecules/links-accordion/types.d.ts +39 -0
  488. package/lib/components/molecules/links-cake/links-cake.component.d.ts +17 -0
  489. package/lib/components/molecules/links-cake/types.d.ts +13 -0
  490. package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +76 -0
  491. package/lib/components/molecules/notes-box/notes-box.component.d.ts +21 -0
  492. package/lib/components/molecules/notes-box/types.d.ts +21 -0
  493. package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +27 -0
  494. package/lib/components/molecules/number-from-to/types.d.ts +76 -0
  495. package/lib/components/molecules/number-input/number-input.component.d.ts +16 -0
  496. package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +38 -0
  497. package/lib/components/molecules/number-stepper/types.d.ts +88 -0
  498. package/lib/components/molecules/pagination/pagination.component.d.ts +15 -0
  499. package/lib/components/molecules/pagination/types.d.ts +41 -0
  500. package/lib/components/molecules/participant-card/participant-card.component.d.ts +34 -0
  501. package/lib/components/molecules/participant-card/types.d.ts +132 -0
  502. package/lib/components/molecules/password-input/password-input.component.d.ts +37 -0
  503. package/lib/components/molecules/phone-input/phone-input.component.d.ts +59 -0
  504. package/lib/components/molecules/phone-input/types.d.ts +98 -0
  505. package/lib/components/molecules/pill/pill.component.d.ts +33 -0
  506. package/lib/components/molecules/pill/types.d.ts +9 -0
  507. package/lib/components/molecules/pin-input/pin-input.component.d.ts +21 -0
  508. package/lib/components/molecules/pin-input/types.d.ts +69 -0
  509. package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +22 -0
  510. package/lib/components/molecules/plain-code-box/types.d.ts +10 -0
  511. package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +42 -0
  512. package/lib/components/molecules/popover-selector/types.d.ts +69 -0
  513. package/lib/components/molecules/progress-status/progress-status.component.d.ts +23 -0
  514. package/lib/components/molecules/progress-status/types.d.ts +20 -0
  515. package/lib/components/molecules/prompter/prompter.component.d.ts +10 -0
  516. package/lib/components/molecules/prompter/types.d.ts +25 -0
  517. package/lib/components/molecules/quote-box/quote-box.component.d.ts +26 -0
  518. package/lib/components/molecules/radio-input/radio-input.component.d.ts +15 -0
  519. package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +21 -0
  520. package/lib/components/molecules/raffle-status-card/types.d.ts +108 -0
  521. package/lib/components/molecules/range-input/range-input.component.d.ts +25 -0
  522. package/lib/components/molecules/range-input/types.d.ts +59 -0
  523. package/lib/components/molecules/rating/rating.component.d.ts +23 -0
  524. package/lib/components/molecules/rating/types.d.ts +41 -0
  525. package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
  526. package/lib/components/molecules/recap-card/types.d.ts +30 -0
  527. package/lib/components/molecules/refresher/refresher.component.d.ts +84 -0
  528. package/lib/components/molecules/refresher/types.d.ts +86 -0
  529. package/lib/components/molecules/searchbar/searchbar.component.d.ts +43 -0
  530. package/lib/components/molecules/searchbar/types.d.ts +33 -0
  531. package/lib/components/molecules/segment-control/segment-control.component.d.ts +35 -0
  532. package/lib/components/molecules/segment-control/types.d.ts +46 -0
  533. package/lib/components/molecules/select-input/select-input.component.d.ts +48 -0
  534. package/lib/components/molecules/select-search/select-search.component.d.ts +76 -0
  535. package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +22 -0
  536. package/lib/components/molecules/share-buttons/types.d.ts +108 -0
  537. package/lib/components/molecules/stats-card/stats-card.component.d.ts +20 -0
  538. package/lib/components/molecules/stats-card/types.d.ts +60 -0
  539. package/lib/components/molecules/stepper/stepper.component.d.ts +31 -0
  540. package/lib/components/molecules/stepper/types.d.ts +66 -0
  541. package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
  542. package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
  543. package/lib/components/molecules/tabs/tabs.component.d.ts +34 -0
  544. package/lib/components/molecules/tabs/types.d.ts +45 -0
  545. package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
  546. package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
  547. package/lib/components/molecules/text-input/text-input.component.d.ts +42 -0
  548. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +46 -0
  549. package/lib/components/molecules/textarea-input/types.d.ts +74 -0
  550. package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +40 -0
  551. package/lib/components/molecules/ticket-grid/types.d.ts +122 -0
  552. package/lib/components/molecules/timeline/timeline.component.d.ts +14 -0
  553. package/lib/components/molecules/timeline/types.d.ts +39 -0
  554. package/lib/components/molecules/title-block/title-block.component.d.ts +12 -0
  555. package/lib/components/molecules/title-block/types.d.ts +15 -0
  556. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +39 -0
  557. package/lib/components/molecules/toggle-input/types.d.ts +30 -0
  558. package/lib/components/molecules/update-banner/update-banner.component.d.ts +42 -0
  559. package/lib/components/molecules/username-input/types.d.ts +34 -0
  560. package/lib/components/molecules/username-input/username-input.component.d.ts +45 -0
  561. package/lib/components/molecules/winner-display/types.d.ts +103 -0
  562. package/lib/components/molecules/winner-display/winner-display.component.d.ts +36 -0
  563. package/lib/components/organisms/article/article.component.d.ts +108 -0
  564. package/lib/components/organisms/article/types.d.ts +359 -0
  565. package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +84 -0
  566. package/lib/components/organisms/avatar-upload/types.d.ts +62 -0
  567. package/lib/components/organisms/banner/banner.component.d.ts +16 -0
  568. package/lib/components/organisms/banner/types.d.ts +29 -0
  569. package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +88 -0
  570. package/lib/components/organisms/bottom-nav/types.d.ts +118 -0
  571. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
  572. package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
  573. package/lib/components/organisms/comment-section/comment-section.component.d.ts +50 -0
  574. package/lib/components/organisms/comment-section/types.d.ts +144 -0
  575. package/lib/components/organisms/company-footer/company-footer.component.d.ts +37 -0
  576. package/lib/components/organisms/company-footer/types.d.ts +15 -0
  577. package/lib/components/organisms/data-table/data-table.component.d.ts +63 -0
  578. package/lib/components/organisms/data-table/types.d.ts +219 -0
  579. package/lib/components/organisms/docs-sidebar/docs-sidebar.component.d.ts +51 -0
  580. package/lib/components/organisms/docs-sidebar/types.d.ts +93 -0
  581. package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +62 -0
  582. package/lib/components/organisms/docs-toc/types.d.ts +62 -0
  583. package/lib/components/organisms/footer/footer.component.d.ts +36 -0
  584. package/lib/components/organisms/footer/types.d.ts +16 -0
  585. package/lib/components/organisms/form/factory.d.ts +17 -0
  586. package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +17 -0
  587. package/lib/components/organisms/form/form.component.d.ts +48 -0
  588. package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
  589. package/lib/components/organisms/fun-header/types.d.ts +28 -0
  590. package/lib/components/organisms/header/header.component.d.ts +22 -0
  591. package/lib/components/organisms/header/types.d.ts +16 -0
  592. package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +113 -0
  593. package/lib/components/organisms/infinite-list/types.d.ts +197 -0
  594. package/lib/components/organisms/item-list/item-list.component.d.ts +43 -0
  595. package/lib/components/organisms/item-list/types.d.ts +126 -0
  596. package/lib/components/organisms/login/login.component.d.ts +79 -0
  597. package/lib/components/organisms/login/types.d.ts +70 -0
  598. package/lib/components/organisms/menu/menu.component.d.ts +44 -0
  599. package/lib/components/organisms/menu/types.d.ts +23 -0
  600. package/lib/components/organisms/no-content/no-content.component.d.ts +14 -0
  601. package/lib/components/organisms/no-content/types.d.ts +17 -0
  602. package/lib/components/organisms/rotating-text/rotating-text.component.d.ts +47 -0
  603. package/lib/components/organisms/rotating-text/types.d.ts +28 -0
  604. package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
  605. package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
  606. package/lib/components/organisms/terminal-404/terminal-404.component.d.ts +42 -0
  607. package/lib/components/organisms/terminal-404/types.d.ts +22 -0
  608. package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
  609. package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
  610. package/lib/components/organisms/toolbar/toolbar.component.d.ts +85 -0
  611. package/lib/components/organisms/toolbar/types.d.ts +31 -0
  612. package/lib/components/organisms/wizard/types.d.ts +42 -0
  613. package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +23 -0
  614. package/lib/components/organisms/wizard/wizard.component.d.ts +27 -0
  615. package/lib/components/templates/auth-background/auth-background.component.d.ts +59 -0
  616. package/lib/components/templates/auth-background/types.d.ts +30 -0
  617. package/lib/components/templates/docs-layout/docs-layout.component.d.ts +42 -0
  618. package/lib/components/templates/docs-layout/types.d.ts +39 -0
  619. package/lib/components/templates/docs-page/docs-page.component.d.ts +61 -0
  620. package/lib/components/templates/docs-page/types.d.ts +121 -0
  621. package/lib/components/templates/docs-shell/docs-shell.component.d.ts +33 -0
  622. package/lib/components/templates/docs-shell/types.d.ts +152 -0
  623. package/lib/components/templates/layout/layout.component.d.ts +5 -0
  624. package/lib/components/templates/maintenance-page/maintenance-page.component.d.ts +57 -0
  625. package/lib/components/templates/maintenance-page/types.d.ts +12 -0
  626. package/lib/components/templates/page-content/page-content.component.d.ts +107 -0
  627. package/lib/components/templates/page-content/types.d.ts +27 -0
  628. package/lib/components/templates/page-template/page-template.component.d.ts +54 -0
  629. package/lib/components/templates/page-template/types.d.ts +17 -0
  630. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +89 -0
  631. package/lib/components/templates/page-wrapper/types.d.ts +19 -0
  632. package/lib/components/templates/simple/simple.component.d.ts +14 -0
  633. package/lib/components/templates/simple/types.d.ts +10 -0
  634. package/lib/components/types.d.ts +289 -0
  635. package/lib/config/company-footer.config.d.ts +98 -0
  636. package/lib/services/ads/ads-loader.service.d.ts +41 -0
  637. package/lib/services/ads/ads.service.d.ts +99 -0
  638. package/lib/services/ads/config.d.ts +53 -0
  639. package/lib/services/ads/index.d.ts +9 -0
  640. package/lib/services/ads/types.d.ts +106 -0
  641. package/lib/services/app-config/app-config.service.d.ts +115 -0
  642. package/lib/services/app-config/config.d.ts +31 -0
  643. package/lib/services/app-config/index.d.ts +47 -0
  644. package/lib/services/app-config/types.d.ts +54 -0
  645. package/lib/services/app-config/version.d.ts +64 -0
  646. package/lib/services/auth/auth-state.service.d.ts +92 -0
  647. package/lib/services/auth/auth.service.d.ts +401 -0
  648. package/lib/services/auth/config.d.ts +38 -0
  649. package/lib/services/auth/device.service.d.ts +101 -0
  650. package/lib/services/auth/guards.d.ts +123 -0
  651. package/lib/services/auth/index.d.ts +83 -0
  652. package/lib/services/auth/interceptor.d.ts +22 -0
  653. package/lib/services/auth/oauth-callback.component.d.ts +34 -0
  654. package/lib/services/auth/oauth.service.d.ts +99 -0
  655. package/lib/services/auth/session.service.d.ts +60 -0
  656. package/lib/services/auth/storage.service.d.ts +52 -0
  657. package/lib/services/auth/sync.service.d.ts +49 -0
  658. package/lib/services/auth/token.service.d.ts +57 -0
  659. package/lib/services/auth/types.d.ts +842 -0
  660. package/lib/services/confirmation-dialog/confirmation-dialog.service.d.ts +71 -0
  661. package/lib/services/confirmation-dialog/types.d.ts +61 -0
  662. package/lib/services/docs/docs-navigation.service.d.ts +51 -0
  663. package/lib/services/download.service.d.ts +21 -0
  664. package/lib/services/feedback/config.d.ts +35 -0
  665. package/lib/services/feedback/feedback.service.d.ts +134 -0
  666. package/lib/services/feedback/index.d.ts +40 -0
  667. package/lib/services/feedback/types.d.ts +173 -0
  668. package/lib/services/firebase/analytics-error-handler.d.ts +54 -0
  669. package/lib/services/firebase/analytics-router-tracker.d.ts +51 -0
  670. package/lib/services/firebase/analytics-types.d.ts +221 -0
  671. package/lib/services/firebase/analytics.service.d.ts +256 -0
  672. package/lib/services/firebase/config.d.ts +49 -0
  673. package/lib/services/firebase/firebase.service.d.ts +251 -0
  674. package/lib/services/firebase/firestore-collection.d.ts +180 -0
  675. package/lib/services/firebase/firestore.service.d.ts +312 -0
  676. package/lib/services/firebase/index.d.ts +44 -0
  677. package/lib/services/firebase/messaging.service.d.ts +293 -0
  678. package/lib/services/firebase/notifications.service.d.ts +126 -0
  679. package/lib/services/firebase/shared-config.d.ts +118 -0
  680. package/lib/services/firebase/storage.service.d.ts +238 -0
  681. package/lib/services/firebase/types.d.ts +374 -0
  682. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  683. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  684. package/lib/services/i18n/config.d.ts +29 -0
  685. package/lib/services/i18n/default-content.d.ts +30 -0
  686. package/lib/services/i18n/i18n.service.d.ts +112 -0
  687. package/lib/services/i18n/index.d.ts +6 -0
  688. package/lib/services/i18n/input-i18n.helper.d.ts +70 -0
  689. package/lib/services/i18n/translate.pipe.d.ts +36 -0
  690. package/lib/services/i18n/types.d.ts +93 -0
  691. package/lib/services/icons.service.d.ts +9 -0
  692. package/lib/services/image/image.service.d.ts +76 -0
  693. package/lib/services/image/types.d.ts +74 -0
  694. package/lib/services/in-app-browser.service.d.ts +16 -0
  695. package/lib/services/link-processor.service.d.ts +104 -0
  696. package/lib/services/local-storage.service.d.ts +27 -0
  697. package/lib/services/locale.service.d.ts +52 -0
  698. package/lib/services/meta/meta.service.d.ts +23 -0
  699. package/lib/services/meta/types.d.ts +12 -0
  700. package/lib/services/modal/modal.service.d.ts +100 -0
  701. package/lib/services/modal/simple-modal-content.component.d.ts +19 -0
  702. package/lib/services/modal/types.d.ts +155 -0
  703. package/lib/services/navigation/navigation.service.d.ts +134 -0
  704. package/lib/services/navigation/types.d.ts +67 -0
  705. package/lib/services/pagination/index.d.ts +2 -0
  706. package/lib/services/pagination/pagination.service.d.ts +43 -0
  707. package/lib/services/pagination/types.d.ts +113 -0
  708. package/lib/services/presets/config.d.ts +32 -0
  709. package/lib/services/presets/index.d.ts +3 -0
  710. package/lib/services/presets/preset.service.d.ts +69 -0
  711. package/lib/services/presets/types.d.ts +39 -0
  712. package/lib/services/qr-generator/qr-generator.service.d.ts +115 -0
  713. package/lib/services/qr-generator/types.d.ts +141 -0
  714. package/lib/services/skeleton/config.d.ts +30 -0
  715. package/lib/services/skeleton/directives/loading.directive.d.ts +71 -0
  716. package/lib/services/skeleton/index.d.ts +10 -0
  717. package/lib/services/skeleton/skeleton.service.d.ts +127 -0
  718. package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +18 -0
  719. package/lib/services/skeleton/templates/form-skeleton.component.d.ts +22 -0
  720. package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +18 -0
  721. package/lib/services/skeleton/templates/list-skeleton.component.d.ts +17 -0
  722. package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +20 -0
  723. package/lib/services/skeleton/templates/table-skeleton.component.d.ts +17 -0
  724. package/lib/services/skeleton/types.d.ts +111 -0
  725. package/lib/services/theme.service.d.ts +70 -0
  726. package/lib/services/toast.service.d.ts +22 -0
  727. package/lib/services/types.d.ts +1 -0
  728. package/lib/shared/constants/storage.d.ts +2 -0
  729. package/lib/shared/pipes/process-links.pipe.d.ts +55 -0
  730. package/lib/shared/utils/dom.d.ts +13 -0
  731. package/lib/shared/utils/form-defaults.d.ts +30 -0
  732. package/lib/shared/utils/styles.d.ts +13 -0
  733. package/lib/shared/utils/text.d.ts +11 -0
  734. package/lib/version.d.ts +5 -0
  735. package/package.json +16 -64
  736. package/public-api.d.ts +295 -0
  737. package/.editorconfig +0 -16
  738. package/.prettierignore +0 -6
  739. package/.prettierrc +0 -30
  740. package/.storybook/main.ts +0 -21
  741. package/.storybook/preview-body.html +0 -60
  742. package/.storybook/preview-head.html +0 -48
  743. package/.storybook/preview.ts +0 -52
  744. package/.storybook/tsconfig.json +0 -12
  745. package/I18N-COMPONENTS-MIGRATION.md +0 -496
  746. package/angular.json +0 -60
  747. package/ng-package.json +0 -16
  748. package/scripts/publish.sh +0 -30
  749. package/scripts/update-apps.sh +0 -94
  750. package/src/lib/components/atoms/avatar/avatar.component.scss +0 -31
  751. package/src/lib/components/atoms/avatar/avatar.component.ts +0 -95
  752. package/src/lib/components/atoms/avatar/avatar.stories.ts +0 -243
  753. package/src/lib/components/atoms/avatar/types.ts +0 -15
  754. package/src/lib/components/atoms/box/box.component.scss +0 -57
  755. package/src/lib/components/atoms/box/box.component.ts +0 -77
  756. package/src/lib/components/atoms/box/box.stories.ts +0 -280
  757. package/src/lib/components/atoms/box/types.ts +0 -20
  758. package/src/lib/components/atoms/button/button.component.scss +0 -20
  759. package/src/lib/components/atoms/button/button.component.ts +0 -174
  760. package/src/lib/components/atoms/button/button.stories.ts +0 -293
  761. package/src/lib/components/atoms/button/factory.ts +0 -444
  762. package/src/lib/components/atoms/countdown/countdown.component.scss +0 -256
  763. package/src/lib/components/atoms/countdown/countdown.component.ts +0 -293
  764. package/src/lib/components/atoms/countdown/countdown.stories.ts +0 -316
  765. package/src/lib/components/atoms/countdown/types.ts +0 -144
  766. package/src/lib/components/atoms/display/display.component.scss +0 -17
  767. package/src/lib/components/atoms/display/display.component.ts +0 -54
  768. package/src/lib/components/atoms/display/display.stories.ts +0 -185
  769. package/src/lib/components/atoms/display/types.ts +0 -35
  770. package/src/lib/components/atoms/divider/divider.component.scss +0 -62
  771. package/src/lib/components/atoms/divider/divider.component.ts +0 -35
  772. package/src/lib/components/atoms/divider/divider.stories.ts +0 -202
  773. package/src/lib/components/atoms/divider/types.ts +0 -12
  774. package/src/lib/components/atoms/fab/fab.component.scss +0 -26
  775. package/src/lib/components/atoms/fab/fab.component.ts +0 -166
  776. package/src/lib/components/atoms/fab/fab.stories.ts +0 -360
  777. package/src/lib/components/atoms/fab/types.ts +0 -47
  778. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.scss +0 -39
  779. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.ts +0 -67
  780. package/src/lib/components/atoms/horizontal-scroll/horizontal-scroll.stories.ts +0 -351
  781. package/src/lib/components/atoms/horizontal-scroll/types.ts +0 -13
  782. package/src/lib/components/atoms/href/href.component.scss +0 -25
  783. package/src/lib/components/atoms/href/href.component.ts +0 -64
  784. package/src/lib/components/atoms/href/href.stories.ts +0 -214
  785. package/src/lib/components/atoms/href/types.ts +0 -20
  786. package/src/lib/components/atoms/icon/icon.component.scss +0 -33
  787. package/src/lib/components/atoms/icon/icon.component.ts +0 -38
  788. package/src/lib/components/atoms/icon/icon.stories.ts +0 -160
  789. package/src/lib/components/atoms/icon/types.ts +0 -14
  790. package/src/lib/components/atoms/image/README.md +0 -0
  791. package/src/lib/components/atoms/image/image.component.scss +0 -281
  792. package/src/lib/components/atoms/image/image.component.ts +0 -399
  793. package/src/lib/components/atoms/image/image.stories.ts +0 -317
  794. package/src/lib/components/atoms/image/types.ts +0 -37
  795. package/src/lib/components/atoms/price-tag/price-tag.component.scss +0 -228
  796. package/src/lib/components/atoms/price-tag/price-tag.component.ts +0 -188
  797. package/src/lib/components/atoms/price-tag/price-tag.stories.ts +0 -315
  798. package/src/lib/components/atoms/price-tag/types.ts +0 -78
  799. package/src/lib/components/atoms/progress-bar/progress-bar.component.scss +0 -22
  800. package/src/lib/components/atoms/progress-bar/progress-bar.component.ts +0 -88
  801. package/src/lib/components/atoms/progress-bar/progress-bar.stories.ts +0 -375
  802. package/src/lib/components/atoms/progress-bar/types.ts +0 -20
  803. package/src/lib/components/atoms/progress-ring/progress-ring.component.scss +0 -35
  804. package/src/lib/components/atoms/progress-ring/progress-ring.component.ts +0 -114
  805. package/src/lib/components/atoms/progress-ring/progress-ring.stories.ts +0 -323
  806. package/src/lib/components/atoms/progress-ring/types.ts +0 -25
  807. package/src/lib/components/atoms/qr-code/qr-code.component.scss +0 -353
  808. package/src/lib/components/atoms/qr-code/qr-code.component.ts +0 -313
  809. package/src/lib/components/atoms/qr-code/qr-code.stories.ts +0 -767
  810. package/src/lib/components/atoms/qr-code/types.ts +0 -173
  811. package/src/lib/components/atoms/rights-footer/rights-footer.component.scss +0 -20
  812. package/src/lib/components/atoms/rights-footer/rights-footer.component.ts +0 -98
  813. package/src/lib/components/atoms/rights-footer/rights-footer.stories.ts +0 -229
  814. package/src/lib/components/atoms/rights-footer/types.ts +0 -21
  815. package/src/lib/components/atoms/skeleton/skeleton.component.scss +0 -58
  816. package/src/lib/components/atoms/skeleton/skeleton.component.ts +0 -129
  817. package/src/lib/components/atoms/skeleton/skeleton.stories.ts +0 -242
  818. package/src/lib/components/atoms/skeleton/types.ts +0 -39
  819. package/src/lib/components/atoms/text/text.component.scss +0 -38
  820. package/src/lib/components/atoms/text/text.component.ts +0 -123
  821. package/src/lib/components/atoms/text/text.stories.ts +0 -174
  822. package/src/lib/components/atoms/text/types.ts +0 -50
  823. package/src/lib/components/atoms/title/title.component.scss +0 -33
  824. package/src/lib/components/atoms/title/title.component.ts +0 -65
  825. package/src/lib/components/atoms/title/title.stories.ts +0 -167
  826. package/src/lib/components/atoms/title/types.ts +0 -46
  827. package/src/lib/components/molecules/accordion/accordion.component.scss +0 -34
  828. package/src/lib/components/molecules/accordion/accordion.component.ts +0 -103
  829. package/src/lib/components/molecules/accordion/accordion.stories.ts +0 -236
  830. package/src/lib/components/molecules/accordion/types.ts +0 -49
  831. package/src/lib/components/molecules/action-card/action-card.component.scss +0 -226
  832. package/src/lib/components/molecules/action-card/action-card.component.ts +0 -246
  833. package/src/lib/components/molecules/action-card/action-card.stories.ts +0 -396
  834. package/src/lib/components/molecules/action-card/types.ts +0 -102
  835. package/src/lib/components/molecules/action-header/action-header.component.ts +0 -28
  836. package/src/lib/components/molecules/action-header/action-header.stories.ts +0 -481
  837. package/src/lib/components/molecules/action-header/types.ts +0 -7
  838. package/src/lib/components/molecules/ad-slot/ad-slot.component.ts +0 -352
  839. package/src/lib/components/molecules/alert-box/alert-box.component.scss +0 -10
  840. package/src/lib/components/molecules/alert-box/alert-box.component.ts +0 -125
  841. package/src/lib/components/molecules/alert-box/alert-box.stories.ts +0 -248
  842. package/src/lib/components/molecules/alert-box/types.ts +0 -39
  843. package/src/lib/components/molecules/breadcrumb/breadcrumb.component.scss +0 -34
  844. package/src/lib/components/molecules/breadcrumb/breadcrumb.component.ts +0 -109
  845. package/src/lib/components/molecules/breadcrumb/breadcrumb.stories.ts +0 -271
  846. package/src/lib/components/molecules/breadcrumb/types.ts +0 -47
  847. package/src/lib/components/molecules/button-group/button-group.component.scss +0 -41
  848. package/src/lib/components/molecules/button-group/button-group.component.ts +0 -65
  849. package/src/lib/components/molecules/button-group/button-group.stories.ts +0 -296
  850. package/src/lib/components/molecules/button-group/types.ts +0 -14
  851. package/src/lib/components/molecules/card/card.component.scss +0 -62
  852. package/src/lib/components/molecules/card/card.component.ts +0 -300
  853. package/src/lib/components/molecules/card/card.stories.ts +0 -360
  854. package/src/lib/components/molecules/card/types.ts +0 -36
  855. package/src/lib/components/molecules/check-input/check-input.component.scss +0 -0
  856. package/src/lib/components/molecules/check-input/check-input.component.ts +0 -88
  857. package/src/lib/components/molecules/check-input/check-input.stories.ts +0 -54
  858. package/src/lib/components/molecules/chip-group/chip-group.component.scss +0 -70
  859. package/src/lib/components/molecules/chip-group/chip-group.component.ts +0 -150
  860. package/src/lib/components/molecules/chip-group/chip-group.stories.ts +0 -307
  861. package/src/lib/components/molecules/chip-group/types.ts +0 -69
  862. package/src/lib/components/molecules/code-display/code-display.component.scss +0 -239
  863. package/src/lib/components/molecules/code-display/code-display.component.ts +0 -109
  864. package/src/lib/components/molecules/code-display/code-display.stories.ts +0 -402
  865. package/src/lib/components/molecules/code-display/types.ts +0 -11
  866. package/src/lib/components/molecules/command-display/command-display.component.scss +0 -38
  867. package/src/lib/components/molecules/command-display/command-display.component.ts +0 -45
  868. package/src/lib/components/molecules/command-display/command-display.stories.ts +0 -110
  869. package/src/lib/components/molecules/command-display/types.ts +0 -3
  870. package/src/lib/components/molecules/comment/comment.component.scss +0 -339
  871. package/src/lib/components/molecules/comment/comment.component.ts +0 -496
  872. package/src/lib/components/molecules/comment/comment.stories.ts +0 -384
  873. package/src/lib/components/molecules/comment/types.ts +0 -181
  874. package/src/lib/components/molecules/comment-input/comment-input.component.scss +0 -0
  875. package/src/lib/components/molecules/comment-input/comment-input.component.ts +0 -42
  876. package/src/lib/components/molecules/comment-input/comment-input.stories.ts +0 -124
  877. package/src/lib/components/molecules/comment-input/types.ts +0 -69
  878. package/src/lib/components/molecules/content-loader/content-loader.component.scss +0 -42
  879. package/src/lib/components/molecules/content-loader/content-loader.component.ts +0 -45
  880. package/src/lib/components/molecules/content-loader/content-loader.stories.ts +0 -370
  881. package/src/lib/components/molecules/content-loader/types.ts +0 -16
  882. package/src/lib/components/molecules/content-reaction/content-reaction.component.html +0 -81
  883. package/src/lib/components/molecules/content-reaction/content-reaction.component.scss +0 -157
  884. package/src/lib/components/molecules/content-reaction/content-reaction.component.ts +0 -273
  885. package/src/lib/components/molecules/content-reaction/content-reaction.stories.ts +0 -453
  886. package/src/lib/components/molecules/content-reaction/types.ts +0 -99
  887. package/src/lib/components/molecules/currency-input/currency-input.component.scss +0 -101
  888. package/src/lib/components/molecules/currency-input/currency-input.component.ts +0 -327
  889. package/src/lib/components/molecules/currency-input/currency-input.stories.ts +0 -279
  890. package/src/lib/components/molecules/currency-input/types.ts +0 -125
  891. package/src/lib/components/molecules/date-input/date-input.component.scss +0 -11
  892. package/src/lib/components/molecules/date-input/date-input.component.ts +0 -136
  893. package/src/lib/components/molecules/date-input/date-input.stories.ts +0 -205
  894. package/src/lib/components/molecules/date-input/types.ts +0 -84
  895. package/src/lib/components/molecules/date-range-input/date-range-input.component.scss +0 -119
  896. package/src/lib/components/molecules/date-range-input/date-range-input.component.ts +0 -364
  897. package/src/lib/components/molecules/date-range-input/date-range-input.stories.ts +0 -288
  898. package/src/lib/components/molecules/date-range-input/types.ts +0 -122
  899. package/src/lib/components/molecules/docs-api-table/docs-api-table.component.scss +0 -278
  900. package/src/lib/components/molecules/docs-api-table/docs-api-table.component.ts +0 -138
  901. package/src/lib/components/molecules/docs-api-table/types.ts +0 -81
  902. package/src/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.ts +0 -161
  903. package/src/lib/components/molecules/docs-breadcrumb/types.ts +0 -21
  904. package/src/lib/components/molecules/docs-callout/docs-callout.component.scss +0 -136
  905. package/src/lib/components/molecules/docs-callout/docs-callout.component.ts +0 -55
  906. package/src/lib/components/molecules/docs-code-example/docs-code-example.component.ts +0 -535
  907. package/src/lib/components/molecules/docs-code-example/types.ts +0 -75
  908. package/src/lib/components/molecules/docs-nav-links/docs-nav-links.component.ts +0 -216
  909. package/src/lib/components/molecules/docs-nav-links/types.ts +0 -36
  910. package/src/lib/components/molecules/docs-search/docs-search.component.scss +0 -195
  911. package/src/lib/components/molecules/docs-search/docs-search.component.ts +0 -228
  912. package/src/lib/components/molecules/docs-search/types.ts +0 -30
  913. package/src/lib/components/molecules/docs-section/docs-section.component.ts +0 -99
  914. package/src/lib/components/molecules/docs-section/types.ts +0 -31
  915. package/src/lib/components/molecules/email-input/email-input.component.scss +0 -0
  916. package/src/lib/components/molecules/email-input/email-input.component.ts +0 -77
  917. package/src/lib/components/molecules/email-input/email-input.stories.ts +0 -176
  918. package/src/lib/components/molecules/expandable-text/expandable-text.component.ts +0 -111
  919. package/src/lib/components/molecules/expandable-text/expandable-text.stories.ts +0 -287
  920. package/src/lib/components/molecules/expandable-text/types.ts +0 -14
  921. package/src/lib/components/molecules/features-list/features-list.component.ts +0 -251
  922. package/src/lib/components/molecules/features-list/types.ts +0 -44
  923. package/src/lib/components/molecules/feedback-form/feedback-form.component.ts +0 -355
  924. package/src/lib/components/molecules/feedback-form/types.ts +0 -77
  925. package/src/lib/components/molecules/file-input/file-input.component.scss +0 -11
  926. package/src/lib/components/molecules/file-input/file-input.component.ts +0 -87
  927. package/src/lib/components/molecules/file-input/file-input.stories.ts +0 -107
  928. package/src/lib/components/molecules/file-input/types.ts +0 -85
  929. package/src/lib/components/molecules/footer-links/footer-links.component.scss +0 -130
  930. package/src/lib/components/molecules/footer-links/footer-links.component.ts +0 -244
  931. package/src/lib/components/molecules/footer-links/footer-links.stories.ts +0 -188
  932. package/src/lib/components/molecules/footer-links/types.ts +0 -52
  933. package/src/lib/components/molecules/glow-card/glow-card.component.scss +0 -295
  934. package/src/lib/components/molecules/glow-card/glow-card.component.ts +0 -284
  935. package/src/lib/components/molecules/glow-card/glow-card.stories.ts +0 -680
  936. package/src/lib/components/molecules/glow-card/types.ts +0 -117
  937. package/src/lib/components/molecules/hint/hint.component.scss +0 -5
  938. package/src/lib/components/molecules/hint/hint.component.ts +0 -89
  939. package/src/lib/components/molecules/hint/hint.stories.ts +0 -233
  940. package/src/lib/components/molecules/hour-input/hour-input.component.scss +0 -0
  941. package/src/lib/components/molecules/hour-input/hour-input.component.ts +0 -34
  942. package/src/lib/components/molecules/hour-input/hour-input.stories.ts +0 -145
  943. package/src/lib/components/molecules/image-crop/image-crop.component.ts +0 -195
  944. package/src/lib/components/molecules/info/info.component.ts +0 -35
  945. package/src/lib/components/molecules/info/info.stories.ts +0 -276
  946. package/src/lib/components/molecules/info/types.ts +0 -11
  947. package/src/lib/components/molecules/language-selector/language-selector.component.scss +0 -128
  948. package/src/lib/components/molecules/language-selector/language-selector.component.ts +0 -204
  949. package/src/lib/components/molecules/language-selector/language-selector.stories.ts +0 -261
  950. package/src/lib/components/molecules/language-selector/types.ts +0 -84
  951. package/src/lib/components/molecules/layered-card/layered-card.component.scss +0 -84
  952. package/src/lib/components/molecules/layered-card/layered-card.component.ts +0 -66
  953. package/src/lib/components/molecules/layered-card/layered-card.stories.ts +0 -313
  954. package/src/lib/components/molecules/layered-card/types.ts +0 -16
  955. package/src/lib/components/molecules/link/link.component.scss +0 -11
  956. package/src/lib/components/molecules/link/link.component.ts +0 -73
  957. package/src/lib/components/molecules/link/link.stories.ts +0 -307
  958. package/src/lib/components/molecules/link/types.ts +0 -20
  959. package/src/lib/components/molecules/linked-providers/index.ts +0 -2
  960. package/src/lib/components/molecules/linked-providers/linked-providers.component.ts +0 -289
  961. package/src/lib/components/molecules/linked-providers/types.ts +0 -63
  962. package/src/lib/components/molecules/links-accordion/links-accordion.component.scss +0 -17
  963. package/src/lib/components/molecules/links-accordion/links-accordion.component.ts +0 -152
  964. package/src/lib/components/molecules/links-accordion/links-accordion.stories.ts +0 -209
  965. package/src/lib/components/molecules/links-accordion/types.ts +0 -41
  966. package/src/lib/components/molecules/links-cake/links-cake.component.scss +0 -9
  967. package/src/lib/components/molecules/links-cake/links-cake.component.ts +0 -49
  968. package/src/lib/components/molecules/links-cake/links-cake.stories.ts +0 -160
  969. package/src/lib/components/molecules/links-cake/types.ts +0 -14
  970. package/src/lib/components/molecules/multi-select-search/multi-select-search.component.scss +0 -168
  971. package/src/lib/components/molecules/multi-select-search/multi-select-search.component.ts +0 -471
  972. package/src/lib/components/molecules/multi-select-search/multi-select-search.stories.ts +0 -188
  973. package/src/lib/components/molecules/notes-box/notes-box.component.scss +0 -5
  974. package/src/lib/components/molecules/notes-box/notes-box.component.ts +0 -62
  975. package/src/lib/components/molecules/notes-box/notes-box.stories.ts +0 -308
  976. package/src/lib/components/molecules/notes-box/types.ts +0 -22
  977. package/src/lib/components/molecules/number-from-to/number-from-to.component.scss +0 -10
  978. package/src/lib/components/molecules/number-from-to/number-from-to.component.ts +0 -134
  979. package/src/lib/components/molecules/number-from-to/number-from-to.stories.ts +0 -203
  980. package/src/lib/components/molecules/number-from-to/types.ts +0 -91
  981. package/src/lib/components/molecules/number-input/number-input.component.scss +0 -0
  982. package/src/lib/components/molecules/number-input/number-input.component.ts +0 -41
  983. package/src/lib/components/molecules/number-input/number-input.stories.ts +0 -151
  984. package/src/lib/components/molecules/number-stepper/number-stepper.component.scss +0 -252
  985. package/src/lib/components/molecules/number-stepper/number-stepper.component.ts +0 -302
  986. package/src/lib/components/molecules/number-stepper/number-stepper.stories.ts +0 -417
  987. package/src/lib/components/molecules/number-stepper/types.ts +0 -101
  988. package/src/lib/components/molecules/pagination/pagination.component.scss +0 -50
  989. package/src/lib/components/molecules/pagination/pagination.component.ts +0 -194
  990. package/src/lib/components/molecules/pagination/pagination.stories.ts +0 -260
  991. package/src/lib/components/molecules/pagination/types.ts +0 -43
  992. package/src/lib/components/molecules/participant-card/participant-card.component.scss +0 -371
  993. package/src/lib/components/molecules/participant-card/participant-card.component.ts +0 -402
  994. package/src/lib/components/molecules/participant-card/participant-card.stories.ts +0 -479
  995. package/src/lib/components/molecules/participant-card/types.ts +0 -170
  996. package/src/lib/components/molecules/password-input/password-input.component.scss +0 -7
  997. package/src/lib/components/molecules/password-input/password-input.component.ts +0 -93
  998. package/src/lib/components/molecules/password-input/password-input.stories.ts +0 -187
  999. package/src/lib/components/molecules/phone-input/phone-input.component.scss +0 -157
  1000. package/src/lib/components/molecules/phone-input/phone-input.component.ts +0 -354
  1001. package/src/lib/components/molecules/phone-input/phone-input.stories.ts +0 -229
  1002. package/src/lib/components/molecules/phone-input/types.ts +0 -126
  1003. package/src/lib/components/molecules/pill/pill.component.scss +0 -35
  1004. package/src/lib/components/molecules/pill/pill.component.ts +0 -89
  1005. package/src/lib/components/molecules/pill/pill.stories.ts +0 -219
  1006. package/src/lib/components/molecules/pill/types.ts +0 -10
  1007. package/src/lib/components/molecules/pin-input/pin-input.component.scss +0 -22
  1008. package/src/lib/components/molecules/pin-input/pin-input.component.ts +0 -83
  1009. package/src/lib/components/molecules/pin-input/pin-input.stories.ts +0 -196
  1010. package/src/lib/components/molecules/pin-input/types.ts +0 -80
  1011. package/src/lib/components/molecules/plain-code-box/plain-code-box.component.scss +0 -191
  1012. package/src/lib/components/molecules/plain-code-box/plain-code-box.component.ts +0 -86
  1013. package/src/lib/components/molecules/plain-code-box/plain-code-box.stories.ts +0 -174
  1014. package/src/lib/components/molecules/plain-code-box/types.ts +0 -12
  1015. package/src/lib/components/molecules/popover-selector/popover-selector.component.scss +0 -220
  1016. package/src/lib/components/molecules/popover-selector/popover-selector.component.ts +0 -163
  1017. package/src/lib/components/molecules/popover-selector/popover-selector.stories.ts +0 -324
  1018. package/src/lib/components/molecules/popover-selector/types.ts +0 -71
  1019. package/src/lib/components/molecules/progress-status/progress-status.component.scss +0 -41
  1020. package/src/lib/components/molecules/progress-status/progress-status.component.ts +0 -90
  1021. package/src/lib/components/molecules/progress-status/progress-status.stories.ts +0 -415
  1022. package/src/lib/components/molecules/progress-status/types.ts +0 -21
  1023. package/src/lib/components/molecules/prompter/prompter.component.scss +0 -45
  1024. package/src/lib/components/molecules/prompter/prompter.component.ts +0 -55
  1025. package/src/lib/components/molecules/prompter/prompter.stories.ts +0 -193
  1026. package/src/lib/components/molecules/prompter/types.ts +0 -26
  1027. package/src/lib/components/molecules/quote-box/quote-box.component.scss +0 -253
  1028. package/src/lib/components/molecules/quote-box/quote-box.component.ts +0 -104
  1029. package/src/lib/components/molecules/quote-box/quote-box.stories.ts +0 -264
  1030. package/src/lib/components/molecules/radio-input/radio-input.component.scss +0 -0
  1031. package/src/lib/components/molecules/radio-input/radio-input.component.ts +0 -51
  1032. package/src/lib/components/molecules/radio-input/radio-input.stories.ts +0 -197
  1033. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.component.scss +0 -418
  1034. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.component.ts +0 -320
  1035. package/src/lib/components/molecules/raffle-status-card/raffle-status-card.stories.ts +0 -509
  1036. package/src/lib/components/molecules/raffle-status-card/types.ts +0 -150
  1037. package/src/lib/components/molecules/range-input/range-input.component.scss +0 -15
  1038. package/src/lib/components/molecules/range-input/range-input.component.ts +0 -106
  1039. package/src/lib/components/molecules/range-input/range-input.stories.ts +0 -331
  1040. package/src/lib/components/molecules/range-input/types.ts +0 -61
  1041. package/src/lib/components/molecules/rating/rating.component.scss +0 -60
  1042. package/src/lib/components/molecules/rating/rating.component.ts +0 -154
  1043. package/src/lib/components/molecules/rating/rating.stories.ts +0 -332
  1044. package/src/lib/components/molecules/rating/types.ts +0 -43
  1045. package/src/lib/components/molecules/recap-card/recap-card.component.scss +0 -35
  1046. package/src/lib/components/molecules/recap-card/recap-card.component.ts +0 -64
  1047. package/src/lib/components/molecules/recap-card/recap-card.stories.ts +0 -174
  1048. package/src/lib/components/molecules/recap-card/types.ts +0 -30
  1049. package/src/lib/components/molecules/refresher/refresher.component.ts +0 -257
  1050. package/src/lib/components/molecules/refresher/types.ts +0 -103
  1051. package/src/lib/components/molecules/searchbar/searchbar.component.scss +0 -9
  1052. package/src/lib/components/molecules/searchbar/searchbar.component.ts +0 -122
  1053. package/src/lib/components/molecules/searchbar/searchbar.stories.ts +0 -192
  1054. package/src/lib/components/molecules/searchbar/types.ts +0 -38
  1055. package/src/lib/components/molecules/segment-control/segment-control.component.scss +0 -27
  1056. package/src/lib/components/molecules/segment-control/segment-control.component.ts +0 -121
  1057. package/src/lib/components/molecules/segment-control/segment-control.stories.ts +0 -296
  1058. package/src/lib/components/molecules/segment-control/types.ts +0 -48
  1059. package/src/lib/components/molecules/select-input/select-input.component.scss +0 -0
  1060. package/src/lib/components/molecules/select-input/select-input.component.ts +0 -133
  1061. package/src/lib/components/molecules/select-input/select-input.stories.ts +0 -330
  1062. package/src/lib/components/molecules/select-search/select-search.component.ts +0 -420
  1063. package/src/lib/components/molecules/select-search/select-search.stories.ts +0 -218
  1064. package/src/lib/components/molecules/share-buttons/share-buttons.component.scss +0 -195
  1065. package/src/lib/components/molecules/share-buttons/share-buttons.component.ts +0 -269
  1066. package/src/lib/components/molecules/share-buttons/share-buttons.stories.ts +0 -343
  1067. package/src/lib/components/molecules/share-buttons/types.ts +0 -211
  1068. package/src/lib/components/molecules/stats-card/stats-card.component.scss +0 -198
  1069. package/src/lib/components/molecules/stats-card/stats-card.component.ts +0 -157
  1070. package/src/lib/components/molecules/stats-card/stats-card.stories.ts +0 -481
  1071. package/src/lib/components/molecules/stats-card/types.ts +0 -63
  1072. package/src/lib/components/molecules/stepper/stepper.component.scss +0 -156
  1073. package/src/lib/components/molecules/stepper/stepper.component.ts +0 -201
  1074. package/src/lib/components/molecules/stepper/stepper.stories.ts +0 -308
  1075. package/src/lib/components/molecules/stepper/types.ts +0 -70
  1076. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.component.scss +0 -164
  1077. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.component.ts +0 -215
  1078. package/src/lib/components/molecules/swipe-carousel/swipe-carousel.stories.ts +0 -406
  1079. package/src/lib/components/molecules/swipe-carousel/types.ts +0 -32
  1080. package/src/lib/components/molecules/tabs/tabs.component.scss +0 -35
  1081. package/src/lib/components/molecules/tabs/tabs.component.ts +0 -125
  1082. package/src/lib/components/molecules/tabs/tabs.stories.ts +0 -283
  1083. package/src/lib/components/molecules/tabs/types.ts +0 -47
  1084. package/src/lib/components/molecules/testimonial-card/testimonial-card.component.scss +0 -25
  1085. package/src/lib/components/molecules/testimonial-card/testimonial-card.component.ts +0 -121
  1086. package/src/lib/components/molecules/testimonial-card/testimonial-card.stories.ts +0 -130
  1087. package/src/lib/components/molecules/testimonial-card/types.ts +0 -26
  1088. package/src/lib/components/molecules/text-input/text-input.component.scss +0 -1
  1089. package/src/lib/components/molecules/text-input/text-input.component.ts +0 -86
  1090. package/src/lib/components/molecules/text-input/text-input.stories.ts +0 -301
  1091. package/src/lib/components/molecules/textarea-input/textarea-input.component.scss +0 -62
  1092. package/src/lib/components/molecules/textarea-input/textarea-input.component.ts +0 -195
  1093. package/src/lib/components/molecules/textarea-input/textarea-input.stories.ts +0 -329
  1094. package/src/lib/components/molecules/textarea-input/types.ts +0 -83
  1095. package/src/lib/components/molecules/ticket-grid/ticket-grid.component.scss +0 -270
  1096. package/src/lib/components/molecules/ticket-grid/ticket-grid.component.ts +0 -429
  1097. package/src/lib/components/molecules/ticket-grid/ticket-grid.stories.ts +0 -436
  1098. package/src/lib/components/molecules/ticket-grid/types.ts +0 -145
  1099. package/src/lib/components/molecules/timeline/timeline.component.scss +0 -168
  1100. package/src/lib/components/molecules/timeline/timeline.component.ts +0 -98
  1101. package/src/lib/components/molecules/timeline/timeline.stories.ts +0 -259
  1102. package/src/lib/components/molecules/timeline/types.ts +0 -41
  1103. package/src/lib/components/molecules/title-block/title-block.component.scss +0 -48
  1104. package/src/lib/components/molecules/title-block/title-block.component.ts +0 -72
  1105. package/src/lib/components/molecules/title-block/title-block.stories.ts +0 -351
  1106. package/src/lib/components/molecules/title-block/types.ts +0 -16
  1107. package/src/lib/components/molecules/toggle-input/toggle-input.component.scss +0 -7
  1108. package/src/lib/components/molecules/toggle-input/toggle-input.component.ts +0 -94
  1109. package/src/lib/components/molecules/toggle-input/toggle-input.stories.ts +0 -240
  1110. package/src/lib/components/molecules/toggle-input/types.ts +0 -31
  1111. package/src/lib/components/molecules/update-banner/index.ts +0 -1
  1112. package/src/lib/components/molecules/update-banner/update-banner.component.ts +0 -118
  1113. package/src/lib/components/molecules/username-input/index.ts +0 -2
  1114. package/src/lib/components/molecules/username-input/types.ts +0 -36
  1115. package/src/lib/components/molecules/username-input/username-input.component.ts +0 -336
  1116. package/src/lib/components/molecules/winner-display/types.ts +0 -129
  1117. package/src/lib/components/molecules/winner-display/winner-display.component.scss +0 -501
  1118. package/src/lib/components/molecules/winner-display/winner-display.component.ts +0 -284
  1119. package/src/lib/components/molecules/winner-display/winner-display.stories.ts +0 -468
  1120. package/src/lib/components/organisms/article/README.md +0 -569
  1121. package/src/lib/components/organisms/article/article.component.scss +0 -433
  1122. package/src/lib/components/organisms/article/article.component.ts +0 -469
  1123. package/src/lib/components/organisms/article/article.stories.ts +0 -625
  1124. package/src/lib/components/organisms/article/types.ts +0 -550
  1125. package/src/lib/components/organisms/avatar-upload/avatar-upload.component.scss +0 -119
  1126. package/src/lib/components/organisms/avatar-upload/avatar-upload.component.ts +0 -349
  1127. package/src/lib/components/organisms/avatar-upload/index.ts +0 -2
  1128. package/src/lib/components/organisms/avatar-upload/types.ts +0 -71
  1129. package/src/lib/components/organisms/banner/banner.component.scss +0 -51
  1130. package/src/lib/components/organisms/banner/banner.component.ts +0 -95
  1131. package/src/lib/components/organisms/banner/banner.stories.ts +0 -462
  1132. package/src/lib/components/organisms/banner/types.ts +0 -30
  1133. package/src/lib/components/organisms/bottom-nav/bottom-nav.component.scss +0 -350
  1134. package/src/lib/components/organisms/bottom-nav/bottom-nav.component.ts +0 -362
  1135. package/src/lib/components/organisms/bottom-nav/types.ts +0 -139
  1136. package/src/lib/components/organisms/cards-carousel/cards-carousel.component.ts +0 -53
  1137. package/src/lib/components/organisms/cards-carousel/cards-carousel.stories.ts +0 -241
  1138. package/src/lib/components/organisms/cards-carousel/types.ts +0 -12
  1139. package/src/lib/components/organisms/comment-section/comment-section.component.scss +0 -269
  1140. package/src/lib/components/organisms/comment-section/comment-section.component.ts +0 -429
  1141. package/src/lib/components/organisms/comment-section/comment-section.stories.ts +0 -305
  1142. package/src/lib/components/organisms/comment-section/types.ts +0 -169
  1143. package/src/lib/components/organisms/company-footer/company-footer.component.ts +0 -73
  1144. package/src/lib/components/organisms/company-footer/company-footer.stories.ts +0 -216
  1145. package/src/lib/components/organisms/company-footer/types.ts +0 -16
  1146. package/src/lib/components/organisms/data-table/data-table.component.scss +0 -907
  1147. package/src/lib/components/organisms/data-table/data-table.component.ts +0 -821
  1148. package/src/lib/components/organisms/data-table/data-table.stories.ts +0 -787
  1149. package/src/lib/components/organisms/data-table/types.ts +0 -258
  1150. package/src/lib/components/organisms/docs-sidebar/docs-sidebar.component.scss +0 -228
  1151. package/src/lib/components/organisms/docs-sidebar/docs-sidebar.component.ts +0 -213
  1152. package/src/lib/components/organisms/docs-sidebar/types.ts +0 -112
  1153. package/src/lib/components/organisms/docs-toc/docs-toc.component.scss +0 -119
  1154. package/src/lib/components/organisms/docs-toc/docs-toc.component.ts +0 -320
  1155. package/src/lib/components/organisms/docs-toc/types.ts +0 -73
  1156. package/src/lib/components/organisms/footer/footer.component.scss +0 -3
  1157. package/src/lib/components/organisms/footer/footer.component.ts +0 -65
  1158. package/src/lib/components/organisms/footer/footer.stories.ts +0 -278
  1159. package/src/lib/components/organisms/footer/types.ts +0 -17
  1160. package/src/lib/components/organisms/form/factory.ts +0 -46
  1161. package/src/lib/components/organisms/form/form-footer/form-footer.component.scss +0 -0
  1162. package/src/lib/components/organisms/form/form-footer/form-footer.component.ts +0 -72
  1163. package/src/lib/components/organisms/form/form.component.scss +0 -24
  1164. package/src/lib/components/organisms/form/form.component.ts +0 -367
  1165. package/src/lib/components/organisms/form/form.stories.ts +0 -505
  1166. package/src/lib/components/organisms/fun-header/fun-header.component.scss +0 -36
  1167. package/src/lib/components/organisms/fun-header/fun-header.component.ts +0 -209
  1168. package/src/lib/components/organisms/fun-header/fun-header.stories.ts +0 -272
  1169. package/src/lib/components/organisms/fun-header/types.ts +0 -29
  1170. package/src/lib/components/organisms/header/header.component.scss +0 -5
  1171. package/src/lib/components/organisms/header/header.component.ts +0 -53
  1172. package/src/lib/components/organisms/header/header.stories.ts +0 -293
  1173. package/src/lib/components/organisms/header/types.ts +0 -17
  1174. package/src/lib/components/organisms/infinite-list/infinite-list.component.ts +0 -602
  1175. package/src/lib/components/organisms/infinite-list/types.ts +0 -235
  1176. package/src/lib/components/organisms/item-list/item-list.component.scss +0 -53
  1177. package/src/lib/components/organisms/item-list/item-list.component.ts +0 -269
  1178. package/src/lib/components/organisms/item-list/item-list.stories.ts +0 -363
  1179. package/src/lib/components/organisms/item-list/types.ts +0 -130
  1180. package/src/lib/components/organisms/login/login.component.html +0 -244
  1181. package/src/lib/components/organisms/login/login.component.scss +0 -118
  1182. package/src/lib/components/organisms/login/login.component.ts +0 -866
  1183. package/src/lib/components/organisms/login/types.ts +0 -89
  1184. package/src/lib/components/organisms/menu/menu.component.scss +0 -23
  1185. package/src/lib/components/organisms/menu/menu.component.ts +0 -152
  1186. package/src/lib/components/organisms/menu/menu.stories.ts +0 -223
  1187. package/src/lib/components/organisms/menu/types.ts +0 -24
  1188. package/src/lib/components/organisms/no-content/no-content.component.scss +0 -11
  1189. package/src/lib/components/organisms/no-content/no-content.component.ts +0 -68
  1190. package/src/lib/components/organisms/no-content/no-content.stories.ts +0 -259
  1191. package/src/lib/components/organisms/no-content/types.ts +0 -18
  1192. package/src/lib/components/organisms/rotating-text/rotating-text.component.ts +0 -239
  1193. package/src/lib/components/organisms/rotating-text/types.ts +0 -29
  1194. package/src/lib/components/organisms/tabbed-content/tabbed-content.component.scss +0 -89
  1195. package/src/lib/components/organisms/tabbed-content/tabbed-content.component.ts +0 -165
  1196. package/src/lib/components/organisms/tabbed-content/tabbed-content.stories.ts +0 -326
  1197. package/src/lib/components/organisms/tabbed-content/types.ts +0 -56
  1198. package/src/lib/components/organisms/terminal-404/terminal-404.component.ts +0 -339
  1199. package/src/lib/components/organisms/terminal-404/types.ts +0 -22
  1200. package/src/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.ts +0 -70
  1201. package/src/lib/components/organisms/testimonial-carousel/testimonial-carousel.stories.ts +0 -173
  1202. package/src/lib/components/organisms/testimonial-carousel/types.ts +0 -9
  1203. package/src/lib/components/organisms/toolbar/toolbar.component.scss +0 -13
  1204. package/src/lib/components/organisms/toolbar/toolbar.component.ts +0 -195
  1205. package/src/lib/components/organisms/toolbar/toolbar.stories.ts +0 -263
  1206. package/src/lib/components/organisms/toolbar/types.ts +0 -32
  1207. package/src/lib/components/organisms/wizard/types.ts +0 -46
  1208. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.scss +0 -0
  1209. package/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts +0 -104
  1210. package/src/lib/components/organisms/wizard/wizard.component.scss +0 -16
  1211. package/src/lib/components/organisms/wizard/wizard.component.ts +0 -165
  1212. package/src/lib/components/organisms/wizard/wizard.stories.ts +0 -653
  1213. package/src/lib/components/templates/auth-background/auth-background.component.ts +0 -258
  1214. package/src/lib/components/templates/auth-background/types.ts +0 -34
  1215. package/src/lib/components/templates/docs-layout/docs-layout.component.scss +0 -218
  1216. package/src/lib/components/templates/docs-layout/docs-layout.component.ts +0 -161
  1217. package/src/lib/components/templates/docs-layout/types.ts +0 -45
  1218. package/src/lib/components/templates/docs-page/docs-page.component.ts +0 -534
  1219. package/src/lib/components/templates/docs-page/types.ts +0 -141
  1220. package/src/lib/components/templates/docs-shell/docs-shell.component.ts +0 -494
  1221. package/src/lib/components/templates/docs-shell/types.ts +0 -176
  1222. package/src/lib/components/templates/layout/layout.component.scss +0 -25
  1223. package/src/lib/components/templates/layout/layout.component.ts +0 -14
  1224. package/src/lib/components/templates/maintenance-page/index.ts +0 -2
  1225. package/src/lib/components/templates/maintenance-page/maintenance-page.component.scss +0 -44
  1226. package/src/lib/components/templates/maintenance-page/maintenance-page.component.ts +0 -120
  1227. package/src/lib/components/templates/maintenance-page/types.ts +0 -12
  1228. package/src/lib/components/templates/page-content/page-content.component.ts +0 -188
  1229. package/src/lib/components/templates/page-content/page-content.stories.ts +0 -169
  1230. package/src/lib/components/templates/page-content/types.ts +0 -28
  1231. package/src/lib/components/templates/page-template/page-template.component.ts +0 -164
  1232. package/src/lib/components/templates/page-template/page-template.stories.ts +0 -174
  1233. package/src/lib/components/templates/page-template/types.ts +0 -17
  1234. package/src/lib/components/templates/page-wrapper/page-wrapper.component.ts +0 -183
  1235. package/src/lib/components/templates/page-wrapper/page-wrapper.stories.ts +0 -149
  1236. package/src/lib/components/templates/page-wrapper/types.ts +0 -20
  1237. package/src/lib/components/templates/simple/simple.component.ts +0 -92
  1238. package/src/lib/components/templates/simple/types.ts +0 -11
  1239. package/src/lib/components/types.ts +0 -311
  1240. package/src/lib/config/company-footer.config.ts +0 -137
  1241. package/src/lib/services/ads/ads-consent.service.ts +0 -166
  1242. package/src/lib/services/ads/ads-loader.service.ts +0 -133
  1243. package/src/lib/services/ads/ads.service.ts +0 -268
  1244. package/src/lib/services/ads/config.ts +0 -92
  1245. package/src/lib/services/ads/index.ts +0 -29
  1246. package/src/lib/services/ads/types.ts +0 -187
  1247. package/src/lib/services/app-config/app-config.service.ts +0 -228
  1248. package/src/lib/services/app-config/config.ts +0 -62
  1249. package/src/lib/services/app-config/index.ts +0 -48
  1250. package/src/lib/services/app-config/types.ts +0 -62
  1251. package/src/lib/services/app-config/version.ts +0 -104
  1252. package/src/lib/services/auth/auth-state.service.ts +0 -225
  1253. package/src/lib/services/auth/auth.service.ts +0 -1306
  1254. package/src/lib/services/auth/config.ts +0 -93
  1255. package/src/lib/services/auth/device.service.ts +0 -163
  1256. package/src/lib/services/auth/guards.ts +0 -234
  1257. package/src/lib/services/auth/index.ts +0 -111
  1258. package/src/lib/services/auth/interceptor.ts +0 -177
  1259. package/src/lib/services/auth/oauth-callback.component.ts +0 -202
  1260. package/src/lib/services/auth/oauth.service.ts +0 -352
  1261. package/src/lib/services/auth/session.service.ts +0 -83
  1262. package/src/lib/services/auth/storage.service.ts +0 -181
  1263. package/src/lib/services/auth/sync.service.ts +0 -158
  1264. package/src/lib/services/auth/token.service.ts +0 -132
  1265. package/src/lib/services/auth/types.ts +0 -1023
  1266. package/src/lib/services/confirmation-dialog/confirmation-dialog.service.ts +0 -199
  1267. package/src/lib/services/confirmation-dialog/types.ts +0 -74
  1268. package/src/lib/services/content/content-types/blog.ts +0 -324
  1269. package/src/lib/services/content/content-types/documentation.ts +0 -369
  1270. package/src/lib/services/content/content-types/news.ts +0 -328
  1271. package/src/lib/services/content/index.ts +0 -71
  1272. package/src/lib/services/content/transformer.ts +0 -312
  1273. package/src/lib/services/content/types.ts +0 -276
  1274. package/src/lib/services/docs/docs-navigation.service.ts +0 -91
  1275. package/src/lib/services/download.service.ts +0 -75
  1276. package/src/lib/services/feedback/config.ts +0 -61
  1277. package/src/lib/services/feedback/feedback.service.ts +0 -348
  1278. package/src/lib/services/feedback/index.ts +0 -59
  1279. package/src/lib/services/feedback/types.ts +0 -239
  1280. package/src/lib/services/firebase/README.md +0 -328
  1281. package/src/lib/services/firebase/analytics-error-handler.ts +0 -155
  1282. package/src/lib/services/firebase/analytics-router-tracker.ts +0 -109
  1283. package/src/lib/services/firebase/analytics-types.ts +0 -277
  1284. package/src/lib/services/firebase/analytics.service.ts +0 -707
  1285. package/src/lib/services/firebase/config.ts +0 -172
  1286. package/src/lib/services/firebase/firebase.service.ts +0 -502
  1287. package/src/lib/services/firebase/firestore-collection.ts +0 -336
  1288. package/src/lib/services/firebase/firestore.service.ts +0 -649
  1289. package/src/lib/services/firebase/index.ts +0 -88
  1290. package/src/lib/services/firebase/messaging.service.ts +0 -672
  1291. package/src/lib/services/firebase/notifications.service.ts +0 -253
  1292. package/src/lib/services/firebase/shared-config.ts +0 -167
  1293. package/src/lib/services/firebase/storage.service.ts +0 -519
  1294. package/src/lib/services/firebase/types.ts +0 -461
  1295. package/src/lib/services/firebase/utils/path-builder.ts +0 -210
  1296. package/src/lib/services/firebase/utils/query-builder.ts +0 -339
  1297. package/src/lib/services/i18n/config.ts +0 -129
  1298. package/src/lib/services/i18n/default-content.ts +0 -640
  1299. package/src/lib/services/i18n/i18n.service.ts +0 -223
  1300. package/src/lib/services/i18n/index.ts +0 -29
  1301. package/src/lib/services/i18n/input-i18n.helper.ts +0 -141
  1302. package/src/lib/services/i18n/translate.pipe.ts +0 -43
  1303. package/src/lib/services/i18n/types.ts +0 -108
  1304. package/src/lib/services/icons.service.ts +0 -122
  1305. package/src/lib/services/image/image.service.ts +0 -328
  1306. package/src/lib/services/image/types.ts +0 -79
  1307. package/src/lib/services/in-app-browser.service.ts +0 -30
  1308. package/src/lib/services/link-processor.service.ts +0 -311
  1309. package/src/lib/services/local-storage.service.ts +0 -39
  1310. package/src/lib/services/locale.service.ts +0 -86
  1311. package/src/lib/services/meta/meta.service.ts +0 -64
  1312. package/src/lib/services/meta/types.ts +0 -13
  1313. package/src/lib/services/modal/modal.service.ts +0 -244
  1314. package/src/lib/services/modal/simple-modal-content.component.ts +0 -138
  1315. package/src/lib/services/modal/types.ts +0 -180
  1316. package/src/lib/services/navigation/navigation.service.ts +0 -255
  1317. package/src/lib/services/navigation/types.ts +0 -86
  1318. package/src/lib/services/pagination/index.ts +0 -13
  1319. package/src/lib/services/pagination/pagination.service.ts +0 -243
  1320. package/src/lib/services/pagination/types.ts +0 -133
  1321. package/src/lib/services/presets/config.ts +0 -51
  1322. package/src/lib/services/presets/index.ts +0 -8
  1323. package/src/lib/services/presets/preset.service.ts +0 -105
  1324. package/src/lib/services/presets/types.ts +0 -41
  1325. package/src/lib/services/qr-generator/qr-generator.service.ts +0 -378
  1326. package/src/lib/services/qr-generator/types.ts +0 -207
  1327. package/src/lib/services/skeleton/config.ts +0 -82
  1328. package/src/lib/services/skeleton/directives/index.ts +0 -1
  1329. package/src/lib/services/skeleton/directives/loading.directive.ts +0 -230
  1330. package/src/lib/services/skeleton/index.ts +0 -30
  1331. package/src/lib/services/skeleton/skeleton.service.ts +0 -220
  1332. package/src/lib/services/skeleton/templates/detail-skeleton.component.ts +0 -166
  1333. package/src/lib/services/skeleton/templates/form-skeleton.component.ts +0 -115
  1334. package/src/lib/services/skeleton/templates/grid-skeleton.component.ts +0 -127
  1335. package/src/lib/services/skeleton/templates/index.ts +0 -6
  1336. package/src/lib/services/skeleton/templates/list-skeleton.component.ts +0 -90
  1337. package/src/lib/services/skeleton/templates/profile-skeleton.component.ts +0 -174
  1338. package/src/lib/services/skeleton/templates/table-skeleton.component.ts +0 -113
  1339. package/src/lib/services/skeleton/types.ts +0 -142
  1340. package/src/lib/services/theme.service.ts +0 -154
  1341. package/src/lib/services/toast.service.ts +0 -42
  1342. package/src/lib/services/types.ts +0 -6
  1343. package/src/lib/shared/constants/storage.ts +0 -2
  1344. package/src/lib/shared/pipes/process-links.pipe.ts +0 -64
  1345. package/src/lib/shared/utils/dom.ts +0 -29
  1346. package/src/lib/shared/utils/form-defaults.ts +0 -119
  1347. package/src/lib/shared/utils/styles.ts +0 -39
  1348. package/src/lib/shared/utils/text.ts +0 -12
  1349. package/src/lib/version.ts +0 -5
  1350. package/src/public-api.ts +0 -352
  1351. package/src/stories/Introduction.mdx +0 -649
  1352. package/src/stories/helpers/mock-services.ts +0 -27
  1353. package/src/stories/helpers/storybook-helpers.ts +0 -89
  1354. package/tsconfig.json +0 -32
  1355. package/tsconfig.lib.json +0 -15
  1356. package/tsconfig.lib.prod.json +0 -10
  1357. package/tsconfig.spec.json +0 -14
  1358. /package/{src/lib/components/molecules/image-crop/index.ts → lib/components/molecules/image-crop/index.d.ts} +0 -0
  1359. /package/{src/lib/config/index.ts → lib/config/index.d.ts} +0 -0
  1360. /package/{src/lib/services/image/index.ts → lib/services/image/index.d.ts} +0 -0
  1361. /package/{src/lib/services/meta/index.ts → lib/services/meta/index.d.ts} +0 -0
  1362. /package/{src/lib/services/navigation/index.ts → lib/services/navigation/index.d.ts} +0 -0
@@ -0,0 +1,1081 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, Output, EventEmitter, inject, ChangeDetectionStrategy, ChangeDetectorRef, } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { IonButton, IonIcon, IonCheckbox, IonSpinner, IonSelect, IonSelectOption, } from '@ionic/angular/standalone';
5
+ import { addIcons } from 'ionicons';
6
+ import { chevronUpOutline, chevronDownOutline, chevronBackOutline, chevronForwardOutline, documentOutline, } from 'ionicons/icons';
7
+ import { I18nService } from '../../../services/i18n';
8
+ import { DEFAULT_PAGE_SIZE_OPTIONS, } from './types';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ addIcons({
12
+ chevronUpOutline,
13
+ chevronDownOutline,
14
+ chevronBackOutline,
15
+ chevronForwardOutline,
16
+ documentOutline,
17
+ });
18
+ /**
19
+ * val-data-table
20
+ *
21
+ * A flexible data table component for displaying tabular data with sorting,
22
+ * pagination, and selection features.
23
+ *
24
+ * @example Basic usage
25
+ * ```html
26
+ * <val-data-table
27
+ * [props]="{
28
+ * columns: [
29
+ * { key: 'name', label: 'Nombre', sortable: true },
30
+ * { key: 'email', label: 'Email' },
31
+ * { key: 'status', label: 'Estado' }
32
+ * ],
33
+ * data: users
34
+ * }"
35
+ * ></val-data-table>
36
+ * ```
37
+ *
38
+ * @example With pagination and selection
39
+ * ```html
40
+ * <val-data-table
41
+ * [props]="{
42
+ * columns: columns,
43
+ * data: participants,
44
+ * showPagination: true,
45
+ * pagination: {
46
+ * page: 0,
47
+ * pageSize: 25,
48
+ * total: totalCount
49
+ * },
50
+ * selection: {
51
+ * mode: 'multiple',
52
+ * selected: selectedParticipants
53
+ * },
54
+ * showSelectionColumn: true
55
+ * }"
56
+ * (selectionChange)="onSelectionChange($event)"
57
+ * (pageChange)="onPageChange($event)"
58
+ * ></val-data-table>
59
+ * ```
60
+ */
61
+ export class DataTableComponent {
62
+ constructor() {
63
+ this.rowClick = new EventEmitter();
64
+ this.selectionChange = new EventEmitter();
65
+ this.sortChange = new EventEmitter();
66
+ this.pageChange = new EventEmitter();
67
+ this.displayedData = [];
68
+ this.currentSort = null;
69
+ this.selectedRows = new Set();
70
+ /** Cached visible columns for performance */
71
+ this._visibleColumns = [];
72
+ this.cdr = inject(ChangeDetectorRef);
73
+ this.i18n = inject(I18nService);
74
+ }
75
+ ngOnInit() {
76
+ this.initializeState();
77
+ this.updateDisplayedData();
78
+ }
79
+ ngOnChanges(changes) {
80
+ if (changes['props']) {
81
+ this.initializeState();
82
+ this.updateDisplayedData();
83
+ }
84
+ }
85
+ initializeState() {
86
+ // Cache visible columns for performance
87
+ this._visibleColumns = this.props.columns.filter(c => c.visible !== false);
88
+ // Initialize sort
89
+ this.currentSort = this.props.sort || null;
90
+ // Initialize selection
91
+ if (this.props.selection?.selected) {
92
+ this.selectedRows = new Set(this.props.selection.selected.map(row => this.getRowId(row)));
93
+ }
94
+ }
95
+ updateDisplayedData() {
96
+ let data = [...this.props.data];
97
+ // Apply client-side sorting
98
+ if (this.props.clientSort && this.currentSort) {
99
+ data = this.sortData(data);
100
+ }
101
+ // Apply client-side pagination
102
+ if (this.props.clientPagination && this.props.pagination) {
103
+ const start = this.props.pagination.page * this.props.pagination.pageSize;
104
+ const end = start + this.props.pagination.pageSize;
105
+ data = data.slice(start, end);
106
+ }
107
+ this.displayedData = data;
108
+ this.cdr.markForCheck();
109
+ }
110
+ sortData(data) {
111
+ if (!this.currentSort)
112
+ return data;
113
+ const column = this.props.columns.find(c => c.key === this.currentSort?.column);
114
+ if (!column)
115
+ return data;
116
+ return [...data].sort((a, b) => {
117
+ if (column.sortFn) {
118
+ const result = column.sortFn(a, b);
119
+ return this.currentSort?.direction === 'desc' ? -result : result;
120
+ }
121
+ const valueA = this.getCellValue(a, column);
122
+ const valueB = this.getCellValue(b, column);
123
+ let comparison = 0;
124
+ if (valueA == null && valueB == null)
125
+ comparison = 0;
126
+ else if (valueA == null)
127
+ comparison = 1;
128
+ else if (valueB == null)
129
+ comparison = -1;
130
+ else if (typeof valueA === 'string' && typeof valueB === 'string') {
131
+ comparison = valueA.localeCompare(valueB);
132
+ }
133
+ else {
134
+ comparison = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;
135
+ }
136
+ return this.currentSort?.direction === 'desc' ? -comparison : comparison;
137
+ });
138
+ }
139
+ get visibleColumns() {
140
+ return this._visibleColumns;
141
+ }
142
+ get totalColumns() {
143
+ let count = this.visibleColumns.length;
144
+ if (this.props.showSelectionColumn)
145
+ count++;
146
+ if (this.props.showRowNumbers)
147
+ count++;
148
+ if (this.props.actionsTemplate)
149
+ count++;
150
+ return count;
151
+ }
152
+ get emptyState() {
153
+ const defaultEmptyState = {
154
+ icon: 'document-outline',
155
+ title: this.i18n.t('noData'),
156
+ description: this.i18n.t('noRecordsFound'),
157
+ };
158
+ return this.props.emptyState || defaultEmptyState;
159
+ }
160
+ /** Get actions column label */
161
+ getActionsLabel() {
162
+ return this.props.actionsLabel || this.i18n.t('actions');
163
+ }
164
+ /** Get pagination info text */
165
+ getPaginationInfoText() {
166
+ return `${this.i18n.t('showing')} ${this.paginationStart}-${this.paginationEnd} ${this.i18n.t('of')} ${this.props.pagination?.total}`;
167
+ }
168
+ /** Get per page text */
169
+ getPerPageText(size) {
170
+ return `${size} ${this.i18n.t('perPage')}`;
171
+ }
172
+ /** Get first page aria label */
173
+ getFirstPageLabel() {
174
+ return this.i18n.t('firstPage');
175
+ }
176
+ /** Get previous page aria label */
177
+ getPreviousPageLabel() {
178
+ return this.i18n.t('previousPage');
179
+ }
180
+ /** Get next page aria label */
181
+ getNextPageLabel() {
182
+ return this.i18n.t('nextPage');
183
+ }
184
+ /** Get last page aria label */
185
+ getLastPageLabel() {
186
+ return this.i18n.t('lastPage');
187
+ }
188
+ get pageSizeOptions() {
189
+ return this.props.pagination?.pageSizeOptions || DEFAULT_PAGE_SIZE_OPTIONS;
190
+ }
191
+ get totalPages() {
192
+ if (!this.props.pagination)
193
+ return 1;
194
+ return Math.ceil(this.props.pagination.total / this.props.pagination.pageSize);
195
+ }
196
+ get paginationStart() {
197
+ if (!this.props.pagination)
198
+ return 1;
199
+ return this.props.pagination.page * this.props.pagination.pageSize + 1;
200
+ }
201
+ get paginationEnd() {
202
+ if (!this.props.pagination)
203
+ return this.displayedData.length;
204
+ return Math.min((this.props.pagination.page + 1) * this.props.pagination.pageSize, this.props.pagination.total);
205
+ }
206
+ get isAllSelected() {
207
+ if (this.displayedData.length === 0)
208
+ return false;
209
+ return this.displayedData.every(row => this.isRowSelected(row));
210
+ }
211
+ get isIndeterminate() {
212
+ const selectedCount = this.displayedData.filter(row => this.isRowSelected(row)).length;
213
+ return selectedCount > 0 && selectedCount < this.displayedData.length;
214
+ }
215
+ getCellValue(row, column) {
216
+ const field = column.field || column.key;
217
+ return field.split('.').reduce((obj, key) => obj?.[key], row);
218
+ }
219
+ getFormattedValue(row, column) {
220
+ const value = this.getCellValue(row, column);
221
+ if (column.format) {
222
+ return column.format(value, row);
223
+ }
224
+ return value ?? '';
225
+ }
226
+ getColumnClass(column) {
227
+ const classes = [column.cssClass || ''];
228
+ if (column.sticky) {
229
+ classes.push(`sticky-${column.sticky}`);
230
+ }
231
+ if (column.align) {
232
+ classes.push(`align-${column.align}`);
233
+ }
234
+ return classes.filter(Boolean).join(' ');
235
+ }
236
+ getAriaSort(column) {
237
+ if (!column.sortable)
238
+ return null;
239
+ if (this.currentSort?.column !== column.key)
240
+ return 'none';
241
+ return this.currentSort.direction === 'asc' ? 'ascending' : 'descending';
242
+ }
243
+ getRowNumber(index) {
244
+ const start = this.props.rowNumberStart ?? 1;
245
+ if (this.props.pagination) {
246
+ return start + this.props.pagination.page * this.props.pagination.pageSize + index;
247
+ }
248
+ return start + index;
249
+ }
250
+ getRowId(row) {
251
+ if (this.props.selection?.trackBy) {
252
+ return this.props.selection.trackBy(row);
253
+ }
254
+ return row;
255
+ }
256
+ trackByFn(row) {
257
+ return this.getRowId(row);
258
+ }
259
+ isRowSelected(row) {
260
+ return this.selectedRows.has(this.getRowId(row));
261
+ }
262
+ onSort(column) {
263
+ if (!column.sortable)
264
+ return;
265
+ let direction = 'asc';
266
+ if (this.currentSort?.column === column.key) {
267
+ if (this.currentSort.direction === 'asc') {
268
+ direction = 'desc';
269
+ }
270
+ else {
271
+ direction = null;
272
+ }
273
+ }
274
+ if (direction) {
275
+ this.currentSort = { column: column.key, direction };
276
+ }
277
+ else {
278
+ this.currentSort = null;
279
+ }
280
+ this.sortChange.emit({
281
+ column: column.key,
282
+ direction,
283
+ });
284
+ if (this.props.clientSort) {
285
+ this.updateDisplayedData();
286
+ }
287
+ }
288
+ onRowClick(row, index, event) {
289
+ if (!this.props.rowClickable)
290
+ return;
291
+ this.rowClick.emit({
292
+ row,
293
+ index,
294
+ event,
295
+ });
296
+ }
297
+ toggleSelectAll(event) {
298
+ const checked = event.detail.checked;
299
+ if (checked) {
300
+ this.displayedData.forEach(row => {
301
+ this.selectedRows.add(this.getRowId(row));
302
+ });
303
+ }
304
+ else {
305
+ this.displayedData.forEach(row => {
306
+ this.selectedRows.delete(this.getRowId(row));
307
+ });
308
+ }
309
+ this.emitSelectionChange(checked ? 'selectAll' : 'deselectAll');
310
+ }
311
+ toggleRowSelection(row, event) {
312
+ const rowId = this.getRowId(row);
313
+ const checked = event.detail.checked;
314
+ if (checked) {
315
+ this.selectedRows.add(rowId);
316
+ }
317
+ else {
318
+ this.selectedRows.delete(rowId);
319
+ }
320
+ this.emitSelectionChange(checked ? 'select' : 'deselect', row);
321
+ }
322
+ selectSingleRow(row) {
323
+ const rowId = this.getRowId(row);
324
+ const wasSelected = this.selectedRows.has(rowId);
325
+ this.selectedRows.clear();
326
+ if (!wasSelected) {
327
+ this.selectedRows.add(rowId);
328
+ this.emitSelectionChange('select', row);
329
+ }
330
+ else {
331
+ this.emitSelectionChange('deselect', row);
332
+ }
333
+ }
334
+ emitSelectionChange(action, changedRow) {
335
+ const selected = this.props.data.filter(row => this.isRowSelected(row));
336
+ this.selectionChange.emit({
337
+ selected,
338
+ changedRow,
339
+ action,
340
+ });
341
+ }
342
+ goToPage(page) {
343
+ if (!this.props.pagination)
344
+ return;
345
+ const previousPage = this.props.pagination.page;
346
+ const maxPage = this.totalPages - 1;
347
+ const newPage = Math.max(0, Math.min(page, maxPage));
348
+ this.pageChange.emit({
349
+ page: newPage,
350
+ pageSize: this.props.pagination.pageSize,
351
+ previousPage,
352
+ });
353
+ if (this.props.clientPagination) {
354
+ this.props.pagination.page = newPage;
355
+ this.updateDisplayedData();
356
+ }
357
+ }
358
+ onPageSizeChange(event) {
359
+ if (!this.props.pagination)
360
+ return;
361
+ const newPageSize = event.detail.value;
362
+ const previousPage = this.props.pagination.page;
363
+ // Recalculate page to keep first visible item
364
+ const firstItem = previousPage * this.props.pagination.pageSize;
365
+ const newPage = Math.floor(firstItem / newPageSize);
366
+ this.pageChange.emit({
367
+ page: newPage,
368
+ pageSize: newPageSize,
369
+ previousPage,
370
+ });
371
+ if (this.props.clientPagination) {
372
+ this.props.pagination.pageSize = newPageSize;
373
+ this.props.pagination.page = newPage;
374
+ this.updateDisplayedData();
375
+ }
376
+ }
377
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
378
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DataTableComponent, isStandalone: true, selector: "val-data-table", inputs: { props: "props" }, outputs: { rowClick: "rowClick", selectionChange: "selectionChange", sortChange: "sortChange", pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: `
379
+ <div
380
+ class="data-table-container"
381
+ [class]="props.cssClass"
382
+ [class.size-small]="props.size === 'small'"
383
+ [class.size-medium]="props.size === 'medium' || !props.size"
384
+ [class.size-large]="props.size === 'large'"
385
+ [class.bordered]="props.bordered"
386
+ [class.striped]="props.striped"
387
+ [class.hoverable]="props.hoverable !== false"
388
+ [class.sticky-header]="props.stickyHeader"
389
+ [class.responsive-cards]="props.responsiveMode === 'cards'"
390
+ [class.elevation-none]="props.elevation === 'none'"
391
+ [class.elevation-low]="props.elevation === 'low'"
392
+ [class.elevation-high]="props.elevation === 'high'"
393
+ [class.header-gradient]="props.headerGradient"
394
+ [class.checkbox-circular]="props.checkboxStyle === 'circular'"
395
+ [class.row-highlight-border]="props.rowHighlightStyle === 'border-left'"
396
+ [class.row-highlight-both]="props.rowHighlightStyle === 'both'"
397
+ [style.--max-height]="props.maxHeight"
398
+ >
399
+ <!-- Toolbar slot -->
400
+ <div class="table-toolbar" #toolbarContainer>
401
+ <ng-content select="[toolbar]"></ng-content>
402
+ </div>
403
+
404
+ <!-- Loading overlay -->
405
+ @if (props.loadingState?.loading) {
406
+ <div class="loading-overlay">
407
+ <ion-spinner name="crescent"></ion-spinner>
408
+ @if (props.loadingState?.message) {
409
+ <span class="loading-message">{{ props.loadingState.message }}</span>
410
+ }
411
+ </div>
412
+ }
413
+
414
+ <div class="table-wrapper" [class.is-loading]="props.loadingState?.loading">
415
+ <table
416
+ role="grid"
417
+ [attr.aria-label]="props.ariaLabel"
418
+ >
419
+ @if (props.caption) {
420
+ <caption class="sr-only">{{ props.caption }}</caption>
421
+ }
422
+
423
+ <thead>
424
+ <tr>
425
+ <!-- Selection column -->
426
+ @if (props.showSelectionColumn && props.selection?.mode === 'multiple') {
427
+ <th class="selection-cell">
428
+ <ion-checkbox
429
+ [checked]="isAllSelected"
430
+ [indeterminate]="isIndeterminate"
431
+ (ionChange)="toggleSelectAll($event)"
432
+ ></ion-checkbox>
433
+ </th>
434
+ }
435
+ @if (props.showSelectionColumn && props.selection?.mode === 'single') {
436
+ <th class="selection-cell"></th>
437
+ }
438
+
439
+ <!-- Row number column -->
440
+ @if (props.showRowNumbers) {
441
+ <th class="row-number-cell">#</th>
442
+ }
443
+
444
+ <!-- Data columns -->
445
+ @for (column of visibleColumns; track column.key) {
446
+ <th
447
+ [class]="getColumnClass(column)"
448
+ [style.width]="column.width"
449
+ [style.min-width]="column.minWidth"
450
+ [style.max-width]="column.maxWidth"
451
+ [class.sortable]="column.sortable"
452
+ [class.sorted]="currentSort?.column === column.key"
453
+ (click)="column.sortable ? onSort(column) : null"
454
+ [attr.aria-sort]="getAriaSort(column)"
455
+ >
456
+ @if (column.headerTemplate) {
457
+ <ng-container *ngTemplateOutlet="column.headerTemplate; context: { column }"></ng-container>
458
+ } @else {
459
+ <span class="header-content">
460
+ {{ column.label }}
461
+ @if (column.sortable) {
462
+ <span class="sort-icons">
463
+ <ion-icon
464
+ name="chevron-up-outline"
465
+ [class.active]="currentSort?.column === column.key && currentSort?.direction === 'asc'"
466
+ ></ion-icon>
467
+ <ion-icon
468
+ name="chevron-down-outline"
469
+ [class.active]="currentSort?.column === column.key && currentSort?.direction === 'desc'"
470
+ ></ion-icon>
471
+ </span>
472
+ }
473
+ </span>
474
+ }
475
+ </th>
476
+ }
477
+
478
+ <!-- Actions column -->
479
+ @if (props.actionsTemplate) {
480
+ <th class="actions-cell" [style.width]="props.actionsWidth || '100px'">
481
+ {{ getActionsLabel() }}
482
+ </th>
483
+ }
484
+ </tr>
485
+ </thead>
486
+
487
+ <tbody>
488
+ @if (displayedData.length === 0 && !props.loadingState?.loading) {
489
+ <tr class="empty-row">
490
+ <td [attr.colspan]="totalColumns">
491
+ <div class="empty-state">
492
+ @if (emptyState.template) {
493
+ <ng-container *ngTemplateOutlet="emptyState.template"></ng-container>
494
+ } @else {
495
+ @if (emptyState.icon) {
496
+ <ion-icon [name]="emptyState.icon" class="empty-icon"></ion-icon>
497
+ }
498
+ @if (emptyState.title) {
499
+ <h4 class="empty-title">{{ emptyState.title }}</h4>
500
+ }
501
+ @if (emptyState.description) {
502
+ <p class="empty-description">{{ emptyState.description }}</p>
503
+ }
504
+ }
505
+ </div>
506
+ </td>
507
+ </tr>
508
+ } @else {
509
+ @for (row of displayedData; track trackByFn(row); let i = $index) {
510
+ <tr
511
+ [class.selected]="isRowSelected(row)"
512
+ [class.clickable]="props.rowClickable"
513
+ (click)="onRowClick(row, i, $event)"
514
+ >
515
+ <!-- Selection cell -->
516
+ @if (props.showSelectionColumn) {
517
+ <td class="selection-cell">
518
+ @if (props.selection?.mode === 'multiple') {
519
+ <ion-checkbox
520
+ [checked]="isRowSelected(row)"
521
+ (ionChange)="toggleRowSelection(row, $event)"
522
+ (click)="$event.stopPropagation()"
523
+ ></ion-checkbox>
524
+ } @else if (props.selection?.mode === 'single') {
525
+ <input
526
+ type="radio"
527
+ [checked]="isRowSelected(row)"
528
+ (click)="selectSingleRow(row); $event.stopPropagation()"
529
+ />
530
+ }
531
+ </td>
532
+ }
533
+
534
+ <!-- Row number -->
535
+ @if (props.showRowNumbers) {
536
+ <td class="row-number-cell">{{ getRowNumber(i) }}</td>
537
+ }
538
+
539
+ <!-- Data cells -->
540
+ @for (column of visibleColumns; track column.key) {
541
+ <td
542
+ [class]="getColumnClass(column)"
543
+ [style.text-align]="column.align"
544
+ >
545
+ @if (column.cellTemplate) {
546
+ <ng-container *ngTemplateOutlet="column.cellTemplate; context: { row, column, value: getCellValue(row, column) }"></ng-container>
547
+ } @else {
548
+ {{ getFormattedValue(row, column) }}
549
+ }
550
+ </td>
551
+ }
552
+
553
+ <!-- Actions cell -->
554
+ @if (props.actionsTemplate) {
555
+ <td class="actions-cell">
556
+ <ng-container *ngTemplateOutlet="props.actionsTemplate; context: { row, index: i }"></ng-container>
557
+ </td>
558
+ }
559
+ </tr>
560
+ }
561
+ }
562
+ </tbody>
563
+ </table>
564
+ </div>
565
+
566
+ <!-- Card view (responsive mobile) -->
567
+ @if (props.responsiveMode === 'cards') {
568
+ <div class="card-list">
569
+ @if (displayedData.length === 0 && !props.loadingState?.loading) {
570
+ <div class="empty-state">
571
+ @if (emptyState.icon) {
572
+ <ion-icon [name]="emptyState.icon" class="empty-icon"></ion-icon>
573
+ }
574
+ @if (emptyState.title) {
575
+ <h4 class="empty-title">{{ emptyState.title }}</h4>
576
+ }
577
+ @if (emptyState.description) {
578
+ <p class="empty-description">{{ emptyState.description }}</p>
579
+ }
580
+ </div>
581
+ } @else {
582
+ @for (row of displayedData; track trackByFn(row); let i = $index) {
583
+ @if (props.mobileCardTemplate) {
584
+ <ng-container *ngTemplateOutlet="props.mobileCardTemplate; context: { row, index: i, columns: visibleColumns }"></ng-container>
585
+ } @else {
586
+ <div
587
+ class="data-card"
588
+ [class.selected]="isRowSelected(row)"
589
+ [class.clickable]="props.rowClickable"
590
+ (click)="onRowClick(row, i, $event)"
591
+ >
592
+ <!-- Card header with selection -->
593
+ @if (props.showSelectionColumn) {
594
+ <div class="card-header">
595
+ <div class="card-selection">
596
+ @if (props.selection?.mode === 'multiple') {
597
+ <ion-checkbox
598
+ [checked]="isRowSelected(row)"
599
+ (ionChange)="toggleRowSelection(row, $event)"
600
+ (click)="$event.stopPropagation()"
601
+ ></ion-checkbox>
602
+ } @else if (props.selection?.mode === 'single') {
603
+ <input
604
+ type="radio"
605
+ [checked]="isRowSelected(row)"
606
+ (click)="selectSingleRow(row); $event.stopPropagation()"
607
+ />
608
+ }
609
+ </div>
610
+ @if (props.showRowNumbers) {
611
+ <span class="row-number">{{ getRowNumber(i) }}</span>
612
+ }
613
+ </div>
614
+ }
615
+
616
+ <!-- Card body with fields -->
617
+ <div class="card-body">
618
+ @for (column of visibleColumns; track column.key) {
619
+ <div class="card-field">
620
+ <span class="card-field__label">{{ column.label }}</span>
621
+ <span class="card-field__value">
622
+ @if (column.cellTemplate) {
623
+ <ng-container *ngTemplateOutlet="column.cellTemplate; context: { row, column, value: getCellValue(row, column) }"></ng-container>
624
+ } @else {
625
+ {{ getFormattedValue(row, column) }}
626
+ }
627
+ </span>
628
+ </div>
629
+ }
630
+ </div>
631
+
632
+ <!-- Card actions -->
633
+ @if (props.actionsTemplate) {
634
+ <div class="card-actions">
635
+ <ng-container *ngTemplateOutlet="props.actionsTemplate; context: { row, index: i }"></ng-container>
636
+ </div>
637
+ }
638
+ </div>
639
+ }
640
+ }
641
+ }
642
+ </div>
643
+ }
644
+
645
+ <!-- Pagination -->
646
+ @if (props.showPagination && props.pagination) {
647
+ <div class="pagination-container">
648
+ <div class="pagination-info">
649
+ <span>
650
+ {{ getPaginationInfoText() }}
651
+ </span>
652
+
653
+ @if (pageSizeOptions.length > 1) {
654
+ <ion-select
655
+ [value]="props.pagination.pageSize"
656
+ (ionChange)="onPageSizeChange($event)"
657
+ interface="popover"
658
+ class="page-size-select"
659
+ >
660
+ @for (size of pageSizeOptions; track size) {
661
+ <ion-select-option [value]="size">{{ getPerPageText(size) }}</ion-select-option>
662
+ }
663
+ </ion-select>
664
+ }
665
+ </div>
666
+
667
+ <div class="pagination-controls">
668
+ <ion-button
669
+ fill="clear"
670
+ size="small"
671
+ [disabled]="props.pagination.page === 0"
672
+ (click)="goToPage(0)"
673
+ [attr.aria-label]="getFirstPageLabel()"
674
+ >
675
+ <ion-icon slot="icon-only" name="chevron-back-outline"></ion-icon>
676
+ <ion-icon slot="icon-only" name="chevron-back-outline" style="margin-left: -12px"></ion-icon>
677
+ </ion-button>
678
+
679
+ <ion-button
680
+ fill="clear"
681
+ size="small"
682
+ [disabled]="props.pagination.page === 0"
683
+ (click)="goToPage(props.pagination.page - 1)"
684
+ [attr.aria-label]="getPreviousPageLabel()"
685
+ >
686
+ <ion-icon slot="icon-only" name="chevron-back-outline"></ion-icon>
687
+ </ion-button>
688
+
689
+ <span class="page-indicator">
690
+ {{ props.pagination.page + 1 }} / {{ totalPages }}
691
+ </span>
692
+
693
+ <ion-button
694
+ fill="clear"
695
+ size="small"
696
+ [disabled]="props.pagination.page >= totalPages - 1"
697
+ (click)="goToPage(props.pagination.page + 1)"
698
+ [attr.aria-label]="getNextPageLabel()"
699
+ >
700
+ <ion-icon slot="icon-only" name="chevron-forward-outline"></ion-icon>
701
+ </ion-button>
702
+
703
+ <ion-button
704
+ fill="clear"
705
+ size="small"
706
+ [disabled]="props.pagination.page >= totalPages - 1"
707
+ (click)="goToPage(totalPages - 1)"
708
+ [attr.aria-label]="getLastPageLabel()"
709
+ >
710
+ <ion-icon slot="icon-only" name="chevron-forward-outline"></ion-icon>
711
+ <ion-icon slot="icon-only" name="chevron-forward-outline" style="margin-left: -12px"></ion-icon>
712
+ </ion-button>
713
+ </div>
714
+ </div>
715
+ }
716
+ </div>
717
+ `, isInline: true, styles: [":host{display:block}.data-table-container{--dt-elevation-none: none;--dt-elevation-low: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--dt-elevation-medium: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--dt-elevation-high: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--dt-primary: var(--ion-color-primary, #4f46e5);--dt-primary-rgb: var(--ion-color-primary-rgb, 79, 70, 229);--dt-surface: var(--ion-background-color, #ffffff);--dt-surface-variant: #f8fafc;--dt-border: #e2e8f0;--dt-text-primary: #1e293b;--dt-text-secondary: #64748b;--dt-text-muted: #94a3b8;--dt-gradient-start: #6366f1;--dt-gradient-end: #8b5cf6;--dt-border-radius: 16px;--dt-cell-padding-x: 16px;--dt-cell-padding-y: 14px;--dt-header-padding-y: 12px}.data-table-container{position:relative;background:var(--dt-surface);border-radius:var(--dt-border-radius);box-shadow:var(--dt-elevation-medium);border:1px solid var(--dt-border);overflow:hidden}.data-table-container.elevation-none{box-shadow:var(--dt-elevation-none)}.data-table-container.elevation-low{box-shadow:var(--dt-elevation-low)}.data-table-container.elevation-high{box-shadow:var(--dt-elevation-high)}.data-table-container.header-gradient:before{content:\"\";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--dt-gradient-start),var(--dt-gradient-end));border-radius:var(--dt-border-radius) var(--dt-border-radius) 0 0;z-index:2}.loading-overlay{position:absolute;inset:0;background:#ffffffe6;backdrop-filter:blur(2px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:10}.loading-overlay ion-spinner{--color: var(--dt-primary);width:32px;height:32px}.loading-message{font-size:14px;font-weight:500;color:var(--dt-text-secondary)}.table-wrapper{overflow-x:auto;max-height:var(--max-height)}.table-wrapper.is-loading{opacity:.5;pointer-events:none}.table-wrapper::-webkit-scrollbar{height:8px;width:8px}.table-wrapper::-webkit-scrollbar-track{background:var(--dt-surface-variant);border-radius:4px}.table-wrapper::-webkit-scrollbar-thumb{background:var(--dt-border);border-radius:4px}.table-wrapper::-webkit-scrollbar-thumb:hover{background:var(--dt-text-muted)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:var(--dt-cell-padding-y) var(--dt-cell-padding-x);text-align:left;vertical-align:middle}thead{background:var(--dt-surface-variant)}thead th{font-weight:600;font-size:13px;color:var(--dt-text-secondary);white-space:nowrap;position:relative;border-bottom:1px solid var(--dt-border);padding:var(--dt-header-padding-y) var(--dt-cell-padding-x);transition:all .2s ease}thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}thead th.sortable:hover{background:#00000008;color:var(--dt-text-primary)}thead th.sorted{color:var(--dt-primary);background:rgba(var(--dt-primary-rgb),.04)}.header-content{display:flex;align-items:center;gap:8px}.sort-icons{display:flex;flex-direction:column;gap:0;opacity:.4;transition:opacity .2s ease}.sortable:hover .sort-icons{opacity:.7}.sorted .sort-icons{opacity:1}.sort-icons ion-icon{font-size:12px;color:var(--dt-text-muted);margin:-3px 0;transition:all .2s ease}.sort-icons ion-icon.active{color:var(--dt-primary);transform:scale(1.2)}tbody tr{border-bottom:1px solid var(--dt-border)}tbody tr:last-child{border-bottom:none}tbody tr.clickable{cursor:pointer}tbody tr.selected{background:rgba(var(--dt-primary-rgb),.06)}tbody td{color:var(--dt-text-primary);font-size:14px}.hoverable tbody tr:hover:not(.empty-row){background:var(--dt-surface-variant)}.hoverable tbody tr:hover:not(.empty-row).selected{background:rgba(var(--dt-primary-rgb),.08)}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}.selection-cell{width:52px;min-width:52px;max-width:52px;text-align:center;padding:8px 12px;box-sizing:border-box}.selection-cell ion-checkbox{--size: 20px;--border-radius: 50%;--border-width: 2px;--border-color: var(--dt-border);--border-color-checked: var(--dt-primary);--background: transparent;--background-checked: var(--dt-primary);--checkmark-color: white;--checkmark-width: 2px;margin:0;display:block}.selection-cell ion-checkbox::part(container){border-radius:50%}.selection-cell input[type=radio]{width:20px;height:20px;cursor:pointer;accent-color:var(--dt-primary);margin:0;display:block}.checkbox-circular .selection-cell ion-checkbox{--border-radius: 50%}.checkbox-circular .selection-cell ion-checkbox::part(container){border-radius:50%}.row-number-cell{width:60px;text-align:center;color:var(--dt-text-muted);font-size:12px;font-weight:500}.actions-cell{text-align:center;white-space:nowrap}.sticky-start{position:sticky;left:0;background:inherit;z-index:1;box-shadow:2px 0 4px #0000000d}.sticky-end{position:sticky;right:0;background:inherit;z-index:1;box-shadow:-2px 0 4px #0000000d}.empty-row td{padding:64px 16px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--dt-text-secondary)}.empty-icon{font-size:56px;margin-bottom:20px;opacity:.4;color:var(--dt-text-muted)}.empty-title{font-size:18px;font-weight:600;margin:0 0 8px;color:var(--dt-text-primary)}.empty-description{font-size:14px;margin:0;max-width:320px;color:var(--dt-text-secondary);line-height:1.5}.pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-top:1px solid var(--dt-border);background:var(--dt-surface);flex-wrap:wrap;gap:16px}.pagination-info{display:flex;align-items:center;gap:20px;font-size:14px;color:var(--dt-text-secondary)}.pagination-info span{font-weight:500}.page-size-select{--padding-start: 12px;--padding-end: 12px;font-size:14px;min-width:140px;--background: var(--dt-surface-variant);--border-radius: 8px}.pagination-controls{display:flex;align-items:center;gap:8px}.pagination-controls ion-button{--padding-start: 10px;--padding-end: 10px;--border-radius: 8px;--background: var(--dt-surface-variant);--background-hover: var(--dt-border);--color: var(--dt-text-secondary);--color-hover: var(--dt-text-primary);margin:0;height:36px;min-width:36px}.pagination-controls ion-button:disabled{opacity:.4}.pagination-controls ion-button ion-icon{font-size:16px}.page-indicator{padding:0 16px;font-size:14px;color:var(--dt-text-primary);font-weight:600;background:var(--dt-surface-variant);border-radius:8px;height:36px;display:flex;align-items:center;min-width:80px;justify-content:center}.bordered th,.bordered td{border:1px solid var(--dt-border)}.striped tbody tr:nth-child(2n){background:var(--dt-surface-variant)}.striped tbody tr:nth-child(2n).selected{background:rgba(var(--dt-primary-rgb),.08)}.sticky-header .table-wrapper{overflow-y:auto}.sticky-header thead{position:sticky;top:0;z-index:5;box-shadow:0 1px 0 var(--dt-border)}.size-small{--dt-cell-padding-x: 12px;--dt-cell-padding-y: 10px;--dt-header-padding-y: 10px}.size-small th,.size-small td{font-size:13px}.size-small thead th{font-size:12px}.size-small .selection-cell{width:44px;padding:6px 8px}.size-small .selection-cell ion-checkbox{--size: 18px}.size-small .row-number-cell{width:48px;font-size:11px}.size-small .pagination-container{padding:12px 16px}.size-small .pagination-info,.size-small .page-indicator{font-size:13px}.size-small .pagination-controls ion-button{height:32px;min-width:32px}.size-small .page-indicator{height:32px;min-width:70px}.size-large{--dt-cell-padding-x: 20px;--dt-cell-padding-y: 18px;--dt-header-padding-y: 16px}.size-large th,.size-large td{font-size:15px}.size-large thead th{font-size:14px}.size-large .selection-cell{width:60px;padding:12px 16px}.size-large .selection-cell ion-checkbox{--size: 24px}.size-large .row-number-cell{width:72px;font-size:14px}.size-large .pagination-container{padding:20px 24px}.size-large .pagination-info,.size-large .page-indicator{font-size:15px}.size-large .pagination-controls ion-button{height:40px;min-width:40px}.size-large .page-indicator{height:40px;min-width:90px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 768px){.data-table-container{--dt-border-radius: 12px}.pagination-container{flex-direction:column;align-items:stretch;gap:12px}.pagination-info{justify-content:space-between}.pagination-controls{justify-content:center}}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid var(--dt-border);background:var(--dt-surface);flex-wrap:wrap}.table-toolbar:empty{display:none}@media (max-width: 576px){.table-toolbar{flex-direction:column;align-items:stretch;padding:16px}}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9999px;font-size:12px;font-weight:600;white-space:nowrap;letter-spacing:.025em}.status-badge--success{background:#dcfce7;color:#15803d}.status-badge--warning{background:#fef3c7;color:#b45309}.status-badge--danger{background:#fee2e2;color:#dc2626}.status-badge--primary{background:#e0e7ff;color:#4338ca}.status-badge--secondary{background:#f1f5f9;color:#475569}.status-badge--medium{background:#f1f5f9;color:#64748b}.status-badge--tertiary{background:#f3e8ff;color:#7c3aed}.status-badge--filled.status-badge--success{background:#22c55e;color:#fff}.status-badge--filled.status-badge--warning{background:#f59e0b;color:#fff}.status-badge--filled.status-badge--danger{background:#ef4444;color:#fff}.status-badge--filled.status-badge--primary{background:var(--dt-primary);color:#fff}.status-badge--outlined{background:transparent;border:1.5px solid currentColor}.status-badge--outlined.status-badge--success{color:#16a34a}.status-badge--outlined.status-badge--warning{color:#d97706}.status-badge--outlined.status-badge--danger{color:#dc2626}.status-badge--outlined.status-badge--primary{color:var(--dt-primary)}.action-buttons{display:flex;gap:6px;justify-content:center}.action-buttons ion-button{--padding-start: 8px;--padding-end: 8px;--border-radius: 8px;margin:0}.action-buttons ion-button ion-icon{font-size:18px}.card-list{display:none;padding:12px;gap:12px}.data-card{background:var(--dt-surface);border:1px solid var(--dt-border);border-radius:12px;padding:16px;margin-bottom:12px;transition:all .2s ease}.data-card.selected{border-color:var(--dt-primary);background:rgba(var(--dt-primary-rgb),.04);box-shadow:0 0 0 1px var(--dt-primary)}.data-card.clickable{cursor:pointer}.data-card.clickable:hover{box-shadow:var(--dt-elevation-medium);transform:translateY(-2px)}.data-card.clickable:active{transform:translateY(0)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--dt-border)}.card-selection{display:flex;align-items:center}.card-body{display:flex;flex-direction:column;gap:12px}.card-field{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.card-field__label{font-size:12px;font-weight:600;color:var(--dt-text-muted);flex-shrink:0}.card-field__value{font-size:14px;color:var(--dt-text-primary);text-align:right;word-break:break-word;font-weight:500}.card-actions{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid var(--dt-border)}@media (max-width: 768px){.responsive-cards .table-wrapper{display:none}.responsive-cards .card-list{display:block}}@media (prefers-color-scheme: dark){.data-table-container{--dt-surface: #1e293b;--dt-surface-variant: #334155;--dt-border: #475569;--dt-text-primary: #f1f5f9;--dt-text-secondary: #94a3b8;--dt-text-muted: #64748b}.loading-overlay{background:#1e293be6}.status-badge--success{background:#22c55e33;color:#4ade80}.status-badge--warning{background:#f59e0b33;color:#fbbf24}.status-badge--danger{background:#ef444433;color:#f87171}.status-badge--primary{background:#6366f133;color:#a5b4fc}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
718
+ }
719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableComponent, decorators: [{
720
+ type: Component,
721
+ args: [{ selector: 'val-data-table', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
722
+ CommonModule,
723
+ FormsModule,
724
+ IonButton,
725
+ IonIcon,
726
+ IonCheckbox,
727
+ IonSpinner,
728
+ IonSelect,
729
+ IonSelectOption,
730
+ ], template: `
731
+ <div
732
+ class="data-table-container"
733
+ [class]="props.cssClass"
734
+ [class.size-small]="props.size === 'small'"
735
+ [class.size-medium]="props.size === 'medium' || !props.size"
736
+ [class.size-large]="props.size === 'large'"
737
+ [class.bordered]="props.bordered"
738
+ [class.striped]="props.striped"
739
+ [class.hoverable]="props.hoverable !== false"
740
+ [class.sticky-header]="props.stickyHeader"
741
+ [class.responsive-cards]="props.responsiveMode === 'cards'"
742
+ [class.elevation-none]="props.elevation === 'none'"
743
+ [class.elevation-low]="props.elevation === 'low'"
744
+ [class.elevation-high]="props.elevation === 'high'"
745
+ [class.header-gradient]="props.headerGradient"
746
+ [class.checkbox-circular]="props.checkboxStyle === 'circular'"
747
+ [class.row-highlight-border]="props.rowHighlightStyle === 'border-left'"
748
+ [class.row-highlight-both]="props.rowHighlightStyle === 'both'"
749
+ [style.--max-height]="props.maxHeight"
750
+ >
751
+ <!-- Toolbar slot -->
752
+ <div class="table-toolbar" #toolbarContainer>
753
+ <ng-content select="[toolbar]"></ng-content>
754
+ </div>
755
+
756
+ <!-- Loading overlay -->
757
+ @if (props.loadingState?.loading) {
758
+ <div class="loading-overlay">
759
+ <ion-spinner name="crescent"></ion-spinner>
760
+ @if (props.loadingState?.message) {
761
+ <span class="loading-message">{{ props.loadingState.message }}</span>
762
+ }
763
+ </div>
764
+ }
765
+
766
+ <div class="table-wrapper" [class.is-loading]="props.loadingState?.loading">
767
+ <table
768
+ role="grid"
769
+ [attr.aria-label]="props.ariaLabel"
770
+ >
771
+ @if (props.caption) {
772
+ <caption class="sr-only">{{ props.caption }}</caption>
773
+ }
774
+
775
+ <thead>
776
+ <tr>
777
+ <!-- Selection column -->
778
+ @if (props.showSelectionColumn && props.selection?.mode === 'multiple') {
779
+ <th class="selection-cell">
780
+ <ion-checkbox
781
+ [checked]="isAllSelected"
782
+ [indeterminate]="isIndeterminate"
783
+ (ionChange)="toggleSelectAll($event)"
784
+ ></ion-checkbox>
785
+ </th>
786
+ }
787
+ @if (props.showSelectionColumn && props.selection?.mode === 'single') {
788
+ <th class="selection-cell"></th>
789
+ }
790
+
791
+ <!-- Row number column -->
792
+ @if (props.showRowNumbers) {
793
+ <th class="row-number-cell">#</th>
794
+ }
795
+
796
+ <!-- Data columns -->
797
+ @for (column of visibleColumns; track column.key) {
798
+ <th
799
+ [class]="getColumnClass(column)"
800
+ [style.width]="column.width"
801
+ [style.min-width]="column.minWidth"
802
+ [style.max-width]="column.maxWidth"
803
+ [class.sortable]="column.sortable"
804
+ [class.sorted]="currentSort?.column === column.key"
805
+ (click)="column.sortable ? onSort(column) : null"
806
+ [attr.aria-sort]="getAriaSort(column)"
807
+ >
808
+ @if (column.headerTemplate) {
809
+ <ng-container *ngTemplateOutlet="column.headerTemplate; context: { column }"></ng-container>
810
+ } @else {
811
+ <span class="header-content">
812
+ {{ column.label }}
813
+ @if (column.sortable) {
814
+ <span class="sort-icons">
815
+ <ion-icon
816
+ name="chevron-up-outline"
817
+ [class.active]="currentSort?.column === column.key && currentSort?.direction === 'asc'"
818
+ ></ion-icon>
819
+ <ion-icon
820
+ name="chevron-down-outline"
821
+ [class.active]="currentSort?.column === column.key && currentSort?.direction === 'desc'"
822
+ ></ion-icon>
823
+ </span>
824
+ }
825
+ </span>
826
+ }
827
+ </th>
828
+ }
829
+
830
+ <!-- Actions column -->
831
+ @if (props.actionsTemplate) {
832
+ <th class="actions-cell" [style.width]="props.actionsWidth || '100px'">
833
+ {{ getActionsLabel() }}
834
+ </th>
835
+ }
836
+ </tr>
837
+ </thead>
838
+
839
+ <tbody>
840
+ @if (displayedData.length === 0 && !props.loadingState?.loading) {
841
+ <tr class="empty-row">
842
+ <td [attr.colspan]="totalColumns">
843
+ <div class="empty-state">
844
+ @if (emptyState.template) {
845
+ <ng-container *ngTemplateOutlet="emptyState.template"></ng-container>
846
+ } @else {
847
+ @if (emptyState.icon) {
848
+ <ion-icon [name]="emptyState.icon" class="empty-icon"></ion-icon>
849
+ }
850
+ @if (emptyState.title) {
851
+ <h4 class="empty-title">{{ emptyState.title }}</h4>
852
+ }
853
+ @if (emptyState.description) {
854
+ <p class="empty-description">{{ emptyState.description }}</p>
855
+ }
856
+ }
857
+ </div>
858
+ </td>
859
+ </tr>
860
+ } @else {
861
+ @for (row of displayedData; track trackByFn(row); let i = $index) {
862
+ <tr
863
+ [class.selected]="isRowSelected(row)"
864
+ [class.clickable]="props.rowClickable"
865
+ (click)="onRowClick(row, i, $event)"
866
+ >
867
+ <!-- Selection cell -->
868
+ @if (props.showSelectionColumn) {
869
+ <td class="selection-cell">
870
+ @if (props.selection?.mode === 'multiple') {
871
+ <ion-checkbox
872
+ [checked]="isRowSelected(row)"
873
+ (ionChange)="toggleRowSelection(row, $event)"
874
+ (click)="$event.stopPropagation()"
875
+ ></ion-checkbox>
876
+ } @else if (props.selection?.mode === 'single') {
877
+ <input
878
+ type="radio"
879
+ [checked]="isRowSelected(row)"
880
+ (click)="selectSingleRow(row); $event.stopPropagation()"
881
+ />
882
+ }
883
+ </td>
884
+ }
885
+
886
+ <!-- Row number -->
887
+ @if (props.showRowNumbers) {
888
+ <td class="row-number-cell">{{ getRowNumber(i) }}</td>
889
+ }
890
+
891
+ <!-- Data cells -->
892
+ @for (column of visibleColumns; track column.key) {
893
+ <td
894
+ [class]="getColumnClass(column)"
895
+ [style.text-align]="column.align"
896
+ >
897
+ @if (column.cellTemplate) {
898
+ <ng-container *ngTemplateOutlet="column.cellTemplate; context: { row, column, value: getCellValue(row, column) }"></ng-container>
899
+ } @else {
900
+ {{ getFormattedValue(row, column) }}
901
+ }
902
+ </td>
903
+ }
904
+
905
+ <!-- Actions cell -->
906
+ @if (props.actionsTemplate) {
907
+ <td class="actions-cell">
908
+ <ng-container *ngTemplateOutlet="props.actionsTemplate; context: { row, index: i }"></ng-container>
909
+ </td>
910
+ }
911
+ </tr>
912
+ }
913
+ }
914
+ </tbody>
915
+ </table>
916
+ </div>
917
+
918
+ <!-- Card view (responsive mobile) -->
919
+ @if (props.responsiveMode === 'cards') {
920
+ <div class="card-list">
921
+ @if (displayedData.length === 0 && !props.loadingState?.loading) {
922
+ <div class="empty-state">
923
+ @if (emptyState.icon) {
924
+ <ion-icon [name]="emptyState.icon" class="empty-icon"></ion-icon>
925
+ }
926
+ @if (emptyState.title) {
927
+ <h4 class="empty-title">{{ emptyState.title }}</h4>
928
+ }
929
+ @if (emptyState.description) {
930
+ <p class="empty-description">{{ emptyState.description }}</p>
931
+ }
932
+ </div>
933
+ } @else {
934
+ @for (row of displayedData; track trackByFn(row); let i = $index) {
935
+ @if (props.mobileCardTemplate) {
936
+ <ng-container *ngTemplateOutlet="props.mobileCardTemplate; context: { row, index: i, columns: visibleColumns }"></ng-container>
937
+ } @else {
938
+ <div
939
+ class="data-card"
940
+ [class.selected]="isRowSelected(row)"
941
+ [class.clickable]="props.rowClickable"
942
+ (click)="onRowClick(row, i, $event)"
943
+ >
944
+ <!-- Card header with selection -->
945
+ @if (props.showSelectionColumn) {
946
+ <div class="card-header">
947
+ <div class="card-selection">
948
+ @if (props.selection?.mode === 'multiple') {
949
+ <ion-checkbox
950
+ [checked]="isRowSelected(row)"
951
+ (ionChange)="toggleRowSelection(row, $event)"
952
+ (click)="$event.stopPropagation()"
953
+ ></ion-checkbox>
954
+ } @else if (props.selection?.mode === 'single') {
955
+ <input
956
+ type="radio"
957
+ [checked]="isRowSelected(row)"
958
+ (click)="selectSingleRow(row); $event.stopPropagation()"
959
+ />
960
+ }
961
+ </div>
962
+ @if (props.showRowNumbers) {
963
+ <span class="row-number">{{ getRowNumber(i) }}</span>
964
+ }
965
+ </div>
966
+ }
967
+
968
+ <!-- Card body with fields -->
969
+ <div class="card-body">
970
+ @for (column of visibleColumns; track column.key) {
971
+ <div class="card-field">
972
+ <span class="card-field__label">{{ column.label }}</span>
973
+ <span class="card-field__value">
974
+ @if (column.cellTemplate) {
975
+ <ng-container *ngTemplateOutlet="column.cellTemplate; context: { row, column, value: getCellValue(row, column) }"></ng-container>
976
+ } @else {
977
+ {{ getFormattedValue(row, column) }}
978
+ }
979
+ </span>
980
+ </div>
981
+ }
982
+ </div>
983
+
984
+ <!-- Card actions -->
985
+ @if (props.actionsTemplate) {
986
+ <div class="card-actions">
987
+ <ng-container *ngTemplateOutlet="props.actionsTemplate; context: { row, index: i }"></ng-container>
988
+ </div>
989
+ }
990
+ </div>
991
+ }
992
+ }
993
+ }
994
+ </div>
995
+ }
996
+
997
+ <!-- Pagination -->
998
+ @if (props.showPagination && props.pagination) {
999
+ <div class="pagination-container">
1000
+ <div class="pagination-info">
1001
+ <span>
1002
+ {{ getPaginationInfoText() }}
1003
+ </span>
1004
+
1005
+ @if (pageSizeOptions.length > 1) {
1006
+ <ion-select
1007
+ [value]="props.pagination.pageSize"
1008
+ (ionChange)="onPageSizeChange($event)"
1009
+ interface="popover"
1010
+ class="page-size-select"
1011
+ >
1012
+ @for (size of pageSizeOptions; track size) {
1013
+ <ion-select-option [value]="size">{{ getPerPageText(size) }}</ion-select-option>
1014
+ }
1015
+ </ion-select>
1016
+ }
1017
+ </div>
1018
+
1019
+ <div class="pagination-controls">
1020
+ <ion-button
1021
+ fill="clear"
1022
+ size="small"
1023
+ [disabled]="props.pagination.page === 0"
1024
+ (click)="goToPage(0)"
1025
+ [attr.aria-label]="getFirstPageLabel()"
1026
+ >
1027
+ <ion-icon slot="icon-only" name="chevron-back-outline"></ion-icon>
1028
+ <ion-icon slot="icon-only" name="chevron-back-outline" style="margin-left: -12px"></ion-icon>
1029
+ </ion-button>
1030
+
1031
+ <ion-button
1032
+ fill="clear"
1033
+ size="small"
1034
+ [disabled]="props.pagination.page === 0"
1035
+ (click)="goToPage(props.pagination.page - 1)"
1036
+ [attr.aria-label]="getPreviousPageLabel()"
1037
+ >
1038
+ <ion-icon slot="icon-only" name="chevron-back-outline"></ion-icon>
1039
+ </ion-button>
1040
+
1041
+ <span class="page-indicator">
1042
+ {{ props.pagination.page + 1 }} / {{ totalPages }}
1043
+ </span>
1044
+
1045
+ <ion-button
1046
+ fill="clear"
1047
+ size="small"
1048
+ [disabled]="props.pagination.page >= totalPages - 1"
1049
+ (click)="goToPage(props.pagination.page + 1)"
1050
+ [attr.aria-label]="getNextPageLabel()"
1051
+ >
1052
+ <ion-icon slot="icon-only" name="chevron-forward-outline"></ion-icon>
1053
+ </ion-button>
1054
+
1055
+ <ion-button
1056
+ fill="clear"
1057
+ size="small"
1058
+ [disabled]="props.pagination.page >= totalPages - 1"
1059
+ (click)="goToPage(totalPages - 1)"
1060
+ [attr.aria-label]="getLastPageLabel()"
1061
+ >
1062
+ <ion-icon slot="icon-only" name="chevron-forward-outline"></ion-icon>
1063
+ <ion-icon slot="icon-only" name="chevron-forward-outline" style="margin-left: -12px"></ion-icon>
1064
+ </ion-button>
1065
+ </div>
1066
+ </div>
1067
+ }
1068
+ </div>
1069
+ `, styles: [":host{display:block}.data-table-container{--dt-elevation-none: none;--dt-elevation-low: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--dt-elevation-medium: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--dt-elevation-high: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--dt-primary: var(--ion-color-primary, #4f46e5);--dt-primary-rgb: var(--ion-color-primary-rgb, 79, 70, 229);--dt-surface: var(--ion-background-color, #ffffff);--dt-surface-variant: #f8fafc;--dt-border: #e2e8f0;--dt-text-primary: #1e293b;--dt-text-secondary: #64748b;--dt-text-muted: #94a3b8;--dt-gradient-start: #6366f1;--dt-gradient-end: #8b5cf6;--dt-border-radius: 16px;--dt-cell-padding-x: 16px;--dt-cell-padding-y: 14px;--dt-header-padding-y: 12px}.data-table-container{position:relative;background:var(--dt-surface);border-radius:var(--dt-border-radius);box-shadow:var(--dt-elevation-medium);border:1px solid var(--dt-border);overflow:hidden}.data-table-container.elevation-none{box-shadow:var(--dt-elevation-none)}.data-table-container.elevation-low{box-shadow:var(--dt-elevation-low)}.data-table-container.elevation-high{box-shadow:var(--dt-elevation-high)}.data-table-container.header-gradient:before{content:\"\";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--dt-gradient-start),var(--dt-gradient-end));border-radius:var(--dt-border-radius) var(--dt-border-radius) 0 0;z-index:2}.loading-overlay{position:absolute;inset:0;background:#ffffffe6;backdrop-filter:blur(2px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:10}.loading-overlay ion-spinner{--color: var(--dt-primary);width:32px;height:32px}.loading-message{font-size:14px;font-weight:500;color:var(--dt-text-secondary)}.table-wrapper{overflow-x:auto;max-height:var(--max-height)}.table-wrapper.is-loading{opacity:.5;pointer-events:none}.table-wrapper::-webkit-scrollbar{height:8px;width:8px}.table-wrapper::-webkit-scrollbar-track{background:var(--dt-surface-variant);border-radius:4px}.table-wrapper::-webkit-scrollbar-thumb{background:var(--dt-border);border-radius:4px}.table-wrapper::-webkit-scrollbar-thumb:hover{background:var(--dt-text-muted)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:var(--dt-cell-padding-y) var(--dt-cell-padding-x);text-align:left;vertical-align:middle}thead{background:var(--dt-surface-variant)}thead th{font-weight:600;font-size:13px;color:var(--dt-text-secondary);white-space:nowrap;position:relative;border-bottom:1px solid var(--dt-border);padding:var(--dt-header-padding-y) var(--dt-cell-padding-x);transition:all .2s ease}thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}thead th.sortable:hover{background:#00000008;color:var(--dt-text-primary)}thead th.sorted{color:var(--dt-primary);background:rgba(var(--dt-primary-rgb),.04)}.header-content{display:flex;align-items:center;gap:8px}.sort-icons{display:flex;flex-direction:column;gap:0;opacity:.4;transition:opacity .2s ease}.sortable:hover .sort-icons{opacity:.7}.sorted .sort-icons{opacity:1}.sort-icons ion-icon{font-size:12px;color:var(--dt-text-muted);margin:-3px 0;transition:all .2s ease}.sort-icons ion-icon.active{color:var(--dt-primary);transform:scale(1.2)}tbody tr{border-bottom:1px solid var(--dt-border)}tbody tr:last-child{border-bottom:none}tbody tr.clickable{cursor:pointer}tbody tr.selected{background:rgba(var(--dt-primary-rgb),.06)}tbody td{color:var(--dt-text-primary);font-size:14px}.hoverable tbody tr:hover:not(.empty-row){background:var(--dt-surface-variant)}.hoverable tbody tr:hover:not(.empty-row).selected{background:rgba(var(--dt-primary-rgb),.08)}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}.selection-cell{width:52px;min-width:52px;max-width:52px;text-align:center;padding:8px 12px;box-sizing:border-box}.selection-cell ion-checkbox{--size: 20px;--border-radius: 50%;--border-width: 2px;--border-color: var(--dt-border);--border-color-checked: var(--dt-primary);--background: transparent;--background-checked: var(--dt-primary);--checkmark-color: white;--checkmark-width: 2px;margin:0;display:block}.selection-cell ion-checkbox::part(container){border-radius:50%}.selection-cell input[type=radio]{width:20px;height:20px;cursor:pointer;accent-color:var(--dt-primary);margin:0;display:block}.checkbox-circular .selection-cell ion-checkbox{--border-radius: 50%}.checkbox-circular .selection-cell ion-checkbox::part(container){border-radius:50%}.row-number-cell{width:60px;text-align:center;color:var(--dt-text-muted);font-size:12px;font-weight:500}.actions-cell{text-align:center;white-space:nowrap}.sticky-start{position:sticky;left:0;background:inherit;z-index:1;box-shadow:2px 0 4px #0000000d}.sticky-end{position:sticky;right:0;background:inherit;z-index:1;box-shadow:-2px 0 4px #0000000d}.empty-row td{padding:64px 16px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--dt-text-secondary)}.empty-icon{font-size:56px;margin-bottom:20px;opacity:.4;color:var(--dt-text-muted)}.empty-title{font-size:18px;font-weight:600;margin:0 0 8px;color:var(--dt-text-primary)}.empty-description{font-size:14px;margin:0;max-width:320px;color:var(--dt-text-secondary);line-height:1.5}.pagination-container{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-top:1px solid var(--dt-border);background:var(--dt-surface);flex-wrap:wrap;gap:16px}.pagination-info{display:flex;align-items:center;gap:20px;font-size:14px;color:var(--dt-text-secondary)}.pagination-info span{font-weight:500}.page-size-select{--padding-start: 12px;--padding-end: 12px;font-size:14px;min-width:140px;--background: var(--dt-surface-variant);--border-radius: 8px}.pagination-controls{display:flex;align-items:center;gap:8px}.pagination-controls ion-button{--padding-start: 10px;--padding-end: 10px;--border-radius: 8px;--background: var(--dt-surface-variant);--background-hover: var(--dt-border);--color: var(--dt-text-secondary);--color-hover: var(--dt-text-primary);margin:0;height:36px;min-width:36px}.pagination-controls ion-button:disabled{opacity:.4}.pagination-controls ion-button ion-icon{font-size:16px}.page-indicator{padding:0 16px;font-size:14px;color:var(--dt-text-primary);font-weight:600;background:var(--dt-surface-variant);border-radius:8px;height:36px;display:flex;align-items:center;min-width:80px;justify-content:center}.bordered th,.bordered td{border:1px solid var(--dt-border)}.striped tbody tr:nth-child(2n){background:var(--dt-surface-variant)}.striped tbody tr:nth-child(2n).selected{background:rgba(var(--dt-primary-rgb),.08)}.sticky-header .table-wrapper{overflow-y:auto}.sticky-header thead{position:sticky;top:0;z-index:5;box-shadow:0 1px 0 var(--dt-border)}.size-small{--dt-cell-padding-x: 12px;--dt-cell-padding-y: 10px;--dt-header-padding-y: 10px}.size-small th,.size-small td{font-size:13px}.size-small thead th{font-size:12px}.size-small .selection-cell{width:44px;padding:6px 8px}.size-small .selection-cell ion-checkbox{--size: 18px}.size-small .row-number-cell{width:48px;font-size:11px}.size-small .pagination-container{padding:12px 16px}.size-small .pagination-info,.size-small .page-indicator{font-size:13px}.size-small .pagination-controls ion-button{height:32px;min-width:32px}.size-small .page-indicator{height:32px;min-width:70px}.size-large{--dt-cell-padding-x: 20px;--dt-cell-padding-y: 18px;--dt-header-padding-y: 16px}.size-large th,.size-large td{font-size:15px}.size-large thead th{font-size:14px}.size-large .selection-cell{width:60px;padding:12px 16px}.size-large .selection-cell ion-checkbox{--size: 24px}.size-large .row-number-cell{width:72px;font-size:14px}.size-large .pagination-container{padding:20px 24px}.size-large .pagination-info,.size-large .page-indicator{font-size:15px}.size-large .pagination-controls ion-button{height:40px;min-width:40px}.size-large .page-indicator{height:40px;min-width:90px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 768px){.data-table-container{--dt-border-radius: 12px}.pagination-container{flex-direction:column;align-items:stretch;gap:12px}.pagination-info{justify-content:space-between}.pagination-controls{justify-content:center}}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid var(--dt-border);background:var(--dt-surface);flex-wrap:wrap}.table-toolbar:empty{display:none}@media (max-width: 576px){.table-toolbar{flex-direction:column;align-items:stretch;padding:16px}}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9999px;font-size:12px;font-weight:600;white-space:nowrap;letter-spacing:.025em}.status-badge--success{background:#dcfce7;color:#15803d}.status-badge--warning{background:#fef3c7;color:#b45309}.status-badge--danger{background:#fee2e2;color:#dc2626}.status-badge--primary{background:#e0e7ff;color:#4338ca}.status-badge--secondary{background:#f1f5f9;color:#475569}.status-badge--medium{background:#f1f5f9;color:#64748b}.status-badge--tertiary{background:#f3e8ff;color:#7c3aed}.status-badge--filled.status-badge--success{background:#22c55e;color:#fff}.status-badge--filled.status-badge--warning{background:#f59e0b;color:#fff}.status-badge--filled.status-badge--danger{background:#ef4444;color:#fff}.status-badge--filled.status-badge--primary{background:var(--dt-primary);color:#fff}.status-badge--outlined{background:transparent;border:1.5px solid currentColor}.status-badge--outlined.status-badge--success{color:#16a34a}.status-badge--outlined.status-badge--warning{color:#d97706}.status-badge--outlined.status-badge--danger{color:#dc2626}.status-badge--outlined.status-badge--primary{color:var(--dt-primary)}.action-buttons{display:flex;gap:6px;justify-content:center}.action-buttons ion-button{--padding-start: 8px;--padding-end: 8px;--border-radius: 8px;margin:0}.action-buttons ion-button ion-icon{font-size:18px}.card-list{display:none;padding:12px;gap:12px}.data-card{background:var(--dt-surface);border:1px solid var(--dt-border);border-radius:12px;padding:16px;margin-bottom:12px;transition:all .2s ease}.data-card.selected{border-color:var(--dt-primary);background:rgba(var(--dt-primary-rgb),.04);box-shadow:0 0 0 1px var(--dt-primary)}.data-card.clickable{cursor:pointer}.data-card.clickable:hover{box-shadow:var(--dt-elevation-medium);transform:translateY(-2px)}.data-card.clickable:active{transform:translateY(0)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--dt-border)}.card-selection{display:flex;align-items:center}.card-body{display:flex;flex-direction:column;gap:12px}.card-field{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.card-field__label{font-size:12px;font-weight:600;color:var(--dt-text-muted);flex-shrink:0}.card-field__value{font-size:14px;color:var(--dt-text-primary);text-align:right;word-break:break-word;font-weight:500}.card-actions{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid var(--dt-border)}@media (max-width: 768px){.responsive-cards .table-wrapper{display:none}.responsive-cards .card-list{display:block}}@media (prefers-color-scheme: dark){.data-table-container{--dt-surface: #1e293b;--dt-surface-variant: #334155;--dt-border: #475569;--dt-text-primary: #f1f5f9;--dt-text-secondary: #94a3b8;--dt-text-muted: #64748b}.loading-overlay{background:#1e293be6}.status-badge--success{background:#22c55e33;color:#4ade80}.status-badge--warning{background:#f59e0b33;color:#fbbf24}.status-badge--danger{background:#ef444433;color:#f87171}.status-badge--primary{background:#6366f133;color:#a5b4fc}}\n"] }]
1070
+ }], propDecorators: { props: [{
1071
+ type: Input
1072
+ }], rowClick: [{
1073
+ type: Output
1074
+ }], selectionChange: [{
1075
+ type: Output
1076
+ }], sortChange: [{
1077
+ type: Output
1078
+ }], pageChange: [{
1079
+ type: Output
1080
+ }] } });
1081
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsR0FDaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBU0wseUJBQXlCLEdBQzFCLE1BQU0sU0FBUyxDQUFDOzs7QUFFakIsUUFBUSxDQUFDO0lBQ1AsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLGVBQWU7Q0FDaEIsQ0FBQyxDQUFDO0FBc1dIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBL1kvQjtRQWtaWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFDekQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztRQUN2RSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDMUQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXBFLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQXlCLElBQUksQ0FBQztRQUN6QyxpQkFBWSxHQUFhLElBQUksR0FBRyxFQUFFLENBQUM7UUFFbkMsNkNBQTZDO1FBQ3JDLG9CQUFlLEdBQXlCLEVBQUUsQ0FBQztRQUUzQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQWtXcEM7SUFoV0MsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRTNFLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUUzQyx1QkFBdUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxDQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUMxRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25ELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFekIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkMsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbkUsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTVDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxJQUFJLElBQUk7Z0JBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQztpQkFDaEQsSUFBSSxNQUFNLElBQUksSUFBSTtnQkFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDO2lCQUNuQyxJQUFJLE1BQU0sSUFBSSxJQUFJO2dCQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDcEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xFLFVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixVQUFVLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1lBQUUsS0FBSyxFQUFFLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7WUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZTtZQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE1BQU0saUJBQWlCLEdBQXdCO1lBQzdDLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7U0FDM0MsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksaUJBQWlCLENBQUM7SUFDcEQsQ0FBQztJQUVELCtCQUErQjtJQUMvQixlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLHFCQUFxQjtRQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3hJLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLGVBQWUsSUFBSSx5QkFBeUIsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUNiLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdkYsT0FBTyxhQUFhLEdBQUcsQ0FBQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUN4RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQU0sRUFBRSxNQUEwQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFNLEVBQUUsTUFBMEI7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBMEI7UUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBMEI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsR0FBRztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMzRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyRixDQUFDO1FBQ0QsT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBTTtRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBTTtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQTBCO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFN0IsSUFBSSxTQUFTLEdBQTBCLEtBQUssQ0FBQztRQUU3QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUc7WUFDbEIsU0FBUztTQUNWLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFNLEVBQUUsS0FBYSxFQUFFLEtBQWlCO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRXJDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLEdBQUc7WUFDSCxLQUFLO1lBQ0wsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBa0I7UUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFckMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBTSxFQUFFLEtBQWtCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFckMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBTTtRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQ3pCLE1BQTJELEVBQzNELFVBQWM7UUFFZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsUUFBUTtZQUNSLFVBQVU7WUFDVixNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRW5DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7WUFDeEMsWUFBWTtTQUNiLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFrQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUVuQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFFaEQsOENBQThDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUUsV0FBVztZQUNyQixZQUFZO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztZQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDOytHQWpYVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzUEFqWW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtVlQsMnNYQTVWQyxZQUFZLHFNQUNaLFdBQVcsK0JBQ1gsU0FBUyxvUEFDVCxPQUFPLDJKQUNQLFdBQVcscU1BQ1gsVUFBVSx5R0FDVixTQUFTLGtWQUNULGVBQWU7OzRGQW1ZTixrQkFBa0I7a0JBL1k5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixTQUFTO3dCQUNULGVBQWU7cUJBQ2hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1WVDs4QkErQ1EsS0FBSztzQkFBYixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBpbmplY3QsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uSWNvbixcbiAgSW9uQ2hlY2tib3gsXG4gIElvblNwaW5uZXIsXG4gIElvblNlbGVjdCxcbiAgSW9uU2VsZWN0T3B0aW9uLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hldnJvblVwT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uQmFja091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHtcbiAgRGF0YVRhYmxlTWV0YWRhdGEsXG4gIERhdGFUYWJsZUNvbHVtbixcbiAgRGF0YVRhYmxlU29ydCxcbiAgRGF0YVRhYmxlUm93Q2xpY2tFdmVudCxcbiAgRGF0YVRhYmxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gIERhdGFUYWJsZVNvcnRDaGFuZ2VFdmVudCxcbiAgRGF0YVRhYmxlUGFnZUNoYW5nZUV2ZW50LFxuICBEYXRhVGFibGVFbXB0eVN0YXRlLFxuICBERUZBVUxUX1BBR0VfU0laRV9PUFRJT05TLFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoe1xuICBjaGV2cm9uVXBPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25CYWNrT3V0bGluZSxcbiAgY2hldnJvbkZvcndhcmRPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG59KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWRhdGEtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25DaGVja2JveCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvblNlbGVjdCxcbiAgICBJb25TZWxlY3RPcHRpb24sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgW2NsYXNzLnN0cmlwZWRdPVwicHJvcHMuc3RyaXBlZFwiXG4gICAgICBbY2xhc3MuaG92ZXJhYmxlXT1cInByb3BzLmhvdmVyYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgW2NsYXNzLnN0aWNreS1oZWFkZXJdPVwicHJvcHMuc3RpY2t5SGVhZGVyXCJcbiAgICAgIFtjbGFzcy5yZXNwb25zaXZlLWNhcmRzXT1cInByb3BzLnJlc3BvbnNpdmVNb2RlID09PSAnY2FyZHMnXCJcbiAgICAgIFtjbGFzcy5lbGV2YXRpb24tbm9uZV09XCJwcm9wcy5lbGV2YXRpb24gPT09ICdub25lJ1wiXG4gICAgICBbY2xhc3MuZWxldmF0aW9uLWxvd109XCJwcm9wcy5lbGV2YXRpb24gPT09ICdsb3cnXCJcbiAgICAgIFtjbGFzcy5lbGV2YXRpb24taGlnaF09XCJwcm9wcy5lbGV2YXRpb24gPT09ICdoaWdoJ1wiXG4gICAgICBbY2xhc3MuaGVhZGVyLWdyYWRpZW50XT1cInByb3BzLmhlYWRlckdyYWRpZW50XCJcbiAgICAgIFtjbGFzcy5jaGVja2JveC1jaXJjdWxhcl09XCJwcm9wcy5jaGVja2JveFN0eWxlID09PSAnY2lyY3VsYXInXCJcbiAgICAgIFtjbGFzcy5yb3ctaGlnaGxpZ2h0LWJvcmRlcl09XCJwcm9wcy5yb3dIaWdobGlnaHRTdHlsZSA9PT0gJ2JvcmRlci1sZWZ0J1wiXG4gICAgICBbY2xhc3Mucm93LWhpZ2hsaWdodC1ib3RoXT1cInByb3BzLnJvd0hpZ2hsaWdodFN0eWxlID09PSAnYm90aCdcIlxuICAgICAgW3N0eWxlLi0tbWF4LWhlaWdodF09XCJwcm9wcy5tYXhIZWlnaHRcIlxuICAgID5cbiAgICAgIDwhLS0gVG9vbGJhciBzbG90IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRvb2xiYXJcIiAjdG9vbGJhckNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2xiYXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTG9hZGluZyBvdmVybGF5IC0tPlxuICAgICAgQGlmIChwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIEBpZiAocHJvcHMubG9hZGluZ1N0YXRlPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctbWVzc2FnZVwiPnt7IHByb3BzLmxvYWRpbmdTdGF0ZS5tZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS13cmFwcGVyXCIgW2NsYXNzLmlzLWxvYWRpbmddPVwicHJvcHMubG9hZGluZ1N0YXRlPy5sb2FkaW5nXCI+XG4gICAgICAgIDx0YWJsZVxuICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmFyaWFMYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHByb3BzLmNhcHRpb24pIHtcbiAgICAgICAgICAgIDxjYXB0aW9uIGNsYXNzPVwic3Itb25seVwiPnt7IHByb3BzLmNhcHRpb24gfX08L2NhcHRpb24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8IS0tIFNlbGVjdGlvbiBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbiAmJiBwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJzZWxlY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZWxlY3Rpb25Db2x1bW4gJiYgcHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+PC90aD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gUm93IG51bWJlciBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1Jvd051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJyb3ctbnVtYmVyLWNlbGxcIj4jPC90aD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0YSBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzcyhjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ubWF4V2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGVkXT1cImN1cnJlbnRTb3J0Py5jb2x1bW4gPT09IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5zb3J0YWJsZSA/IG9uU29ydChjb2x1bW4pIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwiZ2V0QXJpYVNvcnQoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaGVhZGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5zb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb3J0LWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXVwLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleSAmJiBjdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1kb3duLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleSAmJiBjdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zLWNlbGxcIiBbc3R5bGUud2lkdGhdPVwicHJvcHMuYWN0aW9uc1dpZHRoIHx8ICcxMDBweCdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEFjdGlvbnNMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgQGlmIChkaXNwbGF5ZWREYXRhLmxlbmd0aCA9PT0gMCAmJiAhcHJvcHMubG9hZGluZ1N0YXRlPy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImVtcHR5LXJvd1wiPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInRvdGFsQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS50ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVN0YXRlLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZW1wdHlTdGF0ZS5pY29uXCIgY2xhc3M9XCJlbXB0eS1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IGVtcHR5U3RhdGUudGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHktZGVzY3JpcHRpb25cIj57eyBlbXB0eVN0YXRlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheWVkRGF0YTsgdHJhY2sgdHJhY2tCeUZuKHJvdyk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwicHJvcHMucm93Q2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvdywgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3Rpb24gY2VsbCAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3Rpb24tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2luZ2xlUm93KHJvdyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBSb3cgbnVtYmVyIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJyb3ctbnVtYmVyLWNlbGxcIj57eyBnZXRSb3dOdW1iZXIoaSkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIERhdGEgY2VsbHMgLS0+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi5hbGlnblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5jZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgY29sdW1uLCB2YWx1ZTogZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWRWYWx1ZShyb3csIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9ucy1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BzLmFjdGlvbnNUZW1wbGF0ZTsgY29udGV4dDogeyByb3csIGluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENhcmQgdmlldyAocmVzcG9uc2l2ZSBtb2JpbGUpIC0tPlxuICAgICAgQGlmIChwcm9wcy5yZXNwb25zaXZlTW9kZSA9PT0gJ2NhcmRzJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1saXN0XCI+XG4gICAgICAgICAgQGlmIChkaXNwbGF5ZWREYXRhLmxlbmd0aCA9PT0gMCAmJiAhcHJvcHMubG9hZGluZ1N0YXRlPy5sb2FkaW5nKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiZW1wdHlTdGF0ZS5pY29uXCIgY2xhc3M9XCJlbXB0eS1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUudGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IGVtcHR5U3RhdGUudGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHktZGVzY3JpcHRpb25cIj57eyBlbXB0eVN0YXRlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWREYXRhOyB0cmFjayB0cmFja0J5Rm4ocm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5tb2JpbGVDYXJkVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMubW9iaWxlQ2FyZFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGksIGNvbHVtbnM6IHZpc2libGVDb2x1bW5zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWNhcmRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cInByb3BzLnJvd0NsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhyb3csIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBoZWFkZXIgd2l0aCBzZWxlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZWxlY3Rpb25Db2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbihyb3csICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2luZ2xlUm93KHJvdyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbnVtYmVyXCI+e3sgZ2V0Um93TnVtYmVyKGkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBib2R5IHdpdGggZmllbGRzIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWZpZWxkX19sYWJlbFwiPnt7IGNvbHVtbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1maWVsZF9fdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5jZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBjb2x1bW4sIHZhbHVlOiBnZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkVmFsdWUocm93LCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBhY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wcy5hY3Rpb25zVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBpbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UGFnaW5hdGlvbiAmJiBwcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWluZm9cIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7eyBnZXRQYWdpbmF0aW9uSW5mb1RleHQoKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICBAaWYgKHBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInByb3BzLnBhZ2luYXRpb24ucGFnZVNpemVcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2Utc2l6ZS1zZWxlY3RcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGZvciAoc2l6ZSBvZiBwYWdlU2l6ZU9wdGlvbnM7IHRyYWNrIHNpemUpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwic2l6ZVwiPnt7IGdldFBlclBhZ2VUZXh0KHNpemUpIH19PC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID09PSAwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKDApXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRGaXJzdFBhZ2VMYWJlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMnB4XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnBhZ2luYXRpb24ucGFnZSA9PT0gMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgLSAxKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0UHJldmlvdXNQYWdlTGFiZWwoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICB7eyBwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxIH19IC8ge3sgdG90YWxQYWdlcyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXROZXh0UGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPj0gdG90YWxQYWdlcyAtIDFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UodG90YWxQYWdlcyAtIDEpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYXN0UGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEycHhcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGEtdGFibGVcbiAqXG4gKiBBIGZsZXhpYmxlIGRhdGEgdGFibGUgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHRhYnVsYXIgZGF0YSB3aXRoIHNvcnRpbmcsXG4gKiBwYWdpbmF0aW9uLCBhbmQgc2VsZWN0aW9uIGZlYXR1cmVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGEtdGFibGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb2x1bW5zOiBbXG4gKiAgICAgICB7IGtleTogJ25hbWUnLCBsYWJlbDogJ05vbWJyZScsIHNvcnRhYmxlOiB0cnVlIH0sXG4gKiAgICAgICB7IGtleTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcgfSxcbiAqICAgICAgIHsga2V5OiAnc3RhdHVzJywgbGFiZWw6ICdFc3RhZG8nIH1cbiAqICAgICBdLFxuICogICAgIGRhdGE6IHVzZXJzXG4gKiAgIH1cIlxuICogPjwvdmFsLWRhdGEtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHBhZ2luYXRpb24gYW5kIHNlbGVjdGlvblxuICogYGBgaHRtbFxuICogPHZhbC1kYXRhLXRhYmxlXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29sdW1uczogY29sdW1ucyxcbiAqICAgICBkYXRhOiBwYXJ0aWNpcGFudHMsXG4gKiAgICAgc2hvd1BhZ2luYXRpb246IHRydWUsXG4gKiAgICAgcGFnaW5hdGlvbjoge1xuICogICAgICAgcGFnZTogMCxcbiAqICAgICAgIHBhZ2VTaXplOiAyNSxcbiAqICAgICAgIHRvdGFsOiB0b3RhbENvdW50XG4gKiAgICAgfSxcbiAqICAgICBzZWxlY3Rpb246IHtcbiAqICAgICAgIG1vZGU6ICdtdWx0aXBsZScsXG4gKiAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRQYXJ0aWNpcGFudHNcbiAqICAgICB9LFxuICogICAgIHNob3dTZWxlY3Rpb25Db2x1bW46IHRydWVcbiAqICAgfVwiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1kYXRhLXRhYmxlPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEYXRhVGFibGVNZXRhZGF0YTxUPjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVJvd0NsaWNrRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlU29ydENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlUGFnZUNoYW5nZUV2ZW50PigpO1xuXG4gIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuICBjdXJyZW50U29ydDogRGF0YVRhYmxlU29ydCB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZFJvd3M6IFNldDxhbnk+ID0gbmV3IFNldCgpO1xuXG4gIC8qKiBDYWNoZWQgdmlzaWJsZSBjb2x1bW5zIGZvciBwZXJmb3JtYW5jZSAqL1xuICBwcml2YXRlIF92aXNpYmxlQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uPFQ+W10gPSBbXTtcblxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIC8vIENhY2hlIHZpc2libGUgY29sdW1ucyBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLl92aXNpYmxlQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUgIT09IGZhbHNlKTtcblxuICAgIC8vIEluaXRpYWxpemUgc29ydFxuICAgIHRoaXMuY3VycmVudFNvcnQgPSB0aGlzLnByb3BzLnNvcnQgfHwgbnVsbDtcblxuICAgIC8vIEluaXRpYWxpemUgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uPy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KFxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAocm93ID0+IHRoaXMuZ2V0Um93SWQocm93KSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRhKCk6IHZvaWQge1xuICAgIGxldCBkYXRhID0gWy4uLnRoaXMucHJvcHMuZGF0YV07XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBzb3J0aW5nXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50U29ydCAmJiB0aGlzLmN1cnJlbnRTb3J0KSB7XG4gICAgICBkYXRhID0gdGhpcy5zb3J0RGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBwYWdpbmF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbiAmJiB0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnREYXRhKGRhdGE6IFRbXSk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0KSByZXR1cm4gZGF0YTtcblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMucHJvcHMuY29sdW1ucy5maW5kKGMgPT4gYy5rZXkgPT09IHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbik7XG4gICAgaWYgKCFjb2x1bW4pIHJldHVybiBkYXRhO1xuXG4gICAgcmV0dXJuIFsuLi5kYXRhXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoY29sdW1uLnNvcnRGbikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjb2x1bW4uc29ydEZuKGEsIGIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtcmVzdWx0IDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZUEgPSB0aGlzLmdldENlbGxWYWx1ZShhLCBjb2x1bW4pO1xuICAgICAgY29uc3QgdmFsdWVCID0gdGhpcy5nZXRDZWxsVmFsdWUoYiwgY29sdW1uKTtcblxuICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgaWYgKHZhbHVlQSA9PSBudWxsICYmIHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gMDtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQSA9PSBudWxsKSBjb21wYXJpc29uID0gMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gLTE7XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWVBID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb21wYXJpc29uID0gdmFsdWVBLmxvY2FsZUNvbXBhcmUodmFsdWVCKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YWx1ZUEgPCB2YWx1ZUIgPyAtMSA6IHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtY29tcGFyaXNvbiA6IGNvbXBhcmlzb247XG4gICAgfSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCB0b3RhbENvbHVtbnMoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSB0aGlzLnZpc2libGVDb2x1bW5zLmxlbmd0aDtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dOdW1iZXJzKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGlvbnNUZW1wbGF0ZSkgY291bnQrKztcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBnZXQgZW1wdHlTdGF0ZSgpOiBEYXRhVGFibGVFbXB0eVN0YXRlIHtcbiAgICBjb25zdCBkZWZhdWx0RW1wdHlTdGF0ZTogRGF0YVRhYmxlRW1wdHlTdGF0ZSA9IHtcbiAgICAgIGljb246ICdkb2N1bWVudC1vdXRsaW5lJyxcbiAgICAgIHRpdGxlOiB0aGlzLmkxOG4udCgnbm9EYXRhJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5pMThuLnQoJ25vUmVjb3Jkc0ZvdW5kJyksXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lbXB0eVN0YXRlIHx8IGRlZmF1bHRFbXB0eVN0YXRlO1xuICB9XG5cbiAgLyoqIEdldCBhY3Rpb25zIGNvbHVtbiBsYWJlbCAqL1xuICBnZXRBY3Rpb25zTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hY3Rpb25zTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2FjdGlvbnMnKTtcbiAgfVxuXG4gIC8qKiBHZXQgcGFnaW5hdGlvbiBpbmZvIHRleHQgKi9cbiAgZ2V0UGFnaW5hdGlvbkluZm9UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaTE4bi50KCdzaG93aW5nJyl9ICR7dGhpcy5wYWdpbmF0aW9uU3RhcnR9LSR7dGhpcy5wYWdpbmF0aW9uRW5kfSAke3RoaXMuaTE4bi50KCdvZicpfSAke3RoaXMucHJvcHMucGFnaW5hdGlvbj8udG90YWx9YDtcbiAgfVxuXG4gIC8qKiBHZXQgcGVyIHBhZ2UgdGV4dCAqL1xuICBnZXRQZXJQYWdlVGV4dChzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtzaXplfSAke3RoaXMuaTE4bi50KCdwZXJQYWdlJyl9YDtcbiAgfVxuXG4gIC8qKiBHZXQgZmlyc3QgcGFnZSBhcmlhIGxhYmVsICovXG4gIGdldEZpcnN0UGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdmaXJzdFBhZ2UnKTtcbiAgfVxuXG4gIC8qKiBHZXQgcHJldmlvdXMgcGFnZSBhcmlhIGxhYmVsICovXG4gIGdldFByZXZpb3VzUGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdwcmV2aW91c1BhZ2UnKTtcbiAgfVxuXG4gIC8qKiBHZXQgbmV4dCBwYWdlIGFyaWEgbGFiZWwgKi9cbiAgZ2V0TmV4dFBhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnbmV4dFBhZ2UnKTtcbiAgfVxuXG4gIC8qKiBHZXQgbGFzdCBwYWdlIGFyaWEgbGFiZWwgKi9cbiAgZ2V0TGFzdFBhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnbGFzdFBhZ2UnKTtcbiAgfVxuXG4gIGdldCBwYWdlU2l6ZU9wdGlvbnMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnBhZ2luYXRpb24/LnBhZ2VTaXplT3B0aW9ucyB8fCBERUZBVUxUX1BBR0VfU0laRV9PUFRJT05TO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuIDE7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnByb3BzLnBhZ2luYXRpb24udG90YWwgLyB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUpO1xuICB9XG5cbiAgZ2V0IHBhZ2luYXRpb25TdGFydCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm4gMTtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUgKyAxO1xuICB9XG5cbiAgZ2V0IHBhZ2luYXRpb25FbmQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuIHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgKHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICsgMSkgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUsXG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24udG90YWxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ZWREYXRhLmV2ZXJ5KHJvdyA9PiB0aGlzLmlzUm93U2VsZWN0ZWQocm93KSk7XG4gIH1cblxuICBnZXQgaXNJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlbGVjdGVkQ291bnQgPSB0aGlzLmRpc3BsYXllZERhdGEuZmlsdGVyKHJvdyA9PiB0aGlzLmlzUm93U2VsZWN0ZWQocm93KSkubGVuZ3RoO1xuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgfVxuXG4gIGdldENlbGxWYWx1ZShyb3c6IFQsIGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogYW55IHtcbiAgICBjb25zdCBmaWVsZCA9IGNvbHVtbi5maWVsZCB8fCBjb2x1bW4ua2V5O1xuICAgIHJldHVybiBmaWVsZC5zcGxpdCgnLicpLnJlZHVjZSgob2JqOiBhbnksIGtleSkgPT4gb2JqPy5ba2V5XSwgcm93KTtcbiAgfVxuXG4gIGdldEZvcm1hdHRlZFZhbHVlKHJvdzogVCwgY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pO1xuICAgIGlmIChjb2x1bW4uZm9ybWF0KSB7XG4gICAgICByZXR1cm4gY29sdW1uLmZvcm1hdCh2YWx1ZSwgcm93KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID8/ICcnO1xuICB9XG5cbiAgZ2V0Q29sdW1uQ2xhc3MoY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbY29sdW1uLmNzc0NsYXNzIHx8ICcnXTtcbiAgICBpZiAoY29sdW1uLnN0aWNreSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBzdGlja3ktJHtjb2x1bW4uc3RpY2t5fWApO1xuICAgIH1cbiAgICBpZiAoY29sdW1uLmFsaWduKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGFsaWduLSR7Y29sdW1uLmFsaWdufWApO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgZ2V0QXJpYVNvcnQoY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIWNvbHVtbi5zb3J0YWJsZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbiAhPT0gY29sdW1uLmtleSkgcmV0dXJuICdub25lJztcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydC5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ2FzY2VuZGluZycgOiAnZGVzY2VuZGluZyc7XG4gIH1cblxuICBnZXRSb3dOdW1iZXIoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnByb3BzLnJvd051bWJlclN0YXJ0ID8/IDE7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUgKyBpbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0ICsgaW5kZXg7XG4gIH1cblxuICBnZXRSb3dJZChyb3c6IFQpOiBhbnkge1xuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvbj8udHJhY2tCeSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2VsZWN0aW9uLnRyYWNrQnkocm93KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdztcbiAgfVxuXG4gIHRyYWNrQnlGbihyb3c6IFQpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldFJvd0lkKHJvdyk7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGVkKHJvdzogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgfVxuXG4gIG9uU29ydChjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHZvaWQge1xuICAgIGlmICghY29sdW1uLnNvcnRhYmxlKSByZXR1cm47XG5cbiAgICBsZXQgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8IG51bGwgPSAnYXNjJztcblxuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0Py5jb2x1bW4gPT09IGNvbHVtbi5rZXkpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycpIHtcbiAgICAgICAgZGlyZWN0aW9uID0gJ2Rlc2MnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlyZWN0aW9uID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0ID0geyBjb2x1bW46IGNvbHVtbi5rZXksIGRpcmVjdGlvbiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7XG4gICAgICBjb2x1bW46IGNvbHVtbi5rZXksXG4gICAgICBkaXJlY3Rpb24sXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGllbnRTb3J0KSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBvblJvd0NsaWNrKHJvdzogVCwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucm93Q2xpY2thYmxlKSByZXR1cm47XG5cbiAgICB0aGlzLnJvd0NsaWNrLmVtaXQoe1xuICAgICAgcm93LFxuICAgICAgaW5kZXgsXG4gICAgICBldmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGVja2VkID0gZXZlbnQuZGV0YWlsLmNoZWNrZWQ7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5ZWREYXRhLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoY2hlY2tlZCA/ICdzZWxlY3RBbGwnIDogJ2Rlc2VsZWN0QWxsJyk7XG4gIH1cblxuICB0b2dnbGVSb3dTZWxlY3Rpb24ocm93OiBULCBldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCByb3dJZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcbiAgICBjb25zdCBjaGVja2VkID0gZXZlbnQuZGV0YWlsLmNoZWNrZWQ7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKHJvd0lkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKHJvd0lkKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoY2hlY2tlZCA/ICdzZWxlY3QnIDogJ2Rlc2VsZWN0Jywgcm93KTtcbiAgfVxuXG4gIHNlbGVjdFNpbmdsZVJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICBjb25zdCByb3dJZCA9IHRoaXMuZ2V0Um93SWQocm93KTtcbiAgICBjb25zdCB3YXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhyb3dJZCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xuXG4gICAgaWYgKCF3YXNTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKHJvd0lkKTtcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgnc2VsZWN0Jywgcm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCdkZXNlbGVjdCcsIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKFxuICAgIGFjdGlvbjogJ3NlbGVjdCcgfCAnZGVzZWxlY3QnIHwgJ3NlbGVjdEFsbCcgfCAnZGVzZWxlY3RBbGwnLFxuICAgIGNoYW5nZWRSb3c/OiBUXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5wcm9wcy5kYXRhLmZpbHRlcihyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGNoYW5nZWRSb3csXG4gICAgICBhY3Rpb24sXG4gICAgfSk7XG4gIH1cblxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2U7XG4gICAgY29uc3QgbWF4UGFnZSA9IHRoaXMudG90YWxQYWdlcyAtIDE7XG4gICAgY29uc3QgbmV3UGFnZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHBhZ2UsIG1heFBhZ2UpKTtcblxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcbiAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgcHJldmlvdXNQYWdlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPSBuZXdQYWdlO1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3UGFnZVNpemUgPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2U7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSBwYWdlIHRvIGtlZXAgZmlyc3QgdmlzaWJsZSBpdGVtXG4gICAgY29uc3QgZmlyc3RJdGVtID0gcHJldmlvdXNQYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIGNvbnN0IG5ld1BhZ2UgPSBNYXRoLmZsb29yKGZpcnN0SXRlbSAvIG5ld1BhZ2VTaXplKTtcblxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcbiAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICBwYWdlU2l6ZTogbmV3UGFnZVNpemUsXG4gICAgICBwcmV2aW91c1BhZ2UsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGllbnRQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUgPSBuZXdQYWdlU2l6ZTtcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlID0gbmV3UGFnZTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxufVxuIl19