@koobiq/components 17.8.5 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/alert/alert-tokens.scss +114 -121
  2. package/autocomplete/autocomplete-tokens.scss +8 -7
  3. package/badge/badge-tokens.scss +164 -169
  4. package/button/button-tokens.scss +237 -228
  5. package/button/button.scss +5 -9
  6. package/button-toggle/button-toggle-tokens.scss +68 -71
  7. package/checkbox/checkbox-tokens.scss +118 -125
  8. package/code-block/code-block-tokens.scss +92 -91
  9. package/core/common-behaviors/index.d.ts +1 -1
  10. package/core/forms/forms-tokens.scss +28 -33
  11. package/core/option/optgroup-tokens.scss +8 -26
  12. package/core/option/option-action-tokens.scss +3 -19
  13. package/core/option/option-tokens.scss +89 -105
  14. package/core/pop-up/pop-up-trigger.d.ts +5 -1
  15. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +118 -125
  16. package/core/styles/_koobiq-theme.scss +3 -7
  17. package/core/styles/theming/_theming.scss +4 -6
  18. package/core/styles/theming/scrollbar-tokens.scss +16 -14
  19. package/core/styles/typography/_typography.scss +1 -0
  20. package/datepicker/datepicker-tokens.scss +41 -47
  21. package/divider/divider-tokens.scss +6 -4
  22. package/dl/dl-tokens.scss +24 -25
  23. package/dropdown/dropdown-tokens.scss +87 -99
  24. package/empty-state/empty-state-tokens.scss +46 -59
  25. package/esm2022/alert/alert.component.mjs +13 -13
  26. package/esm2022/alert/alert.module.mjs +4 -4
  27. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +3 -3
  28. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +3 -3
  29. package/esm2022/autocomplete/autocomplete.component.mjs +5 -5
  30. package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
  31. package/esm2022/badge/badge.component.mjs +10 -10
  32. package/esm2022/badge/badge.module.mjs +4 -4
  33. package/esm2022/button/button.component.mjs +8 -8
  34. package/esm2022/button/button.module.mjs +4 -4
  35. package/esm2022/button-toggle/button-toggle.component.mjs +8 -8
  36. package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
  37. package/esm2022/checkbox/checkbox-module.mjs +4 -4
  38. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  39. package/esm2022/checkbox/checkbox.mjs +5 -5
  40. package/esm2022/code-block/actionbar.component.mjs +5 -5
  41. package/esm2022/code-block/code-block.component.mjs +5 -5
  42. package/esm2022/code-block/code-block.module.mjs +4 -4
  43. package/esm2022/core/common-behaviors/common-module.mjs +4 -4
  44. package/esm2022/core/common-behaviors/index.mjs +2 -2
  45. package/esm2022/core/error/error-options.mjs +6 -6
  46. package/esm2022/core/formatters/date/formatter.mjs +3 -3
  47. package/esm2022/core/formatters/date/formatter.pipe.mjs +39 -39
  48. package/esm2022/core/formatters/index.mjs +4 -4
  49. package/esm2022/core/formatters/number/formatter.mjs +12 -12
  50. package/esm2022/core/forms/forms-module.mjs +4 -4
  51. package/esm2022/core/forms/forms.directive.mjs +6 -6
  52. package/esm2022/core/highlight/highlight.pipe.mjs +3 -3
  53. package/esm2022/core/highlight/index.mjs +4 -4
  54. package/esm2022/core/line/line.mjs +7 -7
  55. package/esm2022/core/locales/locale-service.mjs +3 -3
  56. package/esm2022/core/locales/locale-service.module.mjs +4 -4
  57. package/esm2022/core/option/action.mjs +8 -8
  58. package/esm2022/core/option/optgroup.mjs +4 -4
  59. package/esm2022/core/option/option-module.mjs +4 -4
  60. package/esm2022/core/option/option.mjs +5 -5
  61. package/esm2022/core/pop-up/pop-up-trigger.mjs +17 -8
  62. package/esm2022/core/pop-up/pop-up.mjs +3 -3
  63. package/esm2022/core/select/common.mjs +15 -15
  64. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +5 -5
  65. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
  66. package/esm2022/core/services/measure-scrollbar.service.mjs +3 -3
  67. package/esm2022/core/services/theme.service.mjs +3 -3
  68. package/esm2022/core/utils/data-size/data-size.pipe.mjs +3 -3
  69. package/esm2022/core/version.mjs +2 -2
  70. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  71. package/esm2022/datepicker/calendar-header.component.mjs +5 -5
  72. package/esm2022/datepicker/calendar.component.mjs +3 -3
  73. package/esm2022/datepicker/datepicker-input.directive.mjs +3 -3
  74. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  75. package/esm2022/datepicker/datepicker-module.mjs +4 -4
  76. package/esm2022/datepicker/datepicker-toggle.component.mjs +8 -8
  77. package/esm2022/datepicker/datepicker.component.mjs +8 -8
  78. package/esm2022/datepicker/month-view.component.mjs +3 -3
  79. package/esm2022/divider/divider.component.mjs +4 -4
  80. package/esm2022/divider/divider.module.mjs +4 -4
  81. package/esm2022/dl/dl.component.mjs +10 -10
  82. package/esm2022/dl/dl.module.mjs +4 -4
  83. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  84. package/esm2022/dropdown/dropdown-item.component.mjs +6 -6
  85. package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -3
  86. package/esm2022/dropdown/dropdown.component.mjs +6 -6
  87. package/esm2022/dropdown/dropdown.module.mjs +4 -4
  88. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +7 -7
  89. package/esm2022/empty-state/empty-state.component.mjs +16 -16
  90. package/esm2022/empty-state/empty-state.module.mjs +4 -4
  91. package/esm2022/file-upload/file-drop.mjs +3 -3
  92. package/esm2022/file-upload/file-upload.module.mjs +4 -4
  93. package/esm2022/file-upload/multiple-file-upload.component.mjs +5 -5
  94. package/esm2022/file-upload/single-file-upload.component.mjs +5 -5
  95. package/esm2022/form-field/cleaner.mjs +6 -6
  96. package/esm2022/form-field/form-field.mjs +11 -11
  97. package/esm2022/form-field/form-field.module.mjs +4 -4
  98. package/esm2022/form-field/hint.mjs +5 -5
  99. package/esm2022/form-field/password-hint.mjs +7 -7
  100. package/esm2022/form-field/password-toggle.mjs +5 -5
  101. package/esm2022/form-field/prefix.mjs +3 -3
  102. package/esm2022/form-field/stepper.mjs +8 -8
  103. package/esm2022/form-field/suffix.mjs +3 -3
  104. package/esm2022/form-field/validate.directive.mjs +3 -3
  105. package/esm2022/icon/icon-button.component.mjs +7 -7
  106. package/esm2022/icon/icon-item.component.mjs +7 -7
  107. package/esm2022/icon/icon.component.mjs +7 -7
  108. package/esm2022/icon/icon.module.mjs +13 -24
  109. package/esm2022/input/input-number-validators.mjs +6 -6
  110. package/esm2022/input/input-number.mjs +3 -3
  111. package/esm2022/input/input-password.mjs +3 -3
  112. package/esm2022/input/input.mjs +6 -6
  113. package/esm2022/input/input.module.mjs +4 -4
  114. package/esm2022/link/link.component.mjs +3 -3
  115. package/esm2022/link/link.module.mjs +4 -4
  116. package/esm2022/list/list-selection.component.mjs +11 -11
  117. package/esm2022/list/list.component.mjs +7 -7
  118. package/esm2022/list/list.module.mjs +4 -4
  119. package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
  120. package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
  121. package/esm2022/markdown/markdown.component.mjs +5 -5
  122. package/esm2022/markdown/markdown.module.mjs +4 -4
  123. package/esm2022/markdown/markdown.service.mjs +3 -3
  124. package/esm2022/modal/css-unit.pipe.mjs +3 -3
  125. package/esm2022/modal/modal-control.service.mjs +3 -3
  126. package/esm2022/modal/modal.component.mjs +5 -5
  127. package/esm2022/modal/modal.directive.mjs +53 -17
  128. package/esm2022/modal/modal.module.mjs +4 -4
  129. package/esm2022/modal/modal.service.mjs +3 -3
  130. package/esm2022/navbar/navbar-item.component.mjs +33 -33
  131. package/esm2022/navbar/navbar.component.mjs +11 -11
  132. package/esm2022/navbar/navbar.module.mjs +4 -4
  133. package/esm2022/navbar/vertical-navbar.component.mjs +5 -5
  134. package/esm2022/popover/popover-confirm.component.mjs +8 -8
  135. package/esm2022/popover/popover.component.mjs +8 -8
  136. package/esm2022/popover/popover.module.mjs +4 -4
  137. package/esm2022/progress-bar/progress-bar.component.mjs +10 -10
  138. package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
  139. package/esm2022/progress-spinner/progress-spinner.component.mjs +10 -10
  140. package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
  141. package/esm2022/radio/radio.component.mjs +7 -7
  142. package/esm2022/radio/radio.module.mjs +4 -4
  143. package/esm2022/risk-level/risk-level.component.mjs +4 -4
  144. package/esm2022/risk-level/risk-level.module.mjs +4 -4
  145. package/esm2022/scrollbar/scrollbar.component.mjs +6 -6
  146. package/esm2022/scrollbar/scrollbar.directive.mjs +3 -3
  147. package/esm2022/scrollbar/scrollbar.module.mjs +4 -4
  148. package/esm2022/select/select-option.directive.mjs +3 -3
  149. package/esm2022/select/select.component.mjs +6 -6
  150. package/esm2022/select/select.module.mjs +4 -4
  151. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  152. package/esm2022/sidebar/sidebar.module.mjs +4 -4
  153. package/esm2022/sidepanel/sidepanel-container.component.mjs +5 -5
  154. package/esm2022/sidepanel/sidepanel-directives.mjs +18 -18
  155. package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
  156. package/esm2022/sidepanel/sidepanel.service.mjs +3 -3
  157. package/esm2022/splitter/splitter.component.mjs +14 -14
  158. package/esm2022/splitter/splitter.module.mjs +4 -4
  159. package/esm2022/table/table.component.mjs +7 -7
  160. package/esm2022/table/table.module.mjs +4 -4
  161. package/esm2022/tabs/paginated-tab-header.mjs +3 -3
  162. package/esm2022/tabs/tab-body.component.mjs +6 -6
  163. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  164. package/esm2022/tabs/tab-group.component.mjs +33 -18
  165. package/esm2022/tabs/tab-header.component.mjs +16 -5
  166. package/esm2022/tabs/tab-label-wrapper.directive.mjs +8 -4
  167. package/esm2022/tabs/tab-label.directive.mjs +3 -3
  168. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +7 -7
  169. package/esm2022/tabs/tab.component.mjs +3 -3
  170. package/esm2022/tabs/tabs.module.mjs +15 -8
  171. package/esm2022/tags/tag-input.mjs +3 -3
  172. package/esm2022/tags/tag-list.component.mjs +4 -4
  173. package/esm2022/tags/tag.component.mjs +12 -12
  174. package/esm2022/tags/tag.module.mjs +4 -4
  175. package/esm2022/textarea/textarea.component.mjs +3 -3
  176. package/esm2022/textarea/textarea.module.mjs +4 -4
  177. package/esm2022/timepicker/timepicker.directive.mjs +3 -3
  178. package/esm2022/timepicker/timepicker.module.mjs +4 -4
  179. package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
  180. package/esm2022/timezone/timezone-option.component.mjs +5 -5
  181. package/esm2022/timezone/timezone-option.directive.mjs +3 -3
  182. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  183. package/esm2022/timezone/timezone.module.mjs +4 -4
  184. package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
  185. package/esm2022/title/title.directive.mjs +3 -3
  186. package/esm2022/title/title.module.mjs +4 -4
  187. package/esm2022/toast/toast-container.component.mjs +3 -3
  188. package/esm2022/toast/toast.component.mjs +8 -8
  189. package/esm2022/toast/toast.module.mjs +4 -4
  190. package/esm2022/toast/toast.service.mjs +3 -3
  191. package/esm2022/toggle/toggle.component.mjs +6 -6
  192. package/esm2022/toggle/toggle.module.mjs +4 -4
  193. package/esm2022/tooltip/tooltip.component.mjs +52 -15
  194. package/esm2022/tooltip/tooltip.module.mjs +15 -28
  195. package/esm2022/tree/node.mjs +3 -3
  196. package/esm2022/tree/outlet.mjs +3 -3
  197. package/esm2022/tree/padding.directive.mjs +3 -3
  198. package/esm2022/tree/toggle.mjs +14 -14
  199. package/esm2022/tree/tree-base.mjs +6 -6
  200. package/esm2022/tree/tree-option.component.mjs +5 -5
  201. package/esm2022/tree/tree-selection.component.mjs +5 -5
  202. package/esm2022/tree/tree.mjs +5 -5
  203. package/esm2022/tree/tree.module.mjs +4 -4
  204. package/esm2022/tree-select/tree-select.component.mjs +6 -6
  205. package/esm2022/tree-select/tree-select.module.mjs +4 -4
  206. package/fesm2022/koobiq-components-alert.mjs +17 -17
  207. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  208. package/fesm2022/koobiq-components-autocomplete.mjs +15 -15
  209. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  210. package/fesm2022/koobiq-components-badge.mjs +14 -14
  211. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  212. package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
  213. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  214. package/fesm2022/koobiq-components-button.mjs +12 -12
  215. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  216. package/fesm2022/koobiq-components-checkbox.mjs +11 -11
  217. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-code-block.mjs +12 -12
  219. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-core.mjs +171 -162
  221. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  222. package/fesm2022/koobiq-components-datepicker.mjs +37 -37
  223. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  224. package/fesm2022/koobiq-components-divider.mjs +8 -8
  225. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  226. package/fesm2022/koobiq-components-dl.mjs +14 -14
  227. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  228. package/fesm2022/koobiq-components-dropdown.mjs +20 -20
  229. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  230. package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
  231. package/fesm2022/koobiq-components-empty-state.mjs +20 -20
  232. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  233. package/fesm2022/koobiq-components-file-upload.mjs +15 -15
  234. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  235. package/fesm2022/koobiq-components-form-field.mjs +51 -51
  236. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  237. package/fesm2022/koobiq-components-icon.mjs +30 -41
  238. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  239. package/fesm2022/koobiq-components-input.mjs +22 -22
  240. package/fesm2022/koobiq-components-link.mjs +7 -7
  241. package/fesm2022/koobiq-components-list.mjs +22 -22
  242. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  243. package/fesm2022/koobiq-components-loader-overlay.mjs +17 -17
  244. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  245. package/fesm2022/koobiq-components-markdown.mjs +12 -12
  246. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  247. package/fesm2022/koobiq-components-modal.mjs +64 -32
  248. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  249. package/fesm2022/koobiq-components-navbar.mjs +52 -52
  250. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  251. package/fesm2022/koobiq-components-popover.mjs +18 -18
  252. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  253. package/fesm2022/koobiq-components-progress-bar.mjs +14 -14
  254. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  255. package/fesm2022/koobiq-components-progress-spinner.mjs +14 -14
  256. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  257. package/fesm2022/koobiq-components-radio.mjs +11 -11
  258. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  259. package/fesm2022/koobiq-components-risk-level.mjs +8 -8
  260. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  261. package/fesm2022/koobiq-components-scrollbar.mjs +12 -12
  262. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  263. package/fesm2022/koobiq-components-select.mjs +12 -12
  264. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  265. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  266. package/fesm2022/koobiq-components-sidepanel.mjs +28 -28
  267. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  268. package/fesm2022/koobiq-components-splitter.mjs +17 -17
  269. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  270. package/fesm2022/koobiq-components-table.mjs +11 -11
  271. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  272. package/fesm2022/koobiq-components-tabs.mjs +93 -56
  273. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  274. package/fesm2022/koobiq-components-tags.mjs +23 -23
  275. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  276. package/fesm2022/koobiq-components-textarea.mjs +7 -7
  277. package/fesm2022/koobiq-components-timepicker.mjs +7 -7
  278. package/fesm2022/koobiq-components-timezone.mjs +26 -26
  279. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  280. package/fesm2022/koobiq-components-title.mjs +7 -7
  281. package/fesm2022/koobiq-components-toast.mjs +17 -17
  282. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  283. package/fesm2022/koobiq-components-toggle.mjs +9 -9
  284. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  285. package/fesm2022/koobiq-components-tooltip.mjs +67 -42
  286. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  287. package/fesm2022/koobiq-components-tree-select.mjs +9 -9
  288. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  289. package/fesm2022/koobiq-components-tree.mjs +47 -47
  290. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  291. package/file-upload/file-upload-tokens.scss +142 -145
  292. package/file-upload/multiple-file-upload.component.scss +2 -8
  293. package/form-field/form-field-tokens.scss +70 -75
  294. package/form-field/hint-tokens.scss +49 -54
  295. package/icon/icon-button-tokens.scss +54 -56
  296. package/icon/icon-button.component.d.ts +1 -1
  297. package/icon/icon-item-tokens.scss +46 -44
  298. package/icon/icon-item.component.d.ts +1 -1
  299. package/icon/icon-tokens.scss +14 -12
  300. package/icon/icon.component.d.ts +1 -1
  301. package/icon/icon.module.d.ts +1 -3
  302. package/input/input-tokens.scss +10 -13
  303. package/link/link-tokens.scss +53 -60
  304. package/list/list-tokens.scss +80 -89
  305. package/loader-overlay/loader-overlay-tokens.scss +50 -51
  306. package/markdown/markdown-tokens.scss +203 -234
  307. package/modal/modal-tokens.scss +38 -44
  308. package/modal/modal.directive.d.ts +3 -0
  309. package/navbar/navbar-tokens.scss +49 -74
  310. package/package.json +12 -9
  311. package/popover/popover-tokens.scss +38 -48
  312. package/prebuilt-themes/dark-theme.css +1 -1
  313. package/prebuilt-themes/light-theme.css +1 -1
  314. package/prebuilt-themes/theme.css +1 -0
  315. package/progress-bar/progress-bar-tokens.scss +26 -31
  316. package/progress-spinner/progress-spinner-tokens.scss +26 -31
  317. package/radio/radio-tokens.scss +115 -128
  318. package/risk-level/risk-level-tokens.scss +56 -59
  319. package/schematics/collection.json +5 -0
  320. package/schematics/new-icons-pack/data.js +2303 -0
  321. package/schematics/new-icons-pack/index.js +120 -0
  322. package/schematics/new-icons-pack/schema.json +25 -0
  323. package/schematics/ng-add/index.js +14 -40
  324. package/schematics/utils/package-config.js +65 -0
  325. package/scrollbar/scrollbar-tokens.scss +16 -14
  326. package/scrollbar/scrollbar.directive.d.ts +1 -24
  327. package/select/select-tokens.scss +30 -50
  328. package/sidepanel/sidepanel-tokens.scss +34 -40
  329. package/splitter/splitter-tokens.scss +1 -7
  330. package/table/table-tokens.scss +16 -37
  331. package/tabs/_tabs-common.scss +29 -0
  332. package/tabs/_tabs-theme.scss +12 -0
  333. package/tabs/tab-group.component.d.ts +7 -2
  334. package/tabs/tab-header.component.d.ts +4 -1
  335. package/tabs/tab-header.scss +28 -0
  336. package/tabs/tabs-tokens.scss +167 -110
  337. package/tabs/tabs.module.d.ts +2 -1
  338. package/tags/tag-input-tokens.scss +12 -15
  339. package/tags/tag-tokens.scss +139 -144
  340. package/textarea/textarea-tokens.scss +10 -13
  341. package/timezone/timezone-option-tokens.scss +60 -39
  342. package/toast/toast-tokens.scss +59 -66
  343. package/toggle/toggle-tokens.scss +120 -129
  344. package/tooltip/tooltip-tokens.scss +48 -55
  345. package/tooltip/tooltip.component.d.ts +11 -4
  346. package/tooltip/tooltip.module.d.ts +1 -3
  347. package/tree/tree-tokens.scss +78 -83
  348. package/tree-select/tree-select-tokens.scss +13 -53
@@ -13,10 +13,10 @@ import * as i4 from "./tab-label-wrapper.directive";
13
13
  import * as i5 from "./tab-body.component";
14
14
  import * as i6 from "./tab-header.component";
15
15
  export class KbqAlignTabsCenterCssStyler {
16
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqAlignTabsCenterCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
17
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqAlignTabsCenterCssStyler, selector: "kbq-tab-group[kbq-align-tabs-center], [kbq-tab-nav-bar][kbq-align-tabs-center]", host: { classAttribute: "kbq-tab-group_align-labels-center" }, ngImport: i0 }); }
16
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqAlignTabsCenterCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqAlignTabsCenterCssStyler, selector: "kbq-tab-group[kbq-align-tabs-center], [kbq-tab-nav-bar][kbq-align-tabs-center]", host: { classAttribute: "kbq-tab-group_align-labels-center" }, ngImport: i0 }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqAlignTabsCenterCssStyler, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqAlignTabsCenterCssStyler, decorators: [{
20
20
  type: Directive,
21
21
  args: [{
22
22
  selector: 'kbq-tab-group[kbq-align-tabs-center], [kbq-tab-nav-bar][kbq-align-tabs-center]',
@@ -24,10 +24,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
24
24
  }]
25
25
  }] });
26
26
  export class KbqAlignTabsEndCssStyler {
27
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqAlignTabsEndCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqAlignTabsEndCssStyler, selector: "kbq-tab-group[kbq-align-tabs-end], [kbq-tab-nav-bar][kbq-align-tabs-end]", host: { classAttribute: "kbq-tab-group_align-labels-end" }, ngImport: i0 }); }
27
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqAlignTabsEndCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqAlignTabsEndCssStyler, selector: "kbq-tab-group[kbq-align-tabs-end], [kbq-tab-nav-bar][kbq-align-tabs-end]", host: { classAttribute: "kbq-tab-group_align-labels-end" }, ngImport: i0 }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqAlignTabsEndCssStyler, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqAlignTabsEndCssStyler, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: 'kbq-tab-group[kbq-align-tabs-end], [kbq-tab-nav-bar][kbq-align-tabs-end]',
@@ -35,10 +35,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
35
35
  }]
36
36
  }] });
37
37
  export class KbqStretchTabsCssStyler {
38
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqStretchTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqStretchTabsCssStyler, selector: "kbq-tab-group[kbq-stretch-tabs], [kbq-tab-nav-bar][kbq-stretch-tabs]", host: { classAttribute: "kbq-tab-group_stretch-labels" }, ngImport: i0 }); }
38
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqStretchTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
39
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqStretchTabsCssStyler, selector: "kbq-tab-group[kbq-stretch-tabs], [kbq-tab-nav-bar][kbq-stretch-tabs]", host: { classAttribute: "kbq-tab-group_stretch-labels" }, ngImport: i0 }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqStretchTabsCssStyler, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqStretchTabsCssStyler, decorators: [{
42
42
  type: Directive,
43
43
  args: [{
44
44
  selector: 'kbq-tab-group[kbq-stretch-tabs], [kbq-tab-nav-bar][kbq-stretch-tabs]',
@@ -46,16 +46,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
46
46
  }]
47
47
  }] });
48
48
  export class KbqVerticalTabsCssStyler {
49
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqVerticalTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.0", type: KbqVerticalTabsCssStyler, selector: "kbq-tab-group[vertical], [kbq-tab-nav-bar][vertical]", host: { classAttribute: "kbq-tab-group_vertical" }, ngImport: i0 }); }
49
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqVerticalTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqVerticalTabsCssStyler, selector: "kbq-tab-group[vertical], [kbq-tab-nav-bar][vertical]", host: { classAttribute: "kbq-tab-group_vertical" }, ngImport: i0 }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqVerticalTabsCssStyler, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqVerticalTabsCssStyler, decorators: [{
53
53
  type: Directive,
54
54
  args: [{
55
55
  selector: 'kbq-tab-group[vertical], [kbq-tab-nav-bar][vertical]',
56
56
  host: { class: 'kbq-tab-group_vertical' }
57
57
  }]
58
58
  }] });
59
+ export class KbqUnderlinedTabsCssStyler {
60
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqUnderlinedTabsCssStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqUnderlinedTabsCssStyler, selector: "kbq-tab-group[underlined], [kbq-tab-nav-bar][underlined]", host: { classAttribute: "kbq-tab-group_underlined" }, ngImport: i0 }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqUnderlinedTabsCssStyler, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: 'kbq-tab-group[underlined], [kbq-tab-nav-bar][underlined]',
67
+ host: { class: 'kbq-tab-group_underlined' }
68
+ }]
69
+ }] });
59
70
  /** Used to generate unique ID's for each tab component */
60
71
  let nextId = 0;
61
72
  /** A simple change event emitted on focus or selection changes. */
@@ -108,7 +119,7 @@ export class KbqTabGroup extends KbqTabGroupMixinBase {
108
119
  set activeTab(value) {
109
120
  this.attributeToSelectBy = value;
110
121
  }
111
- constructor(elementRef, changeDetectorRef, vertical, defaultConfig) {
122
+ constructor(elementRef, changeDetectorRef, vertical, underlined, defaultConfig) {
112
123
  super(elementRef);
113
124
  this.changeDetectorRef = changeDetectorRef;
114
125
  this.resizeStream = new Subject();
@@ -141,6 +152,7 @@ export class KbqTabGroup extends KbqTabGroupMixinBase {
141
152
  this.tabHeader.items.forEach((headerTab) => headerTab.checkOverflow());
142
153
  };
143
154
  this.vertical = coerceBooleanProperty(vertical);
155
+ this.underlined = coerceBooleanProperty(underlined);
144
156
  this.groupId = nextId++;
145
157
  this.animationDuration = defaultConfig?.animationDuration || '0ms';
146
158
  this.subscribeToResize();
@@ -323,10 +335,10 @@ export class KbqTabGroup extends KbqTabGroupMixinBase {
323
335
  }
324
336
  return this.tabs?.toArray().indexOf(currentSelectedTab);
325
337
  }
326
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'vertical', attribute: true }, { token: KBQ_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
327
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.0", type: KbqTabGroup, selector: "kbq-tab-group", inputs: { disabled: "disabled", transparent: "transparent", onSurface: "onSurface", dynamicHeight: "dynamicHeight", selectedIndex: "selectedIndex", activeTab: "activeTab", headerPosition: "headerPosition", animationDuration: "animationDuration" }, outputs: { selectedIndexChange: "selectedIndexChange", activeTabChange: "activeTabChange", focusChange: "focusChange", animationDone: "animationDone", selectedTabChange: "selectedTabChange" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-tab-group_filled": "!transparent", "class.kbq-tab-group_transparent": "transparent", "class.kbq-tab-group_on-background": "!onSurface", "class.kbq-tab-group_on-surface": "onSurface", "class.kbq-tab-group_dynamic-height": "dynamicHeight", "class.kbq-tab-group_inverted-header": "headerPosition === \"below\"" }, classAttribute: "kbq-tab-group" }, providers: [{ provide: KBQ_PARENT_ANIMATION_COMPONENT, useExisting: forwardRef((() => this)) }], queries: [{ propertyName: "tabs", predicate: KbqTab }], viewQueries: [{ propertyName: "tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], exportAs: ["kbqTabGroup"], usesInheritance: true, ngImport: i0, template: "<kbq-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex\"\n [vertical]=\"vertical\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"onSelectFocusedIndex($event)\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <div\n cdkMonitorElementFocus\n kbqTabLabelWrapper\n class=\"kbq-tab-label\"\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-selected]=\"selectedIndex === i\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-tab-label_horizontal]=\"!vertical\"\n [class.kbq-tab-label_vertical]=\"vertical\"\n [disabled]=\"tab.disabled\"\n [id]=\"getTabLabelId(i)\"\n [kbqPlacement]=\"tab.tooltipPlacement\"\n [kbqTooltip]=\"tab.tooltipTitle\"\n [kbqTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [kbqTrigger]=\"'hover, focus'\"\n [tab]=\"tab\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n >\n <div\n #labelContent\n class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\"\n >\n <!-- If there is a label template, use it. -->\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n }\n <!-- If there is not a label template, fall back to the text label. -->\n @if (!tab.templateLabel) {\n {{ tab.textLabel }}\n }\n </div>\n </div>\n }\n</kbq-tab-header>\n\n<div\n #tabBodyWrapper\n class=\"kbq-tab-body__wrapper\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <kbq-tab-body\n [animationDuration]=\"animationDuration\"\n [class.kbq-tab-body__active]=\"selectedIndex === i\"\n [content]=\"tab.content!\"\n [id]=\"getTabContentId(i)\"\n [origin]=\"tab.origin!\"\n [position]=\"tab.position!\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\"\n />\n }\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-list__content{gap:var(--kbq-tabs-size-tab-stack-vertical-content-gap-vertical, 8px) 0}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden}.kbq-tab-body.kbq-tab-body__active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n", ".kbq-tab-group,.kbq-tab-nav-bar{--kbq-tabs-size-tab-item-padding-horizontal: 12px;--kbq-tabs-size-tab-item-padding-vertical: 6px;--kbq-tabs-size-tab-item-content-gap-horizontal: 4px;--kbq-tabs-size-tab-item-border-radius: 8px;--kbq-tabs-size-tab-item-focus-outline-width: 2px;--kbq-tabs-size-tab-stack-horizontal-border-radius: 8px;--kbq-tabs-size-tab-stack-vertical-content-gap-vertical: 8px;--kbq-tabs-font-text-font-size: 14px;--kbq-tabs-font-text-line-height: 20px;--kbq-tabs-font-text-letter-spacing: -.006em;--kbq-tabs-font-text-font-weight: 500;--kbq-tabs-font-text-text-transform: null;--kbq-tabs-font-text-font-feature-settings: \"calt\", \"kern\", \"liga\", \"ss01\", \"ss04\";--kbq-tabs-font-text-font-family: var(--kbq-typography-text-normal-medium-font-family)}:root{--kbq-typography-text-normal-medium-font-family: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif}:where(.kbq-light,.theme-light,.kbq-theme-light){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-background-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-background-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-stack-filled-on-background-background: hsla(0, 0%, 100%, 100%);--kbq-tabs-tab-stack-filled-on-surface-background: hsla(229, 15%, 92%, 100%);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}:where(.kbq-dark,.theme-dark,.kbq-theme-dark){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-background-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-background-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-stack-filled-on-background-background: hsla(229, 15%, 12%, 100%);--kbq-tabs-tab-stack-filled-on-surface-background: hsla(229, 15%, 25%, 100%);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i3.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: i4.KbqTabLabelWrapper, selector: "[kbqTabLabelWrapper]", inputs: ["disabled", "tab"] }, { kind: "component", type: i5.KbqTabBody, selector: "kbq-tab-body", inputs: ["position", "content", "origin", "animationDuration"], outputs: ["onCentering", "beforeCentering", "afterLeavingCenter", "onCentered"] }, { kind: "component", type: i6.KbqTabHeader, selector: "kbq-tab-header", inputs: ["selectedIndex", "vertical"], outputs: ["selectFocusedIndex", "indexFocused"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
338
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'vertical', attribute: true }, { token: 'underlined', attribute: true }, { token: KBQ_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
339
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqTabGroup, selector: "kbq-tab-group", inputs: { disabled: "disabled", transparent: "transparent", onSurface: "onSurface", dynamicHeight: "dynamicHeight", selectedIndex: "selectedIndex", activeTab: "activeTab", headerPosition: "headerPosition", animationDuration: "animationDuration" }, outputs: { selectedIndexChange: "selectedIndexChange", activeTabChange: "activeTabChange", focusChange: "focusChange", animationDone: "animationDone", selectedTabChange: "selectedTabChange" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-tab-group_filled": "!transparent", "class.kbq-tab-group_transparent": "transparent", "class.kbq-tab-group_on-background": "!onSurface", "class.kbq-tab-group_on-surface": "onSurface", "class.kbq-tab-group_dynamic-height": "dynamicHeight", "class.kbq-tab-group_inverted-header": "headerPosition === \"below\"" }, classAttribute: "kbq-tab-group" }, providers: [{ provide: KBQ_PARENT_ANIMATION_COMPONENT, useExisting: forwardRef((() => this)) }], queries: [{ propertyName: "tabs", predicate: KbqTab }], viewQueries: [{ propertyName: "tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], exportAs: ["kbqTabGroup"], usesInheritance: true, ngImport: i0, template: "<kbq-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex\"\n [underlined]=\"underlined\"\n [vertical]=\"vertical\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"onSelectFocusedIndex($event)\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <div\n cdkMonitorElementFocus\n kbqTabLabelWrapper\n class=\"kbq-tab-label\"\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-selected]=\"selectedIndex === i\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-tab-label_horizontal]=\"!vertical\"\n [class.kbq-tab-label_underlined]=\"underlined\"\n [class.kbq-tab-label_vertical]=\"vertical\"\n [disabled]=\"tab.disabled\"\n [id]=\"getTabLabelId(i)\"\n [kbqPlacement]=\"tab.tooltipPlacement\"\n [kbqTooltip]=\"tab.tooltipTitle\"\n [kbqTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [kbqTrigger]=\"'hover, focus'\"\n [tab]=\"tab\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n >\n <div\n #labelContent\n class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\"\n >\n <!-- If there is a label template, use it. -->\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n }\n <!-- If there is not a label template, fall back to the text label. -->\n @if (!tab.templateLabel) {\n {{ tab.textLabel }}\n }\n </div>\n </div>\n }\n</kbq-tab-header>\n\n<div\n #tabBodyWrapper\n class=\"kbq-tab-body__wrapper\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <kbq-tab-body\n [animationDuration]=\"animationDuration\"\n [class.kbq-tab-body__active]=\"selectedIndex === i\"\n [content]=\"tab.content!\"\n [id]=\"getTabContentId(i)\"\n [origin]=\"tab.origin!\"\n [position]=\"tab.position!\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\"\n />\n }\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-list__content{gap:var(--kbq-tabs-size-tab-stack-vertical-content-gap-vertical, 8px) 0}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden}.kbq-tab-body.kbq-tab-body__active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n", ".kbq-tab-group,.kbq-tab-nav-bar{--kbq-tabs-size-tab-item-padding-horizontal: var(--kbq-size-m);--kbq-tabs-size-tab-item-padding-vertical: var(--kbq-size-xs);--kbq-tabs-size-tab-item-content-gap-horizontal: var(--kbq-size-xxs);--kbq-tabs-size-tab-item-border-radius: var(--kbq-size-s);--kbq-tabs-size-tab-item-focus-outline-width: var(--kbq-size-3xs);--kbq-tabs-size-tab-stack-horizontal-border-radius: var(--kbq-size-s);--kbq-tabs-size-tab-stack-vertical-content-gap-vertical: var(--kbq-size-s);--kbq-tabs-font-text-font-size: var(--kbq-typography-text-normal-medium-font-size);--kbq-tabs-font-text-line-height: var(--kbq-typography-text-normal-medium-line-height);--kbq-tabs-font-text-letter-spacing: var(--kbq-typography-text-normal-medium-letter-spacing);--kbq-tabs-font-text-font-weight: var(--kbq-typography-text-normal-medium-font-weight);--kbq-tabs-font-text-font-family: var(--kbq-typography-text-normal-medium-font-family);--kbq-tabs-font-text-text-transform: var(--kbq-typography-text-normal-medium-text-transform);--kbq-tabs-font-text-font-feature-settings: var(--kbq-typography-text-normal-medium-font-feature-settings)}:where(.kbq-light,.theme-light,.kbq-theme-light){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-background-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: var(--kbq-states-background-transparent-active);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: var( --kbq-states-background-transparent-hover );--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: var( --kbq-states-line-focus-theme );--kbq-tabs-tab-item-transparent-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-stack-filled-on-background-background: var(--kbq-background-bg);--kbq-tabs-tab-stack-filled-on-surface-background: var(--kbq-background-contrast-fade);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}:where(.kbq-dark,.theme-dark,.kbq-theme-dark){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-background-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: var(--kbq-states-background-transparent-active);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: var( --kbq-states-background-transparent-hover );--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: var( --kbq-states-line-focus-theme );--kbq-tabs-tab-item-transparent-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-stack-filled-on-background-background: var(--kbq-background-bg);--kbq-tabs-tab-stack-filled-on-surface-background: var(--kbq-background-contrast-fade);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i2.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i3.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "directive", type: i4.KbqTabLabelWrapper, selector: "[kbqTabLabelWrapper]", inputs: ["disabled", "tab"] }, { kind: "component", type: i5.KbqTabBody, selector: "kbq-tab-body", inputs: ["position", "content", "origin", "animationDuration"], outputs: ["onCentering", "beforeCentering", "afterLeavingCenter", "onCentered"] }, { kind: "component", type: i6.KbqTabHeader, selector: "kbq-tab-header", inputs: ["selectedIndex", "vertical", "underlined"], outputs: ["selectFocusedIndex", "indexFocused"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
328
340
  }
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqTabGroup, decorators: [{
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTabGroup, decorators: [{
330
342
  type: Component,
331
343
  args: [{ selector: 'kbq-tab-group', exportAs: 'kbqTabGroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {
332
344
  class: 'kbq-tab-group',
@@ -337,10 +349,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
337
349
  '[class.kbq-tab-group_dynamic-height]': 'dynamicHeight',
338
350
  '[class.kbq-tab-group_inverted-header]': 'headerPosition === "below"',
339
351
  '(window:resize)': 'resizeStream.next($event)'
340
- }, providers: [{ provide: KBQ_PARENT_ANIMATION_COMPONENT, useExisting: forwardRef((() => this)) }], template: "<kbq-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex\"\n [vertical]=\"vertical\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"onSelectFocusedIndex($event)\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <div\n cdkMonitorElementFocus\n kbqTabLabelWrapper\n class=\"kbq-tab-label\"\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-selected]=\"selectedIndex === i\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-tab-label_horizontal]=\"!vertical\"\n [class.kbq-tab-label_vertical]=\"vertical\"\n [disabled]=\"tab.disabled\"\n [id]=\"getTabLabelId(i)\"\n [kbqPlacement]=\"tab.tooltipPlacement\"\n [kbqTooltip]=\"tab.tooltipTitle\"\n [kbqTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [kbqTrigger]=\"'hover, focus'\"\n [tab]=\"tab\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n >\n <div\n #labelContent\n class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\"\n >\n <!-- If there is a label template, use it. -->\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n }\n <!-- If there is not a label template, fall back to the text label. -->\n @if (!tab.templateLabel) {\n {{ tab.textLabel }}\n }\n </div>\n </div>\n }\n</kbq-tab-header>\n\n<div\n #tabBodyWrapper\n class=\"kbq-tab-body__wrapper\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <kbq-tab-body\n [animationDuration]=\"animationDuration\"\n [class.kbq-tab-body__active]=\"selectedIndex === i\"\n [content]=\"tab.content!\"\n [id]=\"getTabContentId(i)\"\n [origin]=\"tab.origin!\"\n [position]=\"tab.position!\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\"\n />\n }\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-list__content{gap:var(--kbq-tabs-size-tab-stack-vertical-content-gap-vertical, 8px) 0}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden}.kbq-tab-body.kbq-tab-body__active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n", ".kbq-tab-group,.kbq-tab-nav-bar{--kbq-tabs-size-tab-item-padding-horizontal: 12px;--kbq-tabs-size-tab-item-padding-vertical: 6px;--kbq-tabs-size-tab-item-content-gap-horizontal: 4px;--kbq-tabs-size-tab-item-border-radius: 8px;--kbq-tabs-size-tab-item-focus-outline-width: 2px;--kbq-tabs-size-tab-stack-horizontal-border-radius: 8px;--kbq-tabs-size-tab-stack-vertical-content-gap-vertical: 8px;--kbq-tabs-font-text-font-size: 14px;--kbq-tabs-font-text-line-height: 20px;--kbq-tabs-font-text-letter-spacing: -.006em;--kbq-tabs-font-text-font-weight: 500;--kbq-tabs-font-text-text-transform: null;--kbq-tabs-font-text-font-feature-settings: \"calt\", \"kern\", \"liga\", \"ss01\", \"ss04\";--kbq-tabs-font-text-font-family: var(--kbq-typography-text-normal-medium-font-family)}:root{--kbq-typography-text-normal-medium-font-family: Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif}:where(.kbq-light,.theme-light,.kbq-theme-light){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-background-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-background-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: hsla(229, 15%, 15%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: hsla(229, 15%, 50%, 8%);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: hsla(229, 15%, 15%, 32%);--kbq-tabs-tab-stack-filled-on-background-background: hsla(0, 0%, 100%, 100%);--kbq-tabs-tab-stack-filled-on-surface-background: hsla(229, 15%, 92%, 100%);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}:where(.kbq-dark,.theme-dark,.kbq-theme-dark){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-background-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-background-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: hsla(229, 15%, 80%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: hsla(229, 15%, 50%, 16%);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: hsla(216, 100%, 60%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: hsla(229, 100%, 85%, 15%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: hsla(229, 15%, 40%, 100%);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: hsla(229, 15%, 30%, 100%);--kbq-tabs-tab-stack-filled-on-background-background: hsla(229, 15%, 12%, 100%);--kbq-tabs-tab-stack-filled-on-surface-background: hsla(229, 15%, 25%, 100%);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}\n"] }]
352
+ }, providers: [{ provide: KBQ_PARENT_ANIMATION_COMPONENT, useExisting: forwardRef((() => this)) }], template: "<kbq-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex\"\n [underlined]=\"underlined\"\n [vertical]=\"vertical\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"onSelectFocusedIndex($event)\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <div\n cdkMonitorElementFocus\n kbqTabLabelWrapper\n class=\"kbq-tab-label\"\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.kbq-selected]=\"selectedIndex === i\"\n [class.kbq-tab-label_empty]=\"tab.empty\"\n [class.kbq-tab-label_horizontal]=\"!vertical\"\n [class.kbq-tab-label_underlined]=\"underlined\"\n [class.kbq-tab-label_vertical]=\"vertical\"\n [disabled]=\"tab.disabled\"\n [id]=\"getTabLabelId(i)\"\n [kbqPlacement]=\"tab.tooltipPlacement\"\n [kbqTooltip]=\"tab.tooltipTitle\"\n [kbqTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [kbqTrigger]=\"'hover, focus'\"\n [tab]=\"tab\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n >\n <div\n #labelContent\n class=\"kbq-tab-label__content\"\n [class.kbq-tab-label__template]=\"tab.templateLabel\"\n >\n <!-- If there is a label template, use it. -->\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n }\n <!-- If there is not a label template, fall back to the text label. -->\n @if (!tab.templateLabel) {\n {{ tab.textLabel }}\n }\n </div>\n </div>\n }\n</kbq-tab-header>\n\n<div\n #tabBodyWrapper\n class=\"kbq-tab-body__wrapper\"\n>\n @for (tab of tabs; track tab; let i = $index) {\n <kbq-tab-body\n [animationDuration]=\"animationDuration\"\n [class.kbq-tab-body__active]=\"selectedIndex === i\"\n [content]=\"tab.content!\"\n [id]=\"getTabContentId(i)\"\n [origin]=\"tab.origin!\"\n [position]=\"tab.position!\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\"\n />\n }\n</div>\n", styles: [".kbq-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:left}.kbq-tab-group.kbq-tab-group_inverted-header{flex-direction:column-reverse}.kbq-tab-group_vertical{flex-direction:row}.kbq-tab-group_vertical .kbq-tab-list__content{gap:var(--kbq-tabs-size-tab-stack-vertical-content-gap-vertical, 8px) 0}.kbq-tab-group_vertical .kbq-tab-header__content{overflow-y:auto}.kbq-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.kbq-tab-body{inset:0;position:absolute;display:block;overflow:hidden}.kbq-tab-body.kbq-tab-body__active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.kbq-tab-group.kbq-tab-group_dynamic-height .kbq-tab-body.kbq-tab-body__active{overflow-y:hidden}\n", ".kbq-tab-group,.kbq-tab-nav-bar{--kbq-tabs-size-tab-item-padding-horizontal: var(--kbq-size-m);--kbq-tabs-size-tab-item-padding-vertical: var(--kbq-size-xs);--kbq-tabs-size-tab-item-content-gap-horizontal: var(--kbq-size-xxs);--kbq-tabs-size-tab-item-border-radius: var(--kbq-size-s);--kbq-tabs-size-tab-item-focus-outline-width: var(--kbq-size-3xs);--kbq-tabs-size-tab-stack-horizontal-border-radius: var(--kbq-size-s);--kbq-tabs-size-tab-stack-vertical-content-gap-vertical: var(--kbq-size-s);--kbq-tabs-font-text-font-size: var(--kbq-typography-text-normal-medium-font-size);--kbq-tabs-font-text-line-height: var(--kbq-typography-text-normal-medium-line-height);--kbq-tabs-font-text-letter-spacing: var(--kbq-typography-text-normal-medium-letter-spacing);--kbq-tabs-font-text-font-weight: var(--kbq-typography-text-normal-medium-font-weight);--kbq-tabs-font-text-font-family: var(--kbq-typography-text-normal-medium-font-family);--kbq-tabs-font-text-text-transform: var(--kbq-typography-text-normal-medium-text-transform);--kbq-tabs-font-text-font-feature-settings: var(--kbq-typography-text-normal-medium-font-feature-settings)}:where(.kbq-light,.theme-light,.kbq-theme-light){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-background-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: var(--kbq-states-background-transparent-active);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: var( --kbq-states-background-transparent-hover );--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: var( --kbq-states-line-focus-theme );--kbq-tabs-tab-item-transparent-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-stack-filled-on-background-background: var(--kbq-background-bg);--kbq-tabs-tab-stack-filled-on-surface-background: var(--kbq-background-contrast-fade);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}:where(.kbq-dark,.theme-dark,.kbq-theme-dark){--kbq-tabs-tab-item-filled-on-background-default-background: transparent;--kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-background-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-background-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-default-background: transparent;--kbq-tabs-tab-item-filled-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-filled-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-filled-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-filled-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-filled-on-surface-states-selected-background: var(--kbq-states-background-transparent-active);--kbq-tabs-tab-item-filled-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-filled-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-filled-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-default-background: transparent;--kbq-tabs-tab-item-transparent-on-background-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-background-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-background-states-hover-background: var( --kbq-states-background-transparent-hover );--kbq-tabs-tab-item-transparent-on-background-states-focused-focus-outline-color: var( --kbq-states-line-focus-theme );--kbq-tabs-tab-item-transparent-on-background-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-background-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-background-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-background-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-default-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-default-text-color: var(--kbq-foreground-contrast);--kbq-tabs-tab-item-transparent-on-surface-default-icon-color: var(--kbq-icon-contrast);--kbq-tabs-tab-item-transparent-on-surface-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-tabs-tab-item-transparent-on-surface-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-tabs-tab-item-transparent-on-surface-states-selected-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-hover-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-background: var( --kbq-states-background-transparent-active );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-text-color: var( --kbq-states-foreground-disabled );--kbq-tabs-tab-item-transparent-on-surface-states-selected-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-background: transparent;--kbq-tabs-tab-item-transparent-on-surface-states-disabled-text-color: var(--kbq-states-foreground-disabled);--kbq-tabs-tab-item-transparent-on-surface-states-disabled-icon-color: var(--kbq-states-icon-disabled);--kbq-tabs-tab-stack-filled-on-background-background: var(--kbq-background-bg);--kbq-tabs-tab-stack-filled-on-surface-background: var(--kbq-background-contrast-fade);--kbq-tabs-tab-stack-transparent-on-background-background: transparent;--kbq-tabs-tab-stack-transparent-on-surface-background: transparent}\n"] }]
341
353
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
342
354
  type: Attribute,
343
355
  args: ['vertical']
356
+ }] }, { type: undefined, decorators: [{
357
+ type: Attribute,
358
+ args: ['underlined']
344
359
  }] }, { type: undefined, decorators: [{
345
360
  type: Inject,
346
361
  args: [KBQ_TABS_CONFIG]
@@ -380,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
380
395
  }], selectedTabChange: [{
381
396
  type: Output
382
397
  }] } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFicy90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90YWJzL3RhYi1ncm91cC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFJSCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsOEJBQThCLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQU16QyxNQUFNLE9BQU8sMkJBQTJCO2lJQUEzQiwyQkFBMkI7cUhBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0ZBQWdGO29CQUMxRixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUNBQW1DLEVBQUU7aUJBQ3ZEOztBQU9ELE1BQU0sT0FBTyx3QkFBd0I7aUlBQXhCLHdCQUF3QjtxSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwRUFBMEU7b0JBQ3BGLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTtpQkFDcEQ7O0FBT0QsTUFBTSxPQUFPLHVCQUF1QjtpSUFBdkIsdUJBQXVCO3FIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNFQUFzRTtvQkFDaEYsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLDhCQUE4QixFQUFFO2lCQUNsRDs7QUFPRCxNQUFNLE9BQU8sd0JBQXdCO2lJQUF4Qix3QkFBd0I7cUhBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0RBQXNEO29CQUNoRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7aUJBQzVDOztBQUdELDBEQUEwRDtBQUMxRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZixtRUFBbUU7QUFDbkUsTUFBTSxPQUFPLGlCQUFpQjtDQUs3QjtBQVdELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUU3RSxrREFBa0Q7QUFDbEQsb0JBQW9CO0FBQ3BCLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQW1CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0NBQ2hEO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUE0QyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFJNUc7OztHQUdHO0FBcUJILE1BQU0sT0FBTyxXQUNULFNBQVEsb0JBQW9CO0lBZ0I1Qix1RUFBdUU7SUFDdkUsSUFDSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUFjO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUlELG1DQUFtQztJQUNuQyxJQUNJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEtBQW9CO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFJRCxJQUNJLFNBQVM7UUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdEMsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUMvRSxLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxDQUNILElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztvQkFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNoQixJQUFJLENBQ1AsQ0FBQztZQUNOLEtBQUssVUFBVTtnQkFDWCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDekQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxLQUE0QjtRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUF3Q0QsWUFDSSxVQUFzQixFQUNMLGlCQUFvQyxFQUM5QixRQUFnQixFQUNGLGFBQThCO1FBRW5FLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUpELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFuR2hELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQVVwQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBWTVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBWXZCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQXdCN0Msa0NBQWtDO1FBQ3pCLG1CQUFjLEdBQXlCLE9BQU8sQ0FBQztRQUt4RCwwRUFBMEU7UUFDdkQsd0JBQW1CLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUYsd0RBQXdEO1FBQ3JDLG9CQUFlLEdBQTJDLElBQUksWUFBWSxFQUUxRixDQUFDO1FBRUosK0RBQStEO1FBQzVDLGdCQUFXLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRXhHLDBEQUEwRDtRQUN2QyxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWhGLHdEQUF3RDtRQUNyQyxzQkFBaUIsR0FBb0MsSUFBSSxZQUFZLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBRTFHLHdCQUFtQixHQUEwQixJQUFJLENBQUM7UUFFMUQsc0ZBQXNGO1FBQzlFLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUVqQyxnREFBZ0Q7UUFDeEMscUJBQWdCLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUU5QyxpREFBaUQ7UUFDekMseUJBQW9CLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRy9CLDJCQUFzQixHQUFXLEdBQUcsQ0FBQztRQXdMOUMsa0JBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7UUFoTEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLEVBQUUsaUJBQWlCLElBQUksS0FBSyxDQUFDO1FBRW5FLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQjtRQUNqQix1RkFBdUY7UUFDdkYsc0VBQXNFO1FBQ3RFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWpELHFGQUFxRjtRQUNyRixtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDO1lBRS9DLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCx1REFBdUQ7WUFDdkQsNERBQTREO1lBQzVELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFFNUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNkLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBRW5DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsbUJBQW1CLElBQUksT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssVUFBVSxJQUFJLFdBQVc7d0JBQ3JGLENBQUMsQ0FBQyxXQUFXO3dCQUNiLENBQUMsQ0FBRSxJQUFJLENBQUMsbUJBQXVDLENBQ3RELENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELDJGQUEyRjtRQUMzRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUM3QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxhQUFhLENBQUM7WUFFckMsc0ZBQXNGO1lBQ3RGLGtDQUFrQztZQUVsQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuRSxHQUFHLENBQUMsTUFBTSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1Qiw2REFBNkQ7UUFDN0Qsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JELGdFQUFnRTtZQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUVqRCx3RkFBd0Y7WUFDeEYsZ0RBQWdEO1lBQ2hELElBQUksYUFBYSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ25CLGlGQUFpRjt3QkFDakYsdUZBQXVGO3dCQUN2Rix1REFBdUQ7d0JBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO3dCQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzdCLE1BQU07b0JBQ1YsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsYUFBYSxDQUFDLENBQVM7UUFDbkIsT0FBTyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELGVBQWUsQ0FBQyxDQUFTO1FBQ3JCLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLFNBQWlCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDckQsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFFL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQztRQUV4RCxrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCwwQkFBMEI7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUMzRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsV0FBVyxDQUFDLEdBQVcsRUFBRSxTQUF1QixFQUFFLEtBQWE7UUFDM0QsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLFdBQVcsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNsQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFjO1FBQy9CLElBQUksT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDO1lBQ3RELE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQU1PLGlCQUFpQixDQUFDLEtBQWE7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssb0JBQW9CO1FBQ3hCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDMUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUN4QyxDQUFDO0lBQ04sQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWTthQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELHFFQUFxRTtJQUM3RCxhQUFhLENBQUMsS0FBb0I7UUFDdEMsd0VBQXdFO1FBQ3hFLHNFQUFzRTtRQUN0RSxvQ0FBb0M7UUFDcEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLGtCQUFrQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RCxDQUFDO2lJQXRWUSxXQUFXLDZFQXdHTCxVQUFVLDhCQUNiLGVBQWU7cUhBekdsQixXQUFXLHk1QkFGVCxDQUFDLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQywrQ0FVNUUsTUFBTSwwUkN4SDNCLGd1RUE2REE7OzJGRG1EYSxXQUFXO2tCQXBCdkIsU0FBUzsrQkFDSSxlQUFlLFlBQ2YsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFVBQ3ZDLENBQUMsVUFBVSxDQUFDLFFBQ2Q7d0JBQ0YsS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLDhCQUE4QixFQUFFLGNBQWM7d0JBQzlDLG1DQUFtQyxFQUFFLGFBQWE7d0JBQ2xELHFDQUFxQyxFQUFFLFlBQVk7d0JBQ25ELGtDQUFrQyxFQUFFLFdBQVc7d0JBQy9DLHNDQUFzQyxFQUFFLGVBQWU7d0JBQ3ZELHVDQUF1QyxFQUFFLDRCQUE0Qjt3QkFDckUsaUJBQWlCLEVBQUUsMkJBQTJCO3FCQUNqRCxhQUNVLENBQUMsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDOzswQkEwR3hGLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLE1BQU07MkJBQUMsZUFBZTs7MEJBQUcsUUFBUTt5Q0FqR2IsSUFBSTtzQkFBNUIsZUFBZTt1QkFBQyxNQUFNO2dCQUV5QixjQUFjO3NCQUE3RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFSCxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWhDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFJRixhQUFhO3NCQURoQixLQUFLO2dCQWFGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixLQUFLO2dCQXVCRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHYSxtQkFBbUI7c0JBQXJDLE1BQU07Z0JBR1ksZUFBZTtzQkFBakMsTUFBTTtnQkFLWSxXQUFXO3NCQUE3QixNQUFNO2dCQUdZLGFBQWE7c0JBQS9CLE1BQU07Z0JBR1ksaUJBQWlCO3NCQUFuQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkRpc2FibGVDdG9yLCBLQlFfUEFSRU5UX0FOSU1BVElPTl9DT01QT05FTlQsIG1peGluRGlzYWJsZWQgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLYnFUYWJIZWFkZXIgfSBmcm9tICcuL3RhYi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEticVRhYiB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRhYi1ncm91cFtrYnEtYWxpZ24tdGFicy1jZW50ZXJdLCBba2JxLXRhYi1uYXYtYmFyXVtrYnEtYWxpZ24tdGFicy1jZW50ZXJdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF9hbGlnbi1sYWJlbHMtY2VudGVyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticUFsaWduVGFic0NlbnRlckNzc1N0eWxlciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBba2JxLWFsaWduLXRhYnMtZW5kXSwgW2ticS10YWItbmF2LWJhcl1ba2JxLWFsaWduLXRhYnMtZW5kXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ticS10YWItZ3JvdXBfYWxpZ24tbGFiZWxzLWVuZCcgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFBbGlnblRhYnNFbmRDc3NTdHlsZXIge31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwW2ticS1zdHJldGNoLXRhYnNdLCBba2JxLXRhYi1uYXYtYmFyXVtrYnEtc3RyZXRjaC10YWJzXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ticS10YWItZ3JvdXBfc3RyZXRjaC1sYWJlbHMnIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxU3RyZXRjaFRhYnNDc3NTdHlsZXIge31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwW3ZlcnRpY2FsXSwgW2ticS10YWItbmF2LWJhcl1bdmVydGljYWxdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF92ZXJ0aWNhbCcgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFWZXJ0aWNhbFRhYnNDc3NTdHlsZXIge31cblxuLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEJ3MgZm9yIGVhY2ggdGFiIGNvbXBvbmVudCAqL1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKiBBIHNpbXBsZSBjaGFuZ2UgZXZlbnQgZW1pdHRlZCBvbiBmb2N1cyBvciBzZWxlY3Rpb24gY2hhbmdlcy4gKi9cbmV4cG9ydCBjbGFzcyBLYnFUYWJDaGFuZ2VFdmVudCB7XG4gICAgLyoqIEluZGV4IG9mIHRoZSBjdXJyZW50bHktc2VsZWN0ZWQgdGFiLiAqL1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudGx5LXNlbGVjdGVkIHRhYi4gKi9cbiAgICB0YWI6IEticVRhYjtcbn1cblxuLyoqIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgdGhlIHRhYiBoZWFkZXIuICovXG5leHBvcnQgdHlwZSBLYnFUYWJIZWFkZXJQb3NpdGlvbiA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG4vKiogT2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSB0YWJzIG1vZHVsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUticVRhYnNDb25maWcge1xuICAgIC8qKiBEdXJhdGlvbiBmb3IgdGhlIHRhYiBhbmltYXRpb24uIE11c3QgYmUgYSB2YWxpZCBDU1MgdmFsdWUgKGUuZy4gNjAwbXMpLiAqL1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uPzogc3RyaW5nO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgZGVmYXVsdCBvcHRpb25zIHRoZSB0YWJzIG1vZHVsZS4gKi9cbmV4cG9ydCBjb25zdCBLQlFfVEFCU19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignS0JRX1RBQlNfQ09ORklHJyk7XG5cbi8vIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gS2JxVGFiR3JvdXAuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNsYXNzIEticVRhYkdyb3VwQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgS2JxVGFiR3JvdXBNaXhpbkJhc2U6IENhbkRpc2FibGVDdG9yICYgdHlwZW9mIEticVRhYkdyb3VwQmFzZSA9IG1peGluRGlzYWJsZWQoS2JxVGFiR3JvdXBCYXNlKTtcblxuZXhwb3J0IHR5cGUgS2JxVGFiU2VsZWN0QnkgPSBzdHJpbmcgfCBudW1iZXIgfCAoKHRhYnM6IEticVRhYltdKSA9PiBLYnFUYWIgfCBudWxsKTtcblxuLyoqXG4gKiBUYWItZ3JvdXAgY29tcG9uZW50LiAgU3VwcG9ydHMgYmFzaWMgdGFiIHBhaXJzIChsYWJlbCArIGNvbnRlbnQpIGFuZCBpbmNsdWRlc1xuICoga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwJyxcbiAgICBleHBvcnRBczogJ2ticVRhYkdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYi1ncm91cC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsndGFiLWdyb3VwLnNjc3MnLCAndGFicy10b2tlbnMuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWItZ3JvdXAnLFxuICAgICAgICAnW2NsYXNzLmticS10YWItZ3JvdXBfZmlsbGVkXSc6ICchdHJhbnNwYXJlbnQnLFxuICAgICAgICAnW2NsYXNzLmticS10YWItZ3JvdXBfdHJhbnNwYXJlbnRdJzogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX29uLWJhY2tncm91bmRdJzogJyFvblN1cmZhY2UnLFxuICAgICAgICAnW2NsYXNzLmticS10YWItZ3JvdXBfb24tc3VyZmFjZV0nOiAnb25TdXJmYWNlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX2R5bmFtaWMtaGVpZ2h0XSc6ICdkeW5hbWljSGVpZ2h0JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX2ludmVydGVkLWhlYWRlcl0nOiAnaGVhZGVyUG9zaXRpb24gPT09IFwiYmVsb3dcIicsXG4gICAgICAgICcod2luZG93OnJlc2l6ZSknOiAncmVzaXplU3RyZWFtLm5leHQoJGV2ZW50KSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogS0JRX1BBUkVOVF9BTklNQVRJT05fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiB0aGlzKSB9XVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWJHcm91cFxuICAgIGV4dGVuZHMgS2JxVGFiR3JvdXBNaXhpbkJhc2VcbiAgICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveVxue1xuICAgIHJlYWRvbmx5IHJlc2l6ZVN0cmVhbSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gICAgdmVydGljYWw6IGJvb2xlYW47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEticVRhYikgdGFiczogUXVlcnlMaXN0PEticVRhYj47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJCb2R5V3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJCb2R5V3JhcHBlcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYkhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJIZWFkZXI6IEticVRhYkhlYWRlcjtcblxuICAgIEBJbnB1dCgpIHRyYW5zcGFyZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgb25TdXJmYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFiIGdyb3VwIHNob3VsZCBncm93IHRvIHRoZSBzaXplIG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGR5bmFtaWNIZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9keW5hbWljSGVpZ2h0O1xuICAgIH1cblxuICAgIHNldCBkeW5hbWljSGVpZ2h0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNIZWlnaHQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2R5bmFtaWNIZWlnaHQgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFjdGl2ZVRhYigpOiBLYnFUYWIgfCBudWxsIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdGhpcy5hdHRyaWJ1dGVUb1NlbGVjdEJ5KSB7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhYnMuZ2V0KHRoaXMuY2xhbXBUYWJJbmRleCh0aGlzLmF0dHJpYnV0ZVRvU2VsZWN0QnkpKSB8fCBudWxsO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMudG9BcnJheSgpLmZpbmQoKHsgdGFiSWQgfSkgPT4gdGFiSWQgPT09IHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzLmdldCgwKSB8fFxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVUb1NlbGVjdEJ5KHRoaXMudGFicy50b0FycmF5KCkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YWJzLmdldCgwKSB8fCBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2ZVRhYih2YWx1ZTogS2JxVGFiU2VsZWN0QnkgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgdGFiIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKSBoZWFkZXJQb3NpdGlvbjogS2JxVGFiSGVhZGVyUG9zaXRpb24gPSAnYWJvdmUnO1xuXG4gICAgLyoqIER1cmF0aW9uIGZvciB0aGUgdGFiIGFuaW1hdGlvbi4gTXVzdCBiZSBhIHZhbGlkIENTUyB2YWx1ZSAoZS5nLiA2MDBtcykuICovXG4gICAgQElucHV0KCkgYW5pbWF0aW9uRHVyYXRpb246IHN0cmluZztcblxuICAgIC8qKiBPdXRwdXQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHR3by13YXkgYmluZGluZyBvbiBgWyhzZWxlY3RlZEluZGV4KV1gICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0YWIgc2VsZWN0aW9uIGhhcyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBhY3RpdmVUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXIgfCBLYnFUYWI+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICAgICAgc3RyaW5nIHwgbnVtYmVyIHwgS2JxVGFiXG4gICAgPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBmb2N1cyBoYXMgY2hhbmdlZCB3aXRoaW4gYSB0YWIgZ3JvdXAuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZvY3VzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxVGFiQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWJDaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGJvZHkgYW5pbWF0aW9uIGhhcyBjb21wbGV0ZWQgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYW5pbWF0aW9uRG9uZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdGFiIHNlbGVjdGlvbiBoYXMgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFUYWJDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEticVRhYkNoYW5nZUV2ZW50Pih0cnVlKTtcblxuICAgIHByaXZhdGUgYXR0cmlidXRlVG9TZWxlY3RCeTogS2JxVGFiU2VsZWN0QnkgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBTbmFwc2hvdCBvZiB0aGUgaGVpZ2h0IG9mIHRoZSB0YWIgYm9keSB3cmFwcGVyIGJlZm9yZSBhbm90aGVyIHRhYiBpcyBhY3RpdmF0ZWQuICovXG4gICAgcHJpdmF0ZSB0YWJCb2R5V3JhcHBlckhlaWdodCA9IDA7XG5cbiAgICAvKiogU3Vic2NyaXB0aW9uIHRvIHRhYnMgYmVpbmcgYWRkZWQvcmVtb3ZlZC4gKi9cbiAgICBwcml2YXRlIHRhYnNTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICAvKiogU3Vic2NyaXB0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIHRhYiBsYWJlbHMuICovXG4gICAgcHJpdmF0ZSB0YWJMYWJlbFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBJZDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplRGVib3VuY2VJbnRlcnZhbDogbnVtYmVyID0gMTAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAQXR0cmlidXRlKCd2ZXJ0aWNhbCcpIHZlcnRpY2FsOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoS0JRX1RBQlNfQ09ORklHKSBAT3B0aW9uYWwoKSBkZWZhdWx0Q29uZmlnPzogSUticVRhYnNDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgdGhpcy52ZXJ0aWNhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2ZXJ0aWNhbCk7XG5cbiAgICAgICAgdGhpcy5ncm91cElkID0gbmV4dElkKys7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRHVyYXRpb24gPSBkZWZhdWx0Q29uZmlnPy5hbmltYXRpb25EdXJhdGlvbiB8fCAnMG1zJztcblxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvUmVzaXplKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWZ0ZXIgdGhlIGNvbnRlbnQgaXMgY2hlY2tlZCwgdGhpcyBjb21wb25lbnQga25vd3Mgd2hhdCB0YWJzIGhhdmUgYmVlbiBkZWZpbmVkXG4gICAgICogYW5kIHdoYXQgdGhlIHNlbGVjdGVkIGluZGV4IHNob3VsZCBiZS4gVGhpcyBpcyB3aGVyZSB3ZSBjYW4ga25vdyBleGFjdGx5IHdoYXQgcG9zaXRpb25cbiAgICAgKiBlYWNoIHRhYiBzaG91bGQgYmUgaW4gYWNjb3JkaW5nIHRvIHRoZSBuZXcgc2VsZWN0ZWQgaW5kZXgsIGFuZCBhZGRpdGlvbmFsbHkgd2Uga25vdyBob3dcbiAgICAgKiBhIG5ldyBzZWxlY3RlZCB0YWIgc2hvdWxkIHRyYW5zaXRpb24gaW4gKGZyb20gdGhlIGxlZnQgb3IgcmlnaHQpLlxuICAgICAqL1xuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICAgICAgLy8gRG9uJ3QgY2xhbXAgdGhlIGBpbmRleFRvU2VsZWN0YCBpbW1lZGlhdGVseSBpbiB0aGUgc2V0dGVyIGJlY2F1c2UgaXQgY2FuIGhhcHBlbiB0aGF0XG4gICAgICAgIC8vIHRoZSBhbW91bnQgb2YgdGFicyBjaGFuZ2VzIGJlZm9yZSB0aGUgYWN0dWFsIGNoYW5nZSBkZXRlY3Rpb24gcnVucy5cbiAgICAgICAgY29uc3QgaW5kZXhUb1NlbGVjdCA9IHRoaXMuZ2V0VGFiSW5kZXhUb1NlbGVjdCgpO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgY2hhbmdlIGluIHNlbGVjdGVkIGluZGV4LCBlbWl0IGEgY2hhbmdlIGV2ZW50LiBTaG91bGQgbm90IHRyaWdnZXIgaWZcbiAgICAgICAgLy8gdGhlIHNlbGVjdGVkIGluZGV4IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSBpbmRleFRvU2VsZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBpc0ZpcnN0UnVuID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA9PSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIWlzRmlyc3RSdW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGhpcy5jcmVhdGVDaGFuZ2VFdmVudChpbmRleFRvU2VsZWN0KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoYW5naW5nIHRoZXNlIHZhbHVlcyBhZnRlciBjaGFuZ2UgZGV0ZWN0aW9uIGhhcyBydW5cbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBjaGVja2VkIGNvbnRlbnQgbWF5IGNvbnRhaW4gcmVmZXJlbmNlcyB0byB0aGVtLlxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYiwgaW5kZXgpID0+ICh0YWIuaXNBY3RpdmUgPSBpbmRleCA9PT0gaW5kZXhUb1NlbGVjdCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZpcnN0UnVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYlRvU2VsZWN0ID0gdGhpcy5hY3RpdmVUYWI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQoaW5kZXhUb1NlbGVjdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZVRvU2VsZWN0QnkgJiYgdHlwZW9mIHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSA9PT0gJ2Z1bmN0aW9uJyAmJiB0YWJUb1NlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGFiVG9TZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICh0aGlzLmF0dHJpYnV0ZVRvU2VsZWN0QnkgYXMgc3RyaW5nIHwgbnVtYmVyKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0dXAgdGhlIHBvc2l0aW9uIGZvciBlYWNoIHRhYiBhbmQgb3B0aW9uYWxseSBzZXR1cCBhbiBvcmlnaW4gb24gdGhlIG5leHQgc2VsZWN0ZWQgdGFiLlxuICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBLYnFUYWIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRhYi5wb3NpdGlvbiA9IGluZGV4IC0gaW5kZXhUb1NlbGVjdDtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHNlbGVjdGVkIHRhYiwgdGhlbiBzZXQgdXAgYW4gb3JpZ2luIGZvciB0aGUgbmV4dCBzZWxlY3RlZCB0YWJcbiAgICAgICAgICAgIC8vIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmUgYWxyZWFkeS5cblxuICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT0gbnVsbCAmJiB0YWIucG9zaXRpb24gPT09IDAgJiYgIXRhYi5vcmlnaW4pIHtcbiAgICAgICAgICAgICAgICB0YWIub3JpZ2luID0gaW5kZXhUb1NlbGVjdCAtIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSBpbmRleFRvU2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gaW5kZXhUb1NlbGVjdDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9UYWJMYWJlbHMoKTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgYW1vdW50IG9mIHRhYnMsIGluIG9yZGVyIHRvIGJlXG4gICAgICAgIC8vIGFibGUgdG8gcmUtcmVuZGVyIHRoZSBjb250ZW50IGFzIG5ldyB0YWJzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICAgICAgICB0aGlzLnRhYnNTdWJzY3JpcHRpb24gPSB0aGlzLnRhYnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc3QgaW5kZXhUb1NlbGVjdCA9IHRoaXMuY2xhbXBUYWJJbmRleCh0aGlzLmluZGV4VG9TZWxlY3QpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXhUb1NlbGVjdCA9IHRoaXMuZ2V0VGFiSW5kZXhUb1NlbGVjdCgpO1xuXG4gICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgcHJldmlvdXNseS1zZWxlY3RlZCB0YWIgaWYgYSBuZXcgdGFiIGlzIGFkZGVkIG9yIHJlbW92ZWQgYW5kIHRoZXJlIGlzIG5vXG4gICAgICAgICAgICAvLyBleHBsaWNpdCBjaGFuZ2UgdGhhdCBzZWxlY3RzIGEgZGlmZmVyZW50IHRhYi5cbiAgICAgICAgICAgIGlmIChpbmRleFRvU2VsZWN0ID09PSB0aGlzLl9zZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFicyA9IHRoaXMudGFicy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhYnNbaV0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc2lnbiBib3RoIHRvIHRoZSBgYWN0aXZlVGFiYCBhbmQgYF9zZWxlY3RlZEluZGV4YCBzbyB3ZSBkb24ndCBmaXJlIGEgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlbnQsIG90aGVyd2lzZSB0aGUgY29uc3VtZXIgbWF5IGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wIGluIHNvbWUgZWRnZSBjYXNlcyBsaWtlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpbmcgYSB0YWIgd2l0aGluIHRoZSBgc2VsZWN0ZWRJbmRleENoYW5nZWAgZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RGb2N1c2VkSW5kZXgoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1RhYkxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50YWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZWQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodGhpcy5jcmVhdGVDaGFuZ2VFdmVudChpbmRleCkpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgdW5pcXVlIGlkIGZvciBlYWNoIHRhYiBsYWJlbCBlbGVtZW50ICovXG4gICAgZ2V0VGFiTGFiZWxJZChpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGticS10YWItbGFiZWwtJHt0aGlzLmdyb3VwSWR9LSR7aX1gO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgdW5pcXVlIGlkIGZvciBlYWNoIHRhYiBjb250ZW50IGVsZW1lbnQgKi9cbiAgICBnZXRUYWJDb250ZW50SWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBrYnEtdGFiLWNvbnRlbnQtJHt0aGlzLmdyb3VwSWR9LSR7aX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhlaWdodCBvZiB0aGUgYm9keSB3cmFwcGVyIHRvIHRoZSBoZWlnaHQgb2YgdGhlIGFjdGl2YXRpbmcgdGFiIGlmIGR5bmFtaWNcbiAgICAgKiBoZWlnaHQgcHJvcGVydHkgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBzZXRUYWJCb2R5V3JhcHBlckhlaWdodCh0YWJIZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2R5bmFtaWNIZWlnaHQgfHwgIXRoaXMudGFiQm9keVdyYXBwZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdyYXBwZXI6IEhUTUxFbGVtZW50ID0gdGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy50YWJCb2R5V3JhcHBlckhlaWdodH1weGA7XG5cbiAgICAgICAgLy8gVGhpcyBjb25kaXRpb25hbCBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcGFpbnQgdGhlIGhlaWdodCBzbyB0aGF0XG4gICAgICAgIC8vIHRoZSBhbmltYXRpb24gdG8gdGhlIG5ldyBoZWlnaHQgY2FuIGhhdmUgYW4gb3JpZ2luLlxuICAgICAgICBpZiAodGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkge1xuICAgICAgICAgICAgd3JhcHBlci5zdHlsZS5oZWlnaHQgPSBgJHt0YWJIZWlnaHR9cHhgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgdGhlIGhlaWdodCBvZiB0aGUgdGFiIGJvZHkgd3JhcHBlci4gKi9cbiAgICByZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJCb2R5V3JhcHBlckhlaWdodCA9IHRoaXMudGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMudGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgICAgdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIGNsaWNrIGV2ZW50cywgc2V0dGluZyBuZXcgc2VsZWN0ZWQgaW5kZXggaWYgYXBwcm9wcmlhdGUuICovXG4gICAgaGFuZGxlQ2xpY2sodGFiOiBLYnFUYWIsIHRhYkhlYWRlcjogS2JxVGFiSGVhZGVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25TZWxlY3RGb2N1c2VkSW5kZXgoaW5kZXgpO1xuICAgICAgICB0YWJIZWFkZXIuZm9jdXNJbmRleCA9IGluZGV4O1xuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgdGhlIHRhYmluZGV4IGZvciB0aGUgdGFiLiAqL1xuICAgIGdldFRhYkluZGV4KHRhYjogS2JxVGFiLCBpbmRleDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGlmICh0YWIuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gaW5kZXggPyAwIDogLTE7XG4gICAgfVxuXG4gICAgb25TZWxlY3RGb2N1c2VkSW5kZXgoJGV2ZW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dHJpYnV0ZVRvU2VsZWN0QnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicy5nZXQoJGV2ZW50KT8udGFiSWQgfHwgbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJGV2ZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tPdmVyZmxvdyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy50YWJIZWFkZXIuaXRlbXMuZm9yRWFjaCgoaGVhZGVyVGFiKSA9PiBoZWFkZXJUYWIuY2hlY2tPdmVyZmxvdygpKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGFuZ2VFdmVudChpbmRleDogbnVtYmVyKTogS2JxVGFiQ2hhbmdlRXZlbnQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBLYnFUYWJDaGFuZ2VFdmVudCgpO1xuICAgICAgICBldmVudC5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmxlbmd0aCkge1xuICAgICAgICAgICAgZXZlbnQudGFiID0gdGhpcy50YWJzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlcyB0byBjaGFuZ2VzIGluIHRoZSB0YWIgbGFiZWxzLiBUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSB0aGUgQElucHV0IGZvciB0aGUgbGFiZWwgaXNcbiAgICAgKiBvbiB0aGUgS2JxVGFiIGNvbXBvbmVudCwgd2hlcmVhcyB0aGUgZGF0YSBiaW5kaW5nIGlzIGluc2lkZSB0aGUgS2JxVGFiR3JvdXAuIEluIG9yZGVyIGZvciB0aGVcbiAgICAgKiBiaW5kaW5nIHRvIGJlIHVwZGF0ZWQsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gaXQgYW5kIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgICAqIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9UYWJMYWJlbHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYkxhYmVsU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4udGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3RhdGVDaGFuZ2VzKSkuc3Vic2NyaWJlKCgpID0+XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IHRoaXMucmVzaXplU3RyZWFtXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5yZXNpemVEZWJvdW5jZUludGVydmFsKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5jaGVja092ZXJmbG93KTtcbiAgICB9XG5cbiAgICAvKiogQ2xhbXBzIHRoZSBnaXZlbiBpbmRleCB0byB0aGUgYm91bmRzIG9mIDAgYW5kIHRoZSB0YWJzIGxlbmd0aC4gKi9cbiAgICBwcml2YXRlIGNsYW1wVGFiSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICAvLyBOb3RlIHRoZSBgfHwgMGAsIHdoaWNoIGVuc3VyZXMgdGhhdCB2YWx1ZXMgbGlrZSBOYU4gY2FuJ3QgZ2V0IHRocm91Z2hcbiAgICAgICAgLy8gYW5kIHdoaWNoIHdvdWxkIG90aGVyd2lzZSB0aHJvdyB0aGUgY29tcG9uZW50IGludG8gYW4gaW5maW5pdGUgbG9vcFxuICAgICAgICAvLyAoc2luY2UgTWF0aC5tYXgoTmFOLCAwKSA9PT0gTmFOKS5cbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMudGFicy5sZW5ndGggLSAxLCBNYXRoLm1heChpbmRleCB8fCAwLCAwKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJJbmRleFRvU2VsZWN0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZFRhYiA9IHRoaXMuYWN0aXZlVGFiO1xuICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkVGFiID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50YWJzPy50b0FycmF5KCkuaW5kZXhPZihjdXJyZW50U2VsZWN0ZWRUYWIpO1xuICAgIH1cbn1cbiIsIjxrYnEtdGFiLWhlYWRlclxuICAgICN0YWJIZWFkZXJcbiAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZEluZGV4XCJcbiAgICBbdmVydGljYWxdPVwidmVydGljYWxcIlxuICAgIChpbmRleEZvY3VzZWQpPVwiZm9jdXNDaGFuZ2VkKCRldmVudClcIlxuICAgIChzZWxlY3RGb2N1c2VkSW5kZXgpPVwib25TZWxlY3RGb2N1c2VkSW5kZXgoJGV2ZW50KVwiXG4+XG4gICAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrIHRhYjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgICAgICAgICAga2JxVGFiTGFiZWxXcmFwcGVyXG4gICAgICAgICAgICBjbGFzcz1cImticS10YWItbGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZ2V0VGFiSW5kZXgodGFiLCBpKVwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLXNlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfZW1wdHldPVwidGFiLmVtcHR5XCJcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtdGFiLWxhYmVsX2hvcml6b250YWxdPVwiIXZlcnRpY2FsXCJcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtdGFiLWxhYmVsX3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cImdldFRhYkxhYmVsSWQoaSlcIlxuICAgICAgICAgICAgW2ticVBsYWNlbWVudF09XCJ0YWIudG9vbHRpcFBsYWNlbWVudFwiXG4gICAgICAgICAgICBba2JxVG9vbHRpcF09XCJ0YWIudG9vbHRpcFRpdGxlXCJcbiAgICAgICAgICAgIFtrYnFUb29sdGlwRGlzYWJsZWRdPVwiIXRhYi5lbXB0eSAmJiAhdGFiLmlzT3ZlcmZsb3duXCJcbiAgICAgICAgICAgIFtrYnFUcmlnZ2VyXT1cIidob3ZlciwgZm9jdXMnXCJcbiAgICAgICAgICAgIFt0YWJdPVwidGFiXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljayh0YWIsIHRhYkhlYWRlciwgaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2xhYmVsQ29udGVudFxuICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLXRhYi1sYWJlbF9fY29udGVudFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfX3RlbXBsYXRlXT1cInRhYi50ZW1wbGF0ZUxhYmVsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS0+XG4gICAgICAgICAgICAgICAgQGlmICh0YWIudGVtcGxhdGVMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS0+XG4gICAgICAgICAgICAgICAgQGlmICghdGFiLnRlbXBsYXRlTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgdGFiLnRleHRMYWJlbCB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2ticS10YWItaGVhZGVyPlxuXG48ZGl2XG4gICAgI3RhYkJvZHlXcmFwcGVyXG4gICAgY2xhc3M9XCJrYnEtdGFiLWJvZHlfX3dyYXBwZXJcIlxuPlxuICAgIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayB0YWI7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxrYnEtdGFiLWJvZHlcbiAgICAgICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvblwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLXRhYi1ib2R5X19hY3RpdmVdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICBbY29udGVudF09XCJ0YWIuY29udGVudCFcIlxuICAgICAgICAgICAgW2lkXT1cImdldFRhYkNvbnRlbnRJZChpKVwiXG4gICAgICAgICAgICBbb3JpZ2luXT1cInRhYi5vcmlnaW4hXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0YWIucG9zaXRpb24hXCJcbiAgICAgICAgICAgIChvbkNlbnRlcmVkKT1cInJlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KClcIlxuICAgICAgICAgICAgKG9uQ2VudGVyaW5nKT1cInNldFRhYkJvZHlXcmFwcGVySGVpZ2h0KCRldmVudClcIlxuICAgICAgICAvPlxuICAgIH1cbjwvZGl2PlxuIl19
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFicy90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90YWJzL3RhYi1ncm91cC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFJSCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsOEJBQThCLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQU16QyxNQUFNLE9BQU8sMkJBQTJCO2lJQUEzQiwyQkFBMkI7cUhBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0ZBQWdGO29CQUMxRixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUNBQW1DLEVBQUU7aUJBQ3ZEOztBQU9ELE1BQU0sT0FBTyx3QkFBd0I7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UzsyQkFBQyxZQUFZOzswQkFDdEIsTUFBTTsyQkFBQyxlQUFlOzswQkFBRyxRQUFRO3lDQWxHYixJQUFJO3NCQUE1QixlQUFlO3VCQUFDLE1BQU07Z0JBRXlCLGNBQWM7c0JBQTdELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVILFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFaEMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBYUYsYUFBYTtzQkFEaEIsS0FBSztnQkFZRixTQUFTO3NCQURaLEtBQUs7Z0JBdUJHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFHWSxlQUFlO3NCQUFqQyxNQUFNO2dCQUtZLFdBQVc7c0JBQTdCLE1BQU07Z0JBR1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFHWSxpQkFBaUI7c0JBQW5DLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuRGlzYWJsZUN0b3IsIEtCUV9QQVJFTlRfQU5JTUFUSU9OX0NPTVBPTkVOVCwgbWl4aW5EaXNhYmxlZCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEticVRhYkhlYWRlciB9IGZyb20gJy4vdGFiLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2JxVGFiIH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFiLWdyb3VwW2ticS1hbGlnbi10YWJzLWNlbnRlcl0sIFtrYnEtdGFiLW5hdi1iYXJdW2ticS1hbGlnbi10YWJzLWNlbnRlcl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtdGFiLWdyb3VwX2FsaWduLWxhYmVscy1jZW50ZXInIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxQWxpZ25UYWJzQ2VudGVyQ3NzU3R5bGVyIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRhYi1ncm91cFtrYnEtYWxpZ24tdGFicy1lbmRdLCBba2JxLXRhYi1uYXYtYmFyXVtrYnEtYWxpZ24tdGFicy1lbmRdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF9hbGlnbi1sYWJlbHMtZW5kJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticUFsaWduVGFic0VuZENzc1N0eWxlciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBba2JxLXN0cmV0Y2gtdGFic10sIFtrYnEtdGFiLW5hdi1iYXJdW2ticS1zdHJldGNoLXRhYnNdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF9zdHJldGNoLWxhYmVscycgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFTdHJldGNoVGFic0Nzc1N0eWxlciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBbdmVydGljYWxdLCBba2JxLXRhYi1uYXYtYmFyXVt2ZXJ0aWNhbF0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtdGFiLWdyb3VwX3ZlcnRpY2FsJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticVZlcnRpY2FsVGFic0Nzc1N0eWxlciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWItZ3JvdXBbdW5kZXJsaW5lZF0sIFtrYnEtdGFiLW5hdi1iYXJdW3VuZGVybGluZWRdJyxcbiAgICBob3N0OiB7IGNsYXNzOiAna2JxLXRhYi1ncm91cF91bmRlcmxpbmVkJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticVVuZGVybGluZWRUYWJzQ3NzU3R5bGVyIHt9XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRCdzIGZvciBlYWNoIHRhYiBjb21wb25lbnQgKi9cbmxldCBuZXh0SWQgPSAwO1xuXG4vKiogQSBzaW1wbGUgY2hhbmdlIGV2ZW50IGVtaXR0ZWQgb24gZm9jdXMgb3Igc2VsZWN0aW9uIGNoYW5nZXMuICovXG5leHBvcnQgY2xhc3MgS2JxVGFiQ2hhbmdlRXZlbnQge1xuICAgIC8qKiBJbmRleCBvZiB0aGUgY3VycmVudGx5LXNlbGVjdGVkIHRhYi4gKi9cbiAgICBpbmRleDogbnVtYmVyO1xuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseS1zZWxlY3RlZCB0YWIuICovXG4gICAgdGFiOiBLYnFUYWI7XG59XG5cbi8qKiBQb3NzaWJsZSBwb3NpdGlvbnMgZm9yIHRoZSB0YWIgaGVhZGVyLiAqL1xuZXhwb3J0IHR5cGUgS2JxVGFiSGVhZGVyUG9zaXRpb24gPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuLyoqIE9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgdGFicyBtb2R1bGUuICovXG5leHBvcnQgaW50ZXJmYWNlIElLYnFUYWJzQ29uZmlnIHtcbiAgICAvKiogRHVyYXRpb24gZm9yIHRoZSB0YWIgYW5pbWF0aW9uLiBNdXN0IGJlIGEgdmFsaWQgQ1NTIHZhbHVlIChlLmcuIDYwMG1zKS4gKi9cbiAgICBhbmltYXRpb25EdXJhdGlvbj86IHN0cmluZztcbn1cblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgdGhlIGRlZmF1bHQgb3B0aW9ucyB0aGUgdGFicyBtb2R1bGUuICovXG5leHBvcnQgY29uc3QgS0JRX1RBQlNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0tCUV9UQUJTX0NPTkZJRycpO1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIEticVRhYkdyb3VwLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjbGFzcyBLYnFUYWJHcm91cEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IEticVRhYkdyb3VwTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmIHR5cGVvZiBLYnFUYWJHcm91cEJhc2UgPSBtaXhpbkRpc2FibGVkKEticVRhYkdyb3VwQmFzZSk7XG5cbmV4cG9ydCB0eXBlIEticVRhYlNlbGVjdEJ5ID0gc3RyaW5nIHwgbnVtYmVyIHwgKCh0YWJzOiBLYnFUYWJbXSkgPT4gS2JxVGFiIHwgbnVsbCk7XG5cbi8qKlxuICogVGFiLWdyb3VwIGNvbXBvbmVudC4gIFN1cHBvcnRzIGJhc2ljIHRhYiBwYWlycyAobGFiZWwgKyBjb250ZW50KSBhbmQgaW5jbHVkZXNcbiAqIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRhYi1ncm91cCcsXG4gICAgZXhwb3J0QXM6ICdrYnFUYWJHcm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICd0YWItZ3JvdXAuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3RhYi1ncm91cC5zY3NzJywgJ3RhYnMtdG9rZW5zLnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGlucHV0czogWydkaXNhYmxlZCddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtdGFiLWdyb3VwJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX2ZpbGxlZF0nOiAnIXRyYW5zcGFyZW50JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX3RyYW5zcGFyZW50XSc6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhYi1ncm91cF9vbi1iYWNrZ3JvdW5kXSc6ICchb25TdXJmYWNlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFiLWdyb3VwX29uLXN1cmZhY2VdJzogJ29uU3VyZmFjZScsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhYi1ncm91cF9keW5hbWljLWhlaWdodF0nOiAnZHluYW1pY0hlaWdodCcsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhYi1ncm91cF9pbnZlcnRlZC1oZWFkZXJdJzogJ2hlYWRlclBvc2l0aW9uID09PSBcImJlbG93XCInLFxuICAgICAgICAnKHdpbmRvdzpyZXNpemUpJzogJ3Jlc2l6ZVN0cmVhbS5uZXh0KCRldmVudCknXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEtCUV9QQVJFTlRfQU5JTUFUSU9OX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gdGhpcykgfV1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFiR3JvdXBcbiAgICBleHRlbmRzIEticVRhYkdyb3VwTWl4aW5CYXNlXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3lcbntcbiAgICByZWFkb25seSByZXNpemVTdHJlYW0gPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcblxuICAgIHZlcnRpY2FsOiBib29sZWFuO1xuICAgIHVuZGVybGluZWQ6IGJvb2xlYW47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEticVRhYikgdGFiczogUXVlcnlMaXN0PEticVRhYj47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJCb2R5V3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJCb2R5V3JhcHBlcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYkhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJIZWFkZXI6IEticVRhYkhlYWRlcjtcblxuICAgIEBJbnB1dCgpIHRyYW5zcGFyZW50OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgb25TdXJmYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFiIGdyb3VwIHNob3VsZCBncm93IHRvIHRoZSBzaXplIG9mIHRoZSBhY3RpdmUgdGFiLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGR5bmFtaWNIZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9keW5hbWljSGVpZ2h0O1xuICAgIH1cblxuICAgIHNldCBkeW5hbWljSGVpZ2h0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2R5bmFtaWNIZWlnaHQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2R5bmFtaWNIZWlnaHQgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFjdGl2ZVRhYigpOiBLYnFUYWIgfCBudWxsIHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdGhpcy5hdHRyaWJ1dGVUb1NlbGVjdEJ5KSB7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhYnMuZ2V0KHRoaXMuY2xhbXBUYWJJbmRleCh0aGlzLmF0dHJpYnV0ZVRvU2VsZWN0QnkpKSB8fCBudWxsO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMudG9BcnJheSgpLmZpbmQoKHsgdGFiSWQgfSkgPT4gdGFiSWQgPT09IHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzLmdldCgwKSB8fFxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVUb1NlbGVjdEJ5KHRoaXMudGFicy50b0FycmF5KCkpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YWJzLmdldCgwKSB8fCBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2ZVRhYih2YWx1ZTogS2JxVGFiU2VsZWN0QnkgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgdGFiIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKSBoZWFkZXJQb3NpdGlvbjogS2JxVGFiSGVhZGVyUG9zaXRpb24gPSAnYWJvdmUnO1xuXG4gICAgLyoqIER1cmF0aW9uIGZvciB0aGUgdGFiIGFuaW1hdGlvbi4gTXVzdCBiZSBhIHZhbGlkIENTUyB2YWx1ZSAoZS5nLiA2MDBtcykuICovXG4gICAgQElucHV0KCkgYW5pbWF0aW9uRHVyYXRpb246IHN0cmluZztcblxuICAgIC8qKiBPdXRwdXQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHR3by13YXkgYmluZGluZyBvbiBgWyhzZWxlY3RlZEluZGV4KV1gICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0YWIgc2VsZWN0aW9uIGhhcyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBhY3RpdmVUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudW1iZXIgfCBLYnFUYWI+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICAgICAgc3RyaW5nIHwgbnVtYmVyIHwgS2JxVGFiXG4gICAgPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBmb2N1cyBoYXMgY2hhbmdlZCB3aXRoaW4gYSB0YWIgZ3JvdXAuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGZvY3VzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxVGFiQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWJDaGFuZ2VFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGJvZHkgYW5pbWF0aW9uIGhhcyBjb21wbGV0ZWQgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYW5pbWF0aW9uRG9uZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdGFiIHNlbGVjdGlvbiBoYXMgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFUYWJDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEticVRhYkNoYW5nZUV2ZW50Pih0cnVlKTtcblxuICAgIHByaXZhdGUgYXR0cmlidXRlVG9TZWxlY3RCeTogS2JxVGFiU2VsZWN0QnkgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBTbmFwc2hvdCBvZiB0aGUgaGVpZ2h0IG9mIHRoZSB0YWIgYm9keSB3cmFwcGVyIGJlZm9yZSBhbm90aGVyIHRhYiBpcyBhY3RpdmF0ZWQuICovXG4gICAgcHJpdmF0ZSB0YWJCb2R5V3JhcHBlckhlaWdodCA9IDA7XG5cbiAgICAvKiogU3Vic2NyaXB0aW9uIHRvIHRhYnMgYmVpbmcgYWRkZWQvcmVtb3ZlZC4gKi9cbiAgICBwcml2YXRlIHRhYnNTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICAvKiogU3Vic2NyaXB0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIHRhYiBsYWJlbHMuICovXG4gICAgcHJpdmF0ZSB0YWJMYWJlbFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBJZDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplRGVib3VuY2VJbnRlcnZhbDogbnVtYmVyID0gMTAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAQXR0cmlidXRlKCd2ZXJ0aWNhbCcpIHZlcnRpY2FsOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ3VuZGVybGluZWQnKSB1bmRlcmxpbmVkOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoS0JRX1RBQlNfQ09ORklHKSBAT3B0aW9uYWwoKSBkZWZhdWx0Q29uZmlnPzogSUticVRhYnNDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgdGhpcy52ZXJ0aWNhbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2ZXJ0aWNhbCk7XG4gICAgICAgIHRoaXMudW5kZXJsaW5lZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh1bmRlcmxpbmVkKTtcblxuICAgICAgICB0aGlzLmdyb3VwSWQgPSBuZXh0SWQrKztcbiAgICAgICAgdGhpcy5hbmltYXRpb25EdXJhdGlvbiA9IGRlZmF1bHRDb25maWc/LmFuaW1hdGlvbkR1cmF0aW9uIHx8ICcwbXMnO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZXNpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciB0aGUgY29udGVudCBpcyBjaGVja2VkLCB0aGlzIGNvbXBvbmVudCBrbm93cyB3aGF0IHRhYnMgaGF2ZSBiZWVuIGRlZmluZWRcbiAgICAgKiBhbmQgd2hhdCB0aGUgc2VsZWN0ZWQgaW5kZXggc2hvdWxkIGJlLiBUaGlzIGlzIHdoZXJlIHdlIGNhbiBrbm93IGV4YWN0bHkgd2hhdCBwb3NpdGlvblxuICAgICAqIGVhY2ggdGFiIHNob3VsZCBiZSBpbiBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzZWxlY3RlZCBpbmRleCwgYW5kIGFkZGl0aW9uYWxseSB3ZSBrbm93IGhvd1xuICAgICAqIGEgbmV3IHNlbGVjdGVkIHRhYiBzaG91bGQgdHJhbnNpdGlvbiBpbiAoZnJvbSB0aGUgbGVmdCBvciByaWdodCkuXG4gICAgICovXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgICAgICAvLyBEb24ndCBjbGFtcCB0aGUgYGluZGV4VG9TZWxlY3RgIGltbWVkaWF0ZWx5IGluIHRoZSBzZXR0ZXIgYmVjYXVzZSBpdCBjYW4gaGFwcGVuIHRoYXRcbiAgICAgICAgLy8gdGhlIGFtb3VudCBvZiB0YWJzIGNoYW5nZXMgYmVmb3JlIHRoZSBhY3R1YWwgY2hhbmdlIGRldGVjdGlvbiBydW5zLlxuICAgICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5nZXRUYWJJbmRleFRvU2VsZWN0KCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gc2VsZWN0ZWQgaW5kZXgsIGVtaXQgYSBjaGFuZ2UgZXZlbnQuIFNob3VsZCBub3QgdHJpZ2dlciBpZlxuICAgICAgICAvLyB0aGUgc2VsZWN0ZWQgaW5kZXggaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RSdW4gPSB0aGlzLl9zZWxlY3RlZEluZGV4ID09IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghaXNGaXJzdFJ1bikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0aGlzLmNyZWF0ZUNoYW5nZUV2ZW50KGluZGV4VG9TZWxlY3QpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hhbmdpbmcgdGhlc2UgdmFsdWVzIGFmdGVyIGNoYW5nZSBkZXRlY3Rpb24gaGFzIHJ1blxuICAgICAgICAgICAgLy8gc2luY2UgdGhlIGNoZWNrZWQgY29udGVudCBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRvIHRoZW0uXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiLCBpbmRleCkgPT4gKHRhYi5pc0FjdGl2ZSA9IGluZGV4ID09PSBpbmRleFRvU2VsZWN0KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzRmlyc3RSdW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFiVG9TZWxlY3QgPSB0aGlzLmFjdGl2ZVRhYjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdChpbmRleFRvU2VsZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSAmJiB0eXBlb2YgdGhpcy5hdHRyaWJ1dGVUb1NlbGVjdEJ5ID09PSAnZnVuY3Rpb24nICYmIHRhYlRvU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0YWJUb1NlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSBhcyBzdHJpbmcgfCBudW1iZXIpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXR1cCB0aGUgcG9zaXRpb24gZm9yIGVhY2ggdGFiIGFuZCBvcHRpb25hbGx5IHNldHVwIGFuIG9yaWdpbiBvbiB0aGUgbmV4dCBzZWxlY3RlZCB0YWIuXG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWI6IEticVRhYiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGFiLnBvc2l0aW9uID0gaW5kZXggLSBpbmRleFRvU2VsZWN0O1xuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgc2VsZWN0ZWQgdGFiLCB0aGVuIHNldCB1cCBhbiBvcmlnaW4gZm9yIHRoZSBuZXh0IHNlbGVjdGVkIHRhYlxuICAgICAgICAgICAgLy8gaWYgaXQgZG9lc24ndCBoYXZlIG9uZSBhbHJlYWR5LlxuXG4gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPSBudWxsICYmIHRhYi5wb3NpdGlvbiA9PT0gMCAmJiAhdGFiLm9yaWdpbikge1xuICAgICAgICAgICAgICAgIHRhYi5vcmlnaW4gPSBpbmRleFRvU2VsZWN0IC0gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBpbmRleFRvU2VsZWN0O1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1RhYkxhYmVscygpO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byBjaGFuZ2VzIGluIHRoZSBhbW91bnQgb2YgdGFicywgaW4gb3JkZXIgdG8gYmVcbiAgICAgICAgLy8gYWJsZSB0byByZS1yZW5kZXIgdGhlIGNvbnRlbnQgYXMgbmV3IHRhYnMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuXG4gICAgICAgIHRoaXMudGFic1N1YnNjcmlwdGlvbiA9IHRoaXMudGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5jbGFtcFRhYkluZGV4KHRoaXMuaW5kZXhUb1NlbGVjdCk7XG4gICAgICAgICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5nZXRUYWJJbmRleFRvU2VsZWN0KCk7XG5cbiAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBwcmV2aW91c2x5LXNlbGVjdGVkIHRhYiBpZiBhIG5ldyB0YWIgaXMgYWRkZWQgb3IgcmVtb3ZlZCBhbmQgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgIC8vIGV4cGxpY2l0IGNoYW5nZSB0aGF0IHNlbGVjdHMgYSBkaWZmZXJlbnQgdGFiLlxuICAgICAgICAgICAgaWYgKGluZGV4VG9TZWxlY3QgPT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFic1tpXS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzaWduIGJvdGggdG8gdGhlIGBhY3RpdmVUYWJgIGFuZCBgX3NlbGVjdGVkSW5kZXhgIHNvIHdlIGRvbid0IGZpcmUgYSBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVudCwgb3RoZXJ3aXNlIHRoZSBjb25zdW1lciBtYXkgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AgaW4gc29tZSBlZGdlIGNhc2VzIGxpa2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGluZyBhIHRhYiB3aXRoaW4gdGhlIGBzZWxlY3RlZEluZGV4Q2hhbmdlYCBldmVudC5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEZvY3VzZWRJbmRleChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnRhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGZvY3VzQ2hhbmdlZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLmNyZWF0ZUNoYW5nZUV2ZW50KGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgYSB1bmlxdWUgaWQgZm9yIGVhY2ggdGFiIGxhYmVsIGVsZW1lbnQgKi9cbiAgICBnZXRUYWJMYWJlbElkKGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBga2JxLXRhYi1sYWJlbC0ke3RoaXMuZ3JvdXBJZH0tJHtpfWA7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgYSB1bmlxdWUgaWQgZm9yIGVhY2ggdGFiIGNvbnRlbnQgZWxlbWVudCAqL1xuICAgIGdldFRhYkNvbnRlbnRJZChpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGticS10YWItY29udGVudC0ke3RoaXMuZ3JvdXBJZH0tJHtpfWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBib2R5IHdyYXBwZXIgdG8gdGhlIGhlaWdodCBvZiB0aGUgYWN0aXZhdGluZyB0YWIgaWYgZHluYW1pY1xuICAgICAqIGhlaWdodCBwcm9wZXJ0eSBpcyB0cnVlLlxuICAgICAqL1xuICAgIHNldFRhYkJvZHlXcmFwcGVySGVpZ2h0KHRhYkhlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZHluYW1pY0hlaWdodCB8fCAhdGhpcy50YWJCb2R5V3JhcHBlckhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlcjogSFRNTEVsZW1lbnQgPSB0aGlzLnRhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgd3JhcHBlci5zdHlsZS5oZWlnaHQgPSBgJHt0aGlzLnRhYkJvZHlXcmFwcGVySGVpZ2h0fXB4YDtcblxuICAgICAgICAvLyBUaGlzIGNvbmRpdGlvbmFsIGZvcmNlcyB0aGUgYnJvd3NlciB0byBwYWludCB0aGUgaGVpZ2h0IHNvIHRoYXRcbiAgICAgICAgLy8gdGhlIGFuaW1hdGlvbiB0byB0aGUgbmV3IGhlaWdodCBjYW4gaGF2ZSBhbiBvcmlnaW4uXG4gICAgICAgIGlmICh0aGlzLnRhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSB7XG4gICAgICAgICAgICB3cmFwcGVyLnN0eWxlLmhlaWdodCA9IGAke3RhYkhlaWdodH1weGA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0YWIgYm9keSB3cmFwcGVyLiAqL1xuICAgIHJlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYkJvZHlXcmFwcGVySGVpZ2h0ID0gdGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgdGhpcy50YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9ICcnO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGUgY2xpY2sgZXZlbnRzLCBzZXR0aW5nIG5ldyBzZWxlY3RlZCBpbmRleCBpZiBhcHByb3ByaWF0ZS4gKi9cbiAgICBoYW5kbGVDbGljayh0YWI6IEticVRhYiwgdGFiSGVhZGVyOiBLYnFUYWJIZWFkZXIsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdEZvY3VzZWRJbmRleChpbmRleCk7XG4gICAgICAgIHRhYkhlYWRlci5mb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqIFJldHJpZXZlcyB0aGUgdGFiaW5kZXggZm9yIHRoZSB0YWIuICovXG4gICAgZ2V0VGFiSW5kZXgodGFiOiBLYnFUYWIsIGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEluZGV4ID09PSBpbmRleCA/IDAgOiAtMTtcbiAgICB9XG5cbiAgICBvblNlbGVjdEZvY3VzZWRJbmRleCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXR0cmlidXRlVG9TZWxlY3RCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzLmdldCgkZXZlbnQpPy50YWJJZCB8fCBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAkZXZlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja092ZXJmbG93ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYkhlYWRlci5pdGVtcy5mb3JFYWNoKChoZWFkZXJUYWIpID0+IGhlYWRlclRhYi5jaGVja092ZXJmbG93KCkpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoYW5nZUV2ZW50KGluZGV4OiBudW1iZXIpOiBLYnFUYWJDaGFuZ2VFdmVudCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEticVRhYkNoYW5nZUV2ZW50KCk7XG4gICAgICAgIGV2ZW50LmluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgaWYgKHRoaXMudGFicyAmJiB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBldmVudC50YWIgPSB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIGNoYW5nZXMgaW4gdGhlIHRhYiBsYWJlbHMuIFRoaXMgaXMgbmVlZGVkLCBiZWNhdXNlIHRoZSBASW5wdXQgZm9yIHRoZSBsYWJlbCBpc1xuICAgICAqIG9uIHRoZSBLYnFUYWIgY29tcG9uZW50LCB3aGVyZWFzIHRoZSBkYXRhIGJpbmRpbmcgaXMgaW5zaWRlIHRoZSBLYnFUYWJHcm91cC4gSW4gb3JkZXIgZm9yIHRoZVxuICAgICAqIGJpbmRpbmcgdG8gYmUgdXBkYXRlZCwgd2UgbmVlZCB0byBzdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiBpdCBhbmQgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICogbWFudWFsbHkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1RhYkxhYmVscygpIHtcbiAgICAgICAgaWYgKHRoaXMudGFiTGFiZWxTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFiTGFiZWxTdWJzY3JpcHRpb24gPSBtZXJnZSguLi50aGlzLnRhYnMubWFwKCh0YWIpID0+IHRhYi5zdGF0ZUNoYW5nZXMpKS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvUmVzaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMudmVydGljYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5yZXNpemVTdHJlYW1cbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLnJlc2l6ZURlYm91bmNlSW50ZXJ2YWwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLmNoZWNrT3ZlcmZsb3cpO1xuICAgIH1cblxuICAgIC8qKiBDbGFtcHMgdGhlIGdpdmVuIGluZGV4IHRvIHRoZSBib3VuZHMgb2YgMCBhbmQgdGhlIHRhYnMgbGVuZ3RoLiAqL1xuICAgIHByaXZhdGUgY2xhbXBUYWJJbmRleChpbmRleDogbnVtYmVyIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIC8vIE5vdGUgdGhlIGB8fCAwYCwgd2hpY2ggZW5zdXJlcyB0aGF0IHZhbHVlcyBsaWtlIE5hTiBjYW4ndCBnZXQgdGhyb3VnaFxuICAgICAgICAvLyBhbmQgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHRocm93IHRoZSBjb21wb25lbnQgaW50byBhbiBpbmZpbml0ZSBsb29wXG4gICAgICAgIC8vIChzaW5jZSBNYXRoLm1heChOYU4sIDApID09PSBOYU4pLlxuICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy50YWJzLmxlbmd0aCAtIDEsIE1hdGgubWF4KGluZGV4IHx8IDAsIDApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYkluZGV4VG9TZWxlY3QoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkVGFiID0gdGhpcy5hY3RpdmVUYWI7XG4gICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRUYWIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnM/LnRvQXJyYXkoKS5pbmRleE9mKGN1cnJlbnRTZWxlY3RlZFRhYik7XG4gICAgfVxufVxuIiwiPGticS10YWItaGVhZGVyXG4gICAgI3RhYkhlYWRlclxuICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXhcIlxuICAgIFt1bmRlcmxpbmVkXT1cInVuZGVybGluZWRcIlxuICAgIFt2ZXJ0aWNhbF09XCJ2ZXJ0aWNhbFwiXG4gICAgKGluZGV4Rm9jdXNlZCk9XCJmb2N1c0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgKHNlbGVjdEZvY3VzZWRJbmRleCk9XCJvblNlbGVjdEZvY3VzZWRJbmRleCgkZXZlbnQpXCJcbj5cbiAgICBAZm9yICh0YWIgb2YgdGFiczsgdHJhY2sgdGFiOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzXG4gICAgICAgICAgICBrYnFUYWJMYWJlbFdyYXBwZXJcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLXRhYi1sYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJnZXRUYWJJbmRleCh0YWIsIGkpXCJcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLXRhYi1sYWJlbF9lbXB0eV09XCJ0YWIuZW1wdHlcIlxuICAgICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfaG9yaXpvbnRhbF09XCIhdmVydGljYWxcIlxuICAgICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfdW5kZXJsaW5lZF09XCJ1bmRlcmxpbmVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5rYnEtdGFiLWxhYmVsX3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cImdldFRhYkxhYmVsSWQoaSlcIlxuICAgICAgICAgICAgW2ticVBsYWNlbWVudF09XCJ0YWIudG9vbHRpcFBsYWNlbWVudFwiXG4gICAgICAgICAgICBba2JxVG9vbHRpcF09XCJ0YWIudG9vbHRpcFRpdGxlXCJcbiAgICAgICAgICAgIFtrYnFUb29sdGlwRGlzYWJsZWRdPVwiIXRhYi5lbXB0eSAmJiAhdGFiLmlzT3ZlcmZsb3duXCJcbiAgICAgICAgICAgIFtrYnFUcmlnZ2VyXT1cIidob3ZlciwgZm9jdXMnXCJcbiAgICAgICAgICAgIFt0YWJdPVwidGFiXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljayh0YWIsIHRhYkhlYWRlciwgaSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2xhYmVsQ29udGVudFxuICAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLXRhYi1sYWJlbF9fY29udGVudFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmticS10YWItbGFiZWxfX3RlbXBsYXRlXT1cInRhYi50ZW1wbGF0ZUxhYmVsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS0+XG4gICAgICAgICAgICAgICAgQGlmICh0YWIudGVtcGxhdGVMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS0+XG4gICAgICAgICAgICAgICAgQGlmICghdGFiLnRlbXBsYXRlTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgdGFiLnRleHRMYWJlbCB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2ticS10YWItaGVhZGVyPlxuXG48ZGl2XG4gICAgI3RhYkJvZHlXcmFwcGVyXG4gICAgY2xhc3M9XCJrYnEtdGFiLWJvZHlfX3dyYXBwZXJcIlxuPlxuICAgIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayB0YWI7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgIDxrYnEtdGFiLWJvZHlcbiAgICAgICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvblwiXG4gICAgICAgICAgICBbY2xhc3Mua2JxLXRhYi1ib2R5X19hY3RpdmVdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICBbY29udGVudF09XCJ0YWIuY29udGVudCFcIlxuICAgICAgICAgICAgW2lkXT1cImdldFRhYkNvbnRlbnRJZChpKVwiXG4gICAgICAgICAgICBbb3JpZ2luXT1cInRhYi5vcmlnaW4hXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0YWIucG9zaXRpb24hXCJcbiAgICAgICAgICAgIChvbkNlbnRlcmVkKT1cInJlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KClcIlxuICAgICAgICAgICAgKG9uQ2VudGVyaW5nKT1cInNldFRhYkJvZHlXcmFwcGVySGVpZ2h0KCRldmVudClcIlxuICAgICAgICAvPlxuICAgIH1cbjwvZGl2PlxuIl19