@koobiq/components 16.0.0-beta.9 → 17.0.0-beta.2

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 (427) hide show
  1. package/autocomplete/_autocomplete-theme.scss +3 -10
  2. package/autocomplete/autocomplete-trigger.directive.d.ts +7 -1
  3. package/autocomplete/autocomplete.scss +0 -5
  4. package/badge/_badge-theme.scss +4 -0
  5. package/badge/badge.component.d.ts +1 -0
  6. package/button/_button-base.scss +1 -1
  7. package/button/_button-theme.scss +23 -38
  8. package/button-toggle/_button-toggle-theme.scss +4 -0
  9. package/checkbox/_checkbox-theme.scss +9 -6
  10. package/checkbox/checkbox.scss +6 -9
  11. package/code-block/_code-block-theme.scss +53 -16
  12. package/code-block/actionbar.component.scss +34 -6
  13. package/code-block/code-block.component.d.ts +5 -2
  14. package/code-block/code-block.scss +112 -28
  15. package/core/common-behaviors/index.d.ts +2 -0
  16. package/core/datetime/date-adapter.d.ts +1 -1
  17. package/core/datetime/date-formats.d.ts +1 -1
  18. package/core/formatters/date/formatter.d.ts +2 -2
  19. package/core/formatters/date/formatter.pipe.d.ts +1 -1
  20. package/core/locales/en-US.d.ts +25 -22
  21. package/core/locales/es-LA.d.ts +24 -27
  22. package/core/locales/fa-IR.d.ts +24 -28
  23. package/core/locales/formatters.d.ts +121 -0
  24. package/core/locales/index.d.ts +7 -2
  25. package/core/locales/locale-service.d.ts +146 -32
  26. package/core/locales/pt-BR.d.ts +24 -27
  27. package/core/locales/ru-RU.d.ts +25 -23
  28. package/core/locales/zh-CN.d.ts +25 -27
  29. package/core/option/_option-action-theme.scss +1 -1
  30. package/core/option/_option-theme.scss +5 -5
  31. package/core/option/action.scss +1 -1
  32. package/core/pop-up/pop-up.d.ts +7 -0
  33. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +4 -15
  34. package/core/styles/_koobiq-theme.scss +3 -1
  35. package/core/styles/_variables.scss +1 -10
  36. package/core/styles/common/_overlay.scss +4 -0
  37. package/core/styles/common/_select.scss +2 -1
  38. package/core/styles/theming/_components-theming.scss +99 -38
  39. package/core/styles/theming/{_scrollbars-theme.scss → _scrollbar-theme.scss} +25 -4
  40. package/core/styles/theming/_theming.scss +1 -0
  41. package/core/styles/typography/_typography.scss +8 -1
  42. package/core/utils/data-size/data-size.pipe.d.ts +1 -1
  43. package/dropdown/_dropdown-theme.scss +1 -2
  44. package/ellipsis-center/ellipsis-center.directive.d.ts +3 -3
  45. package/esm2022/alert/alert.component.mjs +12 -12
  46. package/esm2022/alert/alert.module.mjs +4 -4
  47. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
  48. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +18 -6
  49. package/esm2022/autocomplete/autocomplete.component.mjs +8 -8
  50. package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
  51. package/esm2022/badge/badge.component.mjs +13 -12
  52. package/esm2022/badge/badge.module.mjs +4 -4
  53. package/esm2022/button/button.component.mjs +16 -13
  54. package/esm2022/button/button.module.mjs +4 -4
  55. package/esm2022/button-toggle/button-toggle.component.mjs +12 -12
  56. package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
  57. package/esm2022/card/card.component.mjs +5 -5
  58. package/esm2022/card/card.module.mjs +4 -4
  59. package/esm2022/checkbox/checkbox-module.mjs +4 -4
  60. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  61. package/esm2022/checkbox/checkbox.mjs +7 -7
  62. package/esm2022/code-block/actionbar.component.mjs +5 -5
  63. package/esm2022/code-block/code-block.component.mjs +32 -14
  64. package/esm2022/code-block/code-block.module.mjs +8 -8
  65. package/esm2022/core/common-behaviors/color.mjs +1 -1
  66. package/esm2022/core/common-behaviors/common-module.mjs +7 -7
  67. package/esm2022/core/common-behaviors/error-state.mjs +1 -1
  68. package/esm2022/core/common-behaviors/index.mjs +3 -1
  69. package/esm2022/core/datetime/date-adapter.mjs +2 -2
  70. package/esm2022/core/datetime/date-formats.mjs +1 -1
  71. package/esm2022/core/error/error-options.mjs +6 -6
  72. package/esm2022/core/formatters/date/formatter.mjs +9 -9
  73. package/esm2022/core/formatters/date/formatter.pipe.mjs +53 -53
  74. package/esm2022/core/formatters/index.mjs +7 -6
  75. package/esm2022/core/formatters/number/formatter.mjs +19 -19
  76. package/esm2022/core/forms/forms-module.mjs +4 -4
  77. package/esm2022/core/forms/forms.directive.mjs +8 -8
  78. package/esm2022/core/highlight/highlight.pipe.mjs +5 -5
  79. package/esm2022/core/highlight/index.mjs +4 -4
  80. package/esm2022/core/line/line.mjs +8 -8
  81. package/esm2022/core/locales/en-US.mjs +25 -22
  82. package/esm2022/core/locales/es-LA.mjs +24 -29
  83. package/esm2022/core/locales/fa-IR.mjs +24 -28
  84. package/esm2022/core/locales/formatters.mjs +126 -0
  85. package/esm2022/core/locales/index.mjs +8 -3
  86. package/esm2022/core/locales/locale-service.mjs +14 -13
  87. package/esm2022/core/locales/locale-service.module.mjs +4 -4
  88. package/esm2022/core/locales/pt-BR.mjs +24 -27
  89. package/esm2022/core/locales/ru-RU.mjs +25 -25
  90. package/esm2022/core/locales/zh-CN.mjs +25 -27
  91. package/esm2022/core/option/action.mjs +9 -8
  92. package/esm2022/core/option/optgroup.mjs +4 -4
  93. package/esm2022/core/option/option-module.mjs +4 -4
  94. package/esm2022/core/option/option.mjs +8 -8
  95. package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
  96. package/esm2022/core/pop-up/pop-up-trigger.mjs +6 -6
  97. package/esm2022/core/pop-up/pop-up.mjs +12 -5
  98. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +6 -6
  99. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
  100. package/esm2022/core/services/measure-scrollbar.service.mjs +6 -6
  101. package/esm2022/core/services/theme.service.mjs +5 -5
  102. package/esm2022/core/utils/data-size/data-size.pipe.mjs +9 -9
  103. package/esm2022/core/utils/data-size/size.mjs +1 -1
  104. package/esm2022/core/version.mjs +2 -2
  105. package/esm2022/datepicker/calendar-body.component.mjs +4 -4
  106. package/esm2022/datepicker/calendar-header.component.mjs +5 -5
  107. package/esm2022/datepicker/calendar.component.mjs +6 -6
  108. package/esm2022/datepicker/datepicker-animations.mjs +1 -1
  109. package/esm2022/datepicker/datepicker-input.directive.mjs +6 -6
  110. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  111. package/esm2022/datepicker/datepicker-module.mjs +4 -4
  112. package/esm2022/datepicker/datepicker-toggle.component.mjs +8 -8
  113. package/esm2022/datepicker/datepicker.component.mjs +10 -10
  114. package/esm2022/datepicker/month-view.component.mjs +6 -6
  115. package/esm2022/divider/divider.component.mjs +3 -3
  116. package/esm2022/divider/divider.module.mjs +4 -4
  117. package/esm2022/dl/dl.component.mjs +11 -11
  118. package/esm2022/dl/dl.module.mjs +4 -4
  119. package/esm2022/dropdown/dropdown-content.directive.mjs +6 -6
  120. package/esm2022/dropdown/dropdown-item.component.mjs +9 -8
  121. package/esm2022/dropdown/dropdown-trigger.directive.mjs +6 -6
  122. package/esm2022/dropdown/dropdown.component.mjs +6 -6
  123. package/esm2022/dropdown/dropdown.module.mjs +4 -4
  124. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +20 -20
  125. package/esm2022/file-upload/file-drop.mjs +43 -6
  126. package/esm2022/file-upload/file-upload.mjs +1 -1
  127. package/esm2022/file-upload/file-upload.module.mjs +4 -4
  128. package/esm2022/file-upload/multiple-file-upload.component.mjs +47 -26
  129. package/esm2022/file-upload/single-file-upload.component.mjs +39 -16
  130. package/esm2022/form-field/cleaner.mjs +3 -3
  131. package/esm2022/form-field/form-field.mjs +21 -15
  132. package/esm2022/form-field/form-field.module.mjs +4 -4
  133. package/esm2022/form-field/hint.mjs +20 -8
  134. package/esm2022/form-field/password-hint.mjs +24 -21
  135. package/esm2022/form-field/password-toggle.mjs +6 -6
  136. package/esm2022/form-field/prefix.mjs +3 -3
  137. package/esm2022/form-field/stepper.mjs +4 -4
  138. package/esm2022/form-field/suffix.mjs +3 -3
  139. package/esm2022/form-field/validate.directive.mjs +17 -12
  140. package/esm2022/icon/icon-button.component.mjs +7 -6
  141. package/esm2022/icon/icon-item.component.mjs +7 -6
  142. package/esm2022/icon/icon.component.mjs +18 -6
  143. package/esm2022/icon/icon.module.mjs +4 -4
  144. package/esm2022/input/input-number-validators.mjs +7 -7
  145. package/esm2022/input/input-number.mjs +12 -9
  146. package/esm2022/input/input-password.mjs +6 -6
  147. package/esm2022/input/input.mjs +9 -9
  148. package/esm2022/input/input.module.mjs +4 -4
  149. package/esm2022/link/link.component.mjs +5 -5
  150. package/esm2022/link/link.module.mjs +4 -4
  151. package/esm2022/list/list-selection.component.mjs +16 -16
  152. package/esm2022/list/list.component.mjs +9 -9
  153. package/esm2022/list/list.module.mjs +4 -4
  154. package/esm2022/loader-overlay/loader-overlay.component.mjs +15 -15
  155. package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
  156. package/esm2022/markdown/markdown.component.mjs +5 -5
  157. package/esm2022/markdown/markdown.module.mjs +4 -4
  158. package/esm2022/markdown/markdown.service.mjs +3 -3
  159. package/esm2022/modal/css-unit.pipe.mjs +3 -3
  160. package/esm2022/modal/modal-control.service.mjs +6 -6
  161. package/esm2022/modal/modal.component.mjs +22 -16
  162. package/esm2022/modal/modal.directive.mjs +12 -12
  163. package/esm2022/modal/modal.module.mjs +4 -4
  164. package/esm2022/modal/modal.service.mjs +5 -5
  165. package/esm2022/modal/modal.type.mjs +1 -1
  166. package/esm2022/navbar/navbar-item.component.mjs +69 -104
  167. package/esm2022/navbar/navbar.component.mjs +28 -17
  168. package/esm2022/navbar/navbar.module.mjs +6 -10
  169. package/esm2022/navbar/vertical-navbar.component.mjs +9 -13
  170. package/esm2022/popover/popover-confirm.component.mjs +11 -13
  171. package/esm2022/popover/popover.component.mjs +16 -11
  172. package/esm2022/popover/popover.module.mjs +4 -4
  173. package/esm2022/progress-bar/progress-bar.component.mjs +11 -11
  174. package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
  175. package/esm2022/progress-spinner/progress-spinner.component.mjs +12 -12
  176. package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
  177. package/esm2022/radio/radio.component.mjs +10 -10
  178. package/esm2022/radio/radio.module.mjs +4 -4
  179. package/esm2022/risk-level/risk-level.component.mjs +3 -3
  180. package/esm2022/risk-level/risk-level.module.mjs +4 -4
  181. package/esm2022/scrollbar/index.mjs +2 -0
  182. package/esm2022/scrollbar/koobiq-components-scrollbar.mjs +5 -0
  183. package/esm2022/scrollbar/public-api.mjs +5 -0
  184. package/esm2022/scrollbar/scrollbar.component.mjs +130 -0
  185. package/esm2022/scrollbar/scrollbar.directive.mjs +97 -0
  186. package/esm2022/scrollbar/scrollbar.module.mjs +20 -0
  187. package/esm2022/scrollbar/scrollbar.types.mjs +13 -0
  188. package/esm2022/select/select-option.directive.mjs +6 -6
  189. package/esm2022/select/select.component.mjs +43 -36
  190. package/esm2022/select/select.module.mjs +4 -4
  191. package/esm2022/sidebar/sidebar.component.mjs +11 -11
  192. package/esm2022/sidebar/sidebar.module.mjs +4 -4
  193. package/esm2022/sidepanel/sidepanel-animations.mjs +5 -5
  194. package/esm2022/sidepanel/sidepanel-container.component.mjs +11 -11
  195. package/esm2022/sidepanel/sidepanel-directives.mjs +26 -26
  196. package/esm2022/sidepanel/sidepanel-ref.mjs +1 -1
  197. package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
  198. package/esm2022/sidepanel/sidepanel.service.mjs +6 -6
  199. package/esm2022/splitter/splitter.component.mjs +17 -17
  200. package/esm2022/splitter/splitter.module.mjs +4 -4
  201. package/esm2022/table/table.component.mjs +3 -3
  202. package/esm2022/table/table.module.mjs +4 -4
  203. package/esm2022/tabs/paginated-tab-header.mjs +6 -6
  204. package/esm2022/tabs/tab-body.component.mjs +12 -12
  205. package/esm2022/tabs/tab-content.directive.mjs +4 -4
  206. package/esm2022/tabs/tab-group.component.mjs +21 -21
  207. package/esm2022/tabs/tab-header.component.mjs +7 -7
  208. package/esm2022/tabs/tab-label-wrapper.directive.mjs +6 -5
  209. package/esm2022/tabs/tab-label.directive.mjs +3 -3
  210. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +12 -11
  211. package/esm2022/tabs/tab.component.mjs +5 -5
  212. package/esm2022/tabs/tabs.module.mjs +4 -4
  213. package/esm2022/tags/tag-input.mjs +31 -11
  214. package/esm2022/tags/tag-list.component.mjs +9 -8
  215. package/esm2022/tags/tag.component.mjs +16 -16
  216. package/esm2022/tags/tag.module.mjs +4 -4
  217. package/esm2022/textarea/textarea.component.mjs +36 -25
  218. package/esm2022/textarea/textarea.module.mjs +4 -4
  219. package/esm2022/timepicker/timepicker.directive.mjs +6 -6
  220. package/esm2022/timepicker/timepicker.module.mjs +4 -4
  221. package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
  222. package/esm2022/timezone/timezone-option.component.mjs +10 -9
  223. package/esm2022/timezone/timezone-option.directive.mjs +5 -5
  224. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  225. package/esm2022/timezone/timezone.module.mjs +4 -4
  226. package/esm2022/timezone/timezone.utils.mjs +9 -4
  227. package/esm2022/timezone/utc-offset.pipe.mjs +6 -6
  228. package/esm2022/title/title.directive.mjs +6 -6
  229. package/esm2022/title/title.module.mjs +4 -4
  230. package/esm2022/toast/toast-animations.mjs +3 -3
  231. package/esm2022/toast/toast-container.component.mjs +7 -7
  232. package/esm2022/toast/toast.component.mjs +12 -11
  233. package/esm2022/toast/toast.module.mjs +4 -4
  234. package/esm2022/toast/toast.service.mjs +16 -8
  235. package/esm2022/toast/toast.type.mjs +1 -1
  236. package/esm2022/toggle/toggle.component.mjs +5 -5
  237. package/esm2022/toggle/toggle.module.mjs +4 -4
  238. package/esm2022/tooltip/tooltip.component.mjs +24 -24
  239. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  240. package/esm2022/tree/control/base-tree-control.mjs +4 -4
  241. package/esm2022/tree/control/flat-tree-control.filters.mjs +47 -0
  242. package/esm2022/tree/control/flat-tree-control.mjs +27 -45
  243. package/esm2022/tree/control/nested-tree-control.mjs +1 -1
  244. package/esm2022/tree/control/tree-control.mjs +1 -1
  245. package/esm2022/tree/data-source/flat-data-source.mjs +1 -1
  246. package/esm2022/tree/node.mjs +5 -5
  247. package/esm2022/tree/outlet.mjs +4 -4
  248. package/esm2022/tree/padding.directive.mjs +6 -6
  249. package/esm2022/tree/public-api.mjs +2 -1
  250. package/esm2022/tree/toggle.mjs +12 -12
  251. package/esm2022/tree/tree-base.mjs +10 -10
  252. package/esm2022/tree/tree-option.component.mjs +12 -8
  253. package/esm2022/tree/tree-selection.component.mjs +6 -6
  254. package/esm2022/tree/tree.mjs +3 -3
  255. package/esm2022/tree/tree.module.mjs +4 -4
  256. package/esm2022/tree-select/tree-select.component.mjs +29 -19
  257. package/esm2022/tree-select/tree-select.module.mjs +9 -9
  258. package/fesm2022/koobiq-components-alert.mjs +16 -16
  259. package/fesm2022/koobiq-components-autocomplete.mjs +32 -20
  260. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  261. package/fesm2022/koobiq-components-badge.mjs +16 -15
  262. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  263. package/fesm2022/koobiq-components-button-toggle.mjs +15 -15
  264. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  265. package/fesm2022/koobiq-components-button.mjs +19 -16
  266. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  267. package/fesm2022/koobiq-components-card.mjs +8 -8
  268. package/fesm2022/koobiq-components-card.mjs.map +1 -1
  269. package/fesm2022/koobiq-components-checkbox.mjs +13 -13
  270. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  271. package/fesm2022/koobiq-components-code-block.mjs +40 -23
  272. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  273. package/fesm2022/koobiq-components-core.mjs +473 -350
  274. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  275. package/fesm2022/koobiq-components-datepicker.mjs +45 -45
  276. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  277. package/fesm2022/koobiq-components-divider.mjs +7 -7
  278. package/fesm2022/koobiq-components-dl.mjs +14 -14
  279. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  280. package/fesm2022/koobiq-components-dropdown.mjs +27 -26
  281. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  282. package/fesm2022/koobiq-components-ellipsis-center.mjs +19 -19
  283. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  284. package/fesm2022/koobiq-components-file-upload.mjs +128 -50
  285. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  286. package/fesm2022/koobiq-components-form-field.mjs +97 -72
  287. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  288. package/fesm2022/koobiq-components-icon.mjs +33 -19
  289. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  290. package/fesm2022/koobiq-components-input.mjs +34 -31
  291. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  292. package/fesm2022/koobiq-components-link.mjs +8 -8
  293. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  294. package/fesm2022/koobiq-components-list.mjs +27 -27
  295. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  296. package/fesm2022/koobiq-components-loader-overlay.mjs +18 -18
  297. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  298. package/fesm2022/koobiq-components-markdown.mjs +11 -11
  299. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  300. package/fesm2022/koobiq-components-modal.mjs +49 -43
  301. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  302. package/fesm2022/koobiq-components-navbar.mjs +108 -149
  303. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  304. package/fesm2022/koobiq-components-popover.mjs +30 -26
  305. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  306. package/fesm2022/koobiq-components-progress-bar.mjs +14 -14
  307. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  308. package/fesm2022/koobiq-components-progress-spinner.mjs +15 -15
  309. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  310. package/fesm2022/koobiq-components-radio.mjs +13 -13
  311. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  312. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  313. package/fesm2022/koobiq-components-scrollbar.mjs +256 -0
  314. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -0
  315. package/fesm2022/koobiq-components-select.mjs +49 -42
  316. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  317. package/fesm2022/koobiq-components-sidebar.mjs +14 -14
  318. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  319. package/fesm2022/koobiq-components-sidepanel.mjs +47 -47
  320. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  321. package/fesm2022/koobiq-components-splitter.mjs +20 -20
  322. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  323. package/fesm2022/koobiq-components-table.mjs +7 -7
  324. package/fesm2022/koobiq-components-tabs.mjs +72 -70
  325. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  326. package/fesm2022/koobiq-components-tags.mjs +56 -36
  327. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  328. package/fesm2022/koobiq-components-textarea.mjs +39 -28
  329. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  330. package/fesm2022/koobiq-components-timepicker.mjs +9 -9
  331. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  332. package/fesm2022/koobiq-components-timezone.mjs +42 -37
  333. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  334. package/fesm2022/koobiq-components-title.mjs +9 -9
  335. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  336. package/fesm2022/koobiq-components-toast.mjs +36 -27
  337. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  338. package/fesm2022/koobiq-components-toggle.mjs +8 -8
  339. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  340. package/fesm2022/koobiq-components-tooltip.mjs +27 -27
  341. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  342. package/fesm2022/koobiq-components-tree-select.mjs +36 -26
  343. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  344. package/fesm2022/koobiq-components-tree.mjs +132 -100
  345. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  346. package/file-upload/_file-upload-theme.scss +10 -1
  347. package/file-upload/file-drop.d.ts +2 -1
  348. package/file-upload/file-upload.d.ts +4 -1
  349. package/file-upload/multiple-file-upload.component.d.ts +14 -6
  350. package/file-upload/single-file-upload.component.d.ts +12 -6
  351. package/form-field/_form-field-theme.scss +8 -14
  352. package/form-field/form-field.d.ts +2 -0
  353. package/form-field/form-field.scss +12 -1
  354. package/form-field/hint.scss +1 -1
  355. package/form-field/password-hint.d.ts +7 -5
  356. package/icon/icon-button.component.d.ts +1 -0
  357. package/icon/icon-item.component.d.ts +1 -0
  358. package/icon/icon.component.d.ts +3 -0
  359. package/input/input-number.d.ts +3 -2
  360. package/link/_link-theme.scss +1 -0
  361. package/list/_list-theme.scss +1 -2
  362. package/list/list.scss +3 -3
  363. package/loader-overlay/loader-overlay.scss +2 -2
  364. package/modal/_modal-confirm.scss +0 -24
  365. package/modal/modal.component.d.ts +4 -2
  366. package/modal/modal.scss +32 -20
  367. package/modal/modal.type.d.ts +0 -1
  368. package/navbar/_navbar-item_horizontal.scss +97 -0
  369. package/navbar/_navbar-item_vertical.scss +98 -0
  370. package/navbar/_navbar-theme.scss +58 -60
  371. package/navbar/navbar-brand.scss +76 -16
  372. package/navbar/navbar-divider.scss +13 -4
  373. package/navbar/navbar-item.component.d.ts +6 -17
  374. package/navbar/navbar-item.scss +41 -87
  375. package/navbar/navbar.component.d.ts +3 -0
  376. package/navbar/navbar.module.d.ts +1 -1
  377. package/navbar/navbar.scss +13 -1
  378. package/navbar/vertical-navbar.scss +7 -14
  379. package/package.json +28 -20
  380. package/popover/popover-confirm.component.d.ts +0 -2
  381. package/popover/popover.component.d.ts +6 -1
  382. package/popover/popover.scss +4 -9
  383. package/prebuilt-themes/dark-theme.css +1 -1
  384. package/prebuilt-themes/light-theme.css +1 -1
  385. package/progress-spinner/progress-spinner.scss +10 -5
  386. package/scrollbar/_scrollbar-component-theme.scss +52 -0
  387. package/scrollbar/index.d.ts +1 -0
  388. package/scrollbar/public-api.d.ts +4 -0
  389. package/scrollbar/scrollbar.component.d.ts +33 -0
  390. package/scrollbar/scrollbar.component.scss +559 -0
  391. package/scrollbar/scrollbar.directive.d.ts +47 -0
  392. package/scrollbar/scrollbar.module.d.ts +8 -0
  393. package/scrollbar/scrollbar.types.d.ts +32 -0
  394. package/select/select.component.d.ts +4 -3
  395. package/select/select.scss +7 -0
  396. package/sidepanel/sidepanel-animations.d.ts +2 -2
  397. package/sidepanel/sidepanel-directives.d.ts +5 -5
  398. package/splitter/_splitter-theme.scss +5 -4
  399. package/tabs/_tabs-common.scss +1 -1
  400. package/tabs/_tabs-theme.scss +2 -2
  401. package/tags/tag-input.d.ts +9 -4
  402. package/tags/tag-list.scss +4 -0
  403. package/textarea/textarea.component.d.ts +4 -3
  404. package/timezone/_timezone-option-theme.scss +8 -0
  405. package/timezone/timezone-option.component.scss +4 -0
  406. package/timezone/timezone-select.component.scss +13 -0
  407. package/timezone/timezone.utils.d.ts +4 -0
  408. package/timezone/utc-offset.pipe.d.ts +3 -1
  409. package/toast/toast-animations.d.ts +1 -1
  410. package/toast/toast-container.component.scss +1 -9
  411. package/toast/toast.component.scss +0 -4
  412. package/toast/toast.service.d.ts +5 -3
  413. package/toast/toast.type.d.ts +1 -0
  414. package/tooltip/tooltip.component.d.ts +1 -1
  415. package/tooltip/tooltip.scss +0 -3
  416. package/tree/_tree-theme.scss +5 -5
  417. package/tree/control/base-tree-control.d.ts +1 -1
  418. package/tree/control/flat-tree-control.d.ts +5 -3
  419. package/tree/control/flat-tree-control.filters.d.ts +26 -0
  420. package/tree/control/tree-control.d.ts +1 -1
  421. package/tree/public-api.d.ts +1 -0
  422. package/tree/tree-option.scss +4 -4
  423. package/tree-select/tree-select.component.d.ts +8 -4
  424. package/tree-select/tree-select.module.d.ts +1 -1
  425. package/esm2022/navbar/vertical-navbar.animation.mjs +0 -10
  426. package/form-field/password-hint.scss +0 -11
  427. package/navbar/vertical-navbar.animation.d.ts +0 -2
@@ -254,10 +254,10 @@ export class KbqCheckbox extends KbqCheckboxMixinBase {
254
254
  this.onTouched();
255
255
  }
256
256
  }
257
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCheckbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: KBQ_CHECKBOX_CLICK_ACTION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
258
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { color: "color", tabIndex: "tabIndex", big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: "required", checked: "checked", disabled: "disabled", indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label [attr.for]=\"inputId\" class=\"kbq-checkbox__layout\" #label>\n <div class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span class=\"kbq-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"kbq-hint\"></ng-content>\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none;position:absolute;inset:-1px 0 0 -1px}.kbq-checkbox__frame{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:0;left:0;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding, 2px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:2px;height:var(--kbq-checkbox-size-big-width, 16px);width:var(--kbq-checkbox-size-big-width, 16px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding, 2px)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
257
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqCheckbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: KBQ_CHECKBOX_CLICK_ACTION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
258
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { color: "color", tabIndex: "tabIndex", big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: "required", checked: "checked", disabled: "disabled", indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label [attr.for]=\"inputId\" class=\"kbq-checkbox__layout\" #label>\n <div class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span class=\"kbq-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"kbq-hint\"></ng-content>\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:0;left:0;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding, 2px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:2px;height:var(--kbq-checkbox-size-big-width, 16px);width:var(--kbq-checkbox-size-big-width, 16px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding, 2px)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
259
259
  }
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCheckbox, decorators: [{
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqCheckbox, decorators: [{
261
261
  type: Component,
262
262
  args: [{ selector: 'kbq-checkbox', exportAs: 'kbqCheckbox', host: {
263
263
  class: 'kbq-checkbox',
@@ -269,13 +269,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
269
269
  '[class.kbq-checked]': 'checked',
270
270
  '[class.kbq-disabled]': 'disabled',
271
271
  '[class.kbq-checkbox_label-before]': 'labelPosition == "before"'
272
- }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], inputs: ['color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label [attr.for]=\"inputId\" class=\"kbq-checkbox__layout\" #label>\n <div class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span class=\"kbq-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"kbq-hint\"></ng-content>\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none;position:absolute;inset:-1px 0 0 -1px}.kbq-checkbox__frame{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:0;left:0;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding, 2px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:2px;height:var(--kbq-checkbox-size-big-width, 16px);width:var(--kbq-checkbox-size-big-width, 16px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding, 2px)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}\n"] }]
273
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{
272
+ }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], inputs: ['color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label [attr.for]=\"inputId\" class=\"kbq-checkbox__layout\" #label>\n <div class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"!checkboxLabel.textContent || !checkboxLabel.textContent.trim()\">\n <input #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [id]=\"inputId\"\n [required]=\"required\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [tabIndex]=\"tabIndex\"\n [indeterminate]=\"indeterminate\"\n [attr.aria-checked]=\"getAriaChecked()\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\">\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark mc mc-check_16\"></i>\n <i class=\"kbq-checkbox-mixedmark mc mc-minus_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span class=\"kbq-checkbox-label\" #checkboxLabel (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"kbq-hint\"></ng-content>\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius, 4px);border-width:var(--kbq-checkbox-size-normal-border-width, 1px);border-style:solid;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox__layout{position:relative;display:inline-flex;cursor:inherit;padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:0;left:0;height:var(--kbq-checkbox-size-normal-width, 16px);width:var(--kbq-checkbox-size-normal-width, 16px)}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding, 2px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{padding-left:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:2px;height:var(--kbq-checkbox-size-big-width, 16px);width:var(--kbq-checkbox-size-big-width, 16px)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius, 4px);border-width:var(--kbq-checkbox-size-big-border-width, 1px);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding, 2px)}.kbq-checkbox__text-container{display:flex;flex-direction:column}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width, 16px) + var(--kbq-checkbox-size-normal-horizontal-content-padding, 8px))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}\n"] }]
273
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{
274
274
  type: Optional
275
275
  }, {
276
276
  type: Inject,
277
277
  args: [KBQ_CHECKBOX_CLICK_ACTION]
278
- }] }]; }, propDecorators: { big: [{
278
+ }] }], propDecorators: { big: [{
279
279
  type: Input
280
280
  }], id: [{
281
281
  type: Input
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
301
301
  }], indeterminate: [{
302
302
  type: Input
303
303
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFPSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsU0FBUyxFQUNaLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLHlCQUF5QixFQUEwQixNQUFNLG1CQUFtQixDQUFDOzs7QUFHdEYsd0VBQXdFO0FBQ3hFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxvQkFTWDtBQVRELFdBQVksb0JBQW9CO0lBQzVCLHNFQUFzRTtJQUN0RSwrREFBSSxDQUFBO0lBQ0osdUVBQXVFO0lBQ3ZFLHFFQUFPLENBQUE7SUFDUCx5RUFBeUU7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a0JBckJ2QixTQUFTOytCQUNJLGNBQWMsWUFDZCxhQUFhLFFBR2pCO3dCQUNGLEtBQUssRUFBRSxjQUFjO3dCQUNyQixNQUFNLEVBQUUsSUFBSTt3QkFDWixXQUFXLEVBQUUsSUFBSTt3QkFDakIsaUJBQWlCLEVBQUUsVUFBVTt3QkFDN0IsMEJBQTBCLEVBQUUsS0FBSzt3QkFDakMsMkJBQTJCLEVBQUUsZUFBZTt3QkFDNUMscUJBQXFCLEVBQUUsU0FBUzt3QkFDaEMsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsbUNBQW1DLEVBQUUsMkJBQTJCO3FCQUNuRSxhQUNVLENBQUMsbUNBQW1DLENBQUMsVUFDeEMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLGlCQUNkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXVIMUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7NENBbEh4QyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0csRUFBRTtzQkFBVixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdhLE1BQU07c0JBQXhCLE1BQU07Z0JBR1ksbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUdFLEtBQUs7c0JBQWIsS0FBSztnQkFHaUMsWUFBWTtzQkFBbEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVNqQyxRQUFRO3NCQURYLEtBQUs7Z0JBZUYsT0FBTztzQkFEVixLQUFLO2dCQW1CRixRQUFRO3NCQURYLEtBQUs7Z0JBcUJGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ2FuQ29sb3IsXG4gICAgQ2FuQ29sb3JDdG9yLFxuICAgIENhbkRpc2FibGUsXG4gICAgQ2FuRGlzYWJsZUN0b3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSGFzVGFiSW5kZXhDdG9yLFxuICAgIG1peGluQ29sb3IsXG4gICAgbWl4aW5EaXNhYmxlZCxcbiAgICBtaXhpblRhYkluZGV4LFxuICAgIEticUNvbXBvbmVudENvbG9ycyxcbiAgICB0b0Jvb2xlYW5cbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuXG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG5cbi8vIEluY3JlYXNpbmcgaW50ZWdlciBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgaWRzIGZvciBjaGVja2JveCBjb21wb25lbnRzLlxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogUHJvdmlkZXIgRXhwcmVzc2lvbiB0aGF0IGFsbG93cyBrYnEtY2hlY2tib3ggdG8gcmVnaXN0ZXIgYXMgYSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAqIFRoaXMgYWxsb3dzIGl0IHRvIHN1cHBvcnQgWyhuZ01vZGVsKV0uXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQ0hFQ0tCT1hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEticUNoZWNrYm94KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgc3RhdGVzIHRoYXQgcmVxdWlyZSBjdXN0b20gdHJhbnNpdGlvbnMgYmV0d2VlbiB0aGVtLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZW51bSBUcmFuc2l0aW9uQ2hlY2tTdGF0ZSB7XG4gICAgLyoqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgYmVmb3JlIGFueSB1c2VyIGludGVyYWN0aW9uLiAqL1xuICAgIEluaXQsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgY2hlY2tlZC4gKi9cbiAgICBDaGVja2VkLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIHVuY2hlY2tlZC4gKi9cbiAgICBVbmNoZWNrZWQsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBJbmRldGVybWluYXRlXG59XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxQ2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIEticUNoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEticUNoZWNrYm94O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byBLYnFDaGVja2JveC5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLYnFDaGVja2JveE1peGluQmFzZTpcbiAgICBIYXNUYWJJbmRleEN0b3IgJlxuICAgIENhbkNvbG9yQ3RvciAmXG4gICAgQ2FuRGlzYWJsZUN0b3IgJlxuICAgIHR5cGVvZiBLYnFDaGVja2JveEJhc2UgPSBtaXhpblRhYkluZGV4KG1peGluQ29sb3IobWl4aW5EaXNhYmxlZChLYnFDaGVja2JveEJhc2UpLCBLYnFDb21wb25lbnRDb2xvcnMuVGhlbWUpKTtcblxuXG4vKipcbiAqIEEgS29vYmlxIGNoZWNrYm94IGNvbXBvbmVudC4gU3VwcG9ydHMgYWxsIG9mIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEhUTUw1IGNoZWNrYm94LFxuICogYW5kIGV4cG9zZXMgYSBzaW1pbGFyIEFQSS4gQSBLYnFDaGVja2JveCBjYW4gYmUgZWl0aGVyIGNoZWNrZWQsIHVuY2hlY2tlZCwgaW5kZXRlcm1pbmF0ZSwgb3JcbiAqIGRpc2FibGVkLiBOb3RlIHRoYXQgYWxsIGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGFyZSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBjb21wb25lbnQsXG4gKiBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb3ZpZGUgdGhlbSB5b3Vyc2VsZi4gSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gb21pdCBhIGxhYmVsIGFuZCBzdGlsbFxuICogaGF2ZSB0aGUgY2hlY2tib3ggYmUgYWNjZXNzaWJsZSwgeW91IG1heSBzdXBwbHkgYW4gW2FyaWEtbGFiZWxdIGlucHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1jaGVja2JveCcsXG4gICAgZXhwb3J0QXM6ICdrYnFDaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGVja2JveC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnY2hlY2tib3guc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtY2hlY2tib3gnLFxuICAgICAgICAnW2lkXSc6ICdpZCcsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY2hlY2tib3hfYmlnXSc6ICdiaWcnLFxuICAgICAgICAnW2NsYXNzLmticS1pbmRldGVybWluYXRlXSc6ICdpbmRldGVybWluYXRlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrYm94X2xhYmVsLWJlZm9yZV0nOiAnbGFiZWxQb3NpdGlvbiA9PSBcImJlZm9yZVwiJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGlucHV0czogWydjb2xvcicsICd0YWJJbmRleCddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3ggZXh0ZW5kcyBLYnFDaGVja2JveE1peGluQmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ2FuQ29sb3IsIENhbkRpc2FibGUsIEhhc1RhYkluZGV4IHtcblxuICAgIEBJbnB1dCgpIGJpZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEEgdW5pcXVlIGlkIGZvciB0aGUgY2hlY2tib3ggaW5wdXQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYXBwZWFyIGFmdGVyIG9yIGJlZm9yZSB0aGUgY2hlY2tib3guIERlZmF1bHRzIHRvICdhZnRlcicgKi9cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuXG4gICAgLyoqIE5hbWUgdmFsdWUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGlmIHByZXNlbnQgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrYm94J3MgYGNoZWNrZWRgIHZhbHVlIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxQ2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBpbmRldGVybWluYXRlYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogVGhlIHZhbHVlIGF0dHJpYnV0ZSBvZiB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj5gIGVsZW1lbnQgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogUmV0dXJucyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgdmlzdWFsIGhpZGRlbiBpbnB1dC4gKi9cbiAgICBnZXQgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLnVuaXF1ZUlkfS1pbnB1dGA7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHJlcXVpcmVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuXG4gICAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBkaXNhYmxlZC4gVGhpcyBmdWxseSBvdmVycmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGJ5XG4gICAgICogbWl4aW5EaXNhYmxlZCwgYnV0IHRoZSBtaXhpbiBpcyBzdGlsbCByZXF1aXJlZCBiZWNhdXNlIG1peGluVGFiSW5kZXggcmVxdWlyZXMgaXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gICAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKFRyYW5zaXRpb25DaGVja1N0YXRlLkluZGV0ZXJtaW5hdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPyBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5DaGVja2VkIDogVHJhbnNpdGlvbkNoZWNrU3RhdGUuVW5jaGVja2VkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHVuaXF1ZUlkOiBzdHJpbmcgPSBga2JxLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcblxuICAgIHByaXZhdGUgY3VycmVudEFuaW1hdGlvbkNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgY3VycmVudENoZWNrU3RhdGU6IFRyYW5zaXRpb25DaGVja1N0YXRlID0gVHJhbnNpdGlvbkNoZWNrU3RhdGUuSW5pdDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OKSBwcml2YXRlIGNsaWNrQWN0aW9uOiBLYnFDaGVja2JveENsaWNrQWN0aW9uXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLnVuaXF1ZUlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkLiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHlcbiAgICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbikpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGJlaW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgdGV4dCBjaGFuZ2VzLiAqL1xuICAgIG9uTGFiZWxUZXh0Q2hhbmdlKCkge1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBnZXR0aW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgb2YgdGhlIGNoZWNrYm94IGNoYW5nZXMuXG4gICAgICAgIC8vIFNpbmNlIHRoZSBjaGVja2JveCB1c2VzIHRoZSBPblB1c2ggc3RyYXRlZ3kgd2UgbmVlZCB0byBub3RpZnkgaXQgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYnkgdGhlIGNka09ic2VydmVDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJpYUNoZWNrZWQoKTogJ3RydWUnIHwgJ2ZhbHNlJyB8ICdtaXhlZCcge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkID8gJ3RydWUnIDogKHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnKTtcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgYGNoZWNrZWRgIHN0YXRlIG9mIHRoZSBjaGVja2JveC4gKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3IgY2hlY2tib3ggaW5wdXQgZWxlbWVudC5cbiAgICAgKiBUb2dnbGVzIGNoZWNrZWQgc3RhdGUgaWYgZWxlbWVudCBpcyBub3QgZGlzYWJsZWQuXG4gICAgICogRG8gbm90IHRvZ2dsZSBvbiAoY2hhbmdlKSBldmVudCBzaW5jZSBJRSBkb2Vzbid0IGZpcmUgY2hhbmdlIGV2ZW50IHdoZW5cbiAgICAgKiAgIGluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgY2xpY2tlZC5cbiAgICAgKiBAcGFyYW0gZXZlbnQgSW5wdXQgY2xpY2sgZXZlbnRcbiAgICAgKi9cbiAgICBvbklucHV0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBmb3IgY2xpY2sgZXZlbnRzIG9uIHRoZSB2aXN1YWwgaGlkZGVuIGlucHV0IGVsZW1lbnQuXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIHdoZW4gYSB1c2VyIGNsaWNrcyBvbiBhIGxhYmVsIGVsZW1lbnQsIGEgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IHdpbGwgYmVcbiAgICAgICAgLy8gZGlzcGF0Y2hlZCBvbiB0aGUgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LiBTaW5jZSB3ZSBhcmUgdXNpbmcgYSBsYWJlbCBlbGVtZW50IGFzIG91clxuICAgICAgICAvLyByb290IGNvbnRhaW5lciwgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgY2hlY2tib3hgIHdpbGwgYmUgZXhlY3V0ZWQgdHdpY2UuXG4gICAgICAgIC8vIFRoZSByZWFsIGNsaWNrIGV2ZW50IHdpbGwgYnViYmxlIHVwLCBhbmQgdGhlIGdlbmVyYXRlZCBjbGljayBldmVudCBhbHNvIHRyaWVzIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgLy8gVGhpcyB3aWxsIGxlYWQgdG8gbXVsdGlwbGUgY2xpY2sgZXZlbnRzLlxuICAgICAgICAvLyBQcmV2ZW50aW5nIGJ1YmJsaW5nIGZvciB0aGUgc2Vjb25kIGV2ZW50IHdpbGwgc29sdmUgdGhhdCBpc3N1ZS5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgLy8gSWYgcmVzZXRJbmRldGVybWluYXRlIGlzIGZhbHNlLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZSwgZG8gbm90aGluZyBvbiBjbGlja1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jbGlja0FjdGlvbiAhPT0gJ25vb3AnKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzZXIgbWFudWFsbHkgY2xpY2sgb24gdGhlIGNoZWNrYm94LCBgaW5kZXRlcm1pbmF0ZWAgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnY2hlY2snKSB7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUoXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBFbWl0IG91ciBjdXN0b20gY2hhbmdlIGV2ZW50IGlmIHRoZSBuYXRpdmUgaW5wdXQgZW1pdHRlZCBvbmUuXG4gICAgICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gb25seSBlbWl0IGl0LCBpZiB0aGUgbmF0aXZlIGlucHV0IHRyaWdnZXJlZCBvbmUsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGNoYW5nZSBldmVudCwgd2hlbiB0aGUgYGNoZWNrZWRgIHZhcmlhYmxlIGNoYW5nZXMgZm9yIGV4YW1wbGUuXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpY2tBY3Rpb24gPT09ICdub29wJykge1xuICAgICAgICAgICAgLy8gUmVzZXQgbmF0aXZlIGlucHV0IHdoZW4gY2xpY2tlZCB3aXRoIG5vb3AuIFRoZSBuYXRpdmUgY2hlY2tib3ggYmVjb21lcyBjaGVja2VkIGFmdGVyXG4gICAgICAgICAgICAvLyBjbGljaywgcmVzZXQgaXQgdG8gYmUgYWxpZ24gd2l0aCBgY2hlY2tlZGAgdmFsdWUgb2YgYGticS1jaGVja2JveGAuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgY2hlY2tib3guICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgIH1cblxuICAgIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hhbmdlIGV2ZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5XG4gICAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uQ2hlY2tTdGF0ZShuZXdTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLmN1cnJlbnRDaGVja1N0YXRlO1xuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChvbGRTdGF0ZSA9PT0gbmV3U3RhdGUpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRDaGVja1N0YXRlID0gbmV3U3RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudCgpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgS2JxQ2hlY2tib3hDaGFuZ2UoKTtcbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcblxuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9jdXMgY2hhbmdlcyBmb3IgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBvbklucHV0Rm9jdXNDaGFuZ2UoZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGlmIChmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxsYWJlbCBbYXR0ci5mb3JdPVwiaW5wdXRJZFwiIGNsYXNzPVwia2JxLWNoZWNrYm94X19sYXlvdXRcIiAjbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgIFtjbGFzcy5rYnEtY2hlY2tib3hfX2lubmVyLWNvbnRhaW5lcl9uby1zaWRlLW1hcmdpbl09XCIhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudCB8fCAhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudC50cmltKClcIj5cbiAgICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWNoZWNrYm94X19mcmFtZVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtY2hlY2ttYXJrIG1jIG1jLWNoZWNrXzE2XCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtbWl4ZWRtYXJrIG1jIG1jLW1pbnVzXzE2XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX3RleHQtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwia2JxLWNoZWNrYm94LWxhYmVsXCIgI2NoZWNrYm94TGFiZWwgKGNka09ic2VydmVDb250ZW50KT1cIm9uTGFiZWxUZXh0Q2hhbmdlKClcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1oaW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFPSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsU0FBUyxFQUNaLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLHlCQUF5QixFQUEwQixNQUFNLG1CQUFtQixDQUFDOzs7QUFHdEYsd0VBQXdFO0FBQ3hFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSxvQkFTWDtBQVRELFdBQVksb0JBQW9CO0lBQzVCLHNFQUFzRTtJQUN0RSwrREFBSSxDQUFBO0lBQ0osdUVBQXVFO0lBQ3ZFLHFFQUFPLENBQUE7SUFDUCx5RUFBeUU7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Z3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQ2FuQ29sb3IsXG4gICAgQ2FuQ29sb3JDdG9yLFxuICAgIENhbkRpc2FibGUsXG4gICAgQ2FuRGlzYWJsZUN0b3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSGFzVGFiSW5kZXhDdG9yLFxuICAgIG1peGluQ29sb3IsXG4gICAgbWl4aW5EaXNhYmxlZCxcbiAgICBtaXhpblRhYkluZGV4LFxuICAgIEticUNvbXBvbmVudENvbG9ycyxcbiAgICB0b0Jvb2xlYW5cbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuXG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG5cbi8vIEluY3JlYXNpbmcgaW50ZWdlciBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgaWRzIGZvciBjaGVja2JveCBjb21wb25lbnRzLlxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogUHJvdmlkZXIgRXhwcmVzc2lvbiB0aGF0IGFsbG93cyBrYnEtY2hlY2tib3ggdG8gcmVnaXN0ZXIgYXMgYSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAqIFRoaXMgYWxsb3dzIGl0IHRvIHN1cHBvcnQgWyhuZ01vZGVsKV0uXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQ0hFQ0tCT1hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEticUNoZWNrYm94KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgc3RhdGVzIHRoYXQgcmVxdWlyZSBjdXN0b20gdHJhbnNpdGlvbnMgYmV0d2VlbiB0aGVtLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZW51bSBUcmFuc2l0aW9uQ2hlY2tTdGF0ZSB7XG4gICAgLyoqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgYmVmb3JlIGFueSB1c2VyIGludGVyYWN0aW9uLiAqL1xuICAgIEluaXQsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgY2hlY2tlZC4gKi9cbiAgICBDaGVja2VkLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIHVuY2hlY2tlZC4gKi9cbiAgICBVbmNoZWNrZWQsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBJbmRldGVybWluYXRlXG59XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxQ2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIEticUNoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEticUNoZWNrYm94O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLy8gQm9pbGVycGxhdGUgZm9yIGFwcGx5aW5nIG1peGlucyB0byBLYnFDaGVja2JveC5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBLYnFDaGVja2JveE1peGluQmFzZTpcbiAgICBIYXNUYWJJbmRleEN0b3IgJlxuICAgIENhbkNvbG9yQ3RvciAmXG4gICAgQ2FuRGlzYWJsZUN0b3IgJlxuICAgIHR5cGVvZiBLYnFDaGVja2JveEJhc2UgPSBtaXhpblRhYkluZGV4KG1peGluQ29sb3IobWl4aW5EaXNhYmxlZChLYnFDaGVja2JveEJhc2UpLCBLYnFDb21wb25lbnRDb2xvcnMuVGhlbWUpKTtcblxuXG4vKipcbiAqIEEgS29vYmlxIGNoZWNrYm94IGNvbXBvbmVudC4gU3VwcG9ydHMgYWxsIG9mIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEhUTUw1IGNoZWNrYm94LFxuICogYW5kIGV4cG9zZXMgYSBzaW1pbGFyIEFQSS4gQSBLYnFDaGVja2JveCBjYW4gYmUgZWl0aGVyIGNoZWNrZWQsIHVuY2hlY2tlZCwgaW5kZXRlcm1pbmF0ZSwgb3JcbiAqIGRpc2FibGVkLiBOb3RlIHRoYXQgYWxsIGFkZGl0aW9uYWwgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGFyZSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBjb21wb25lbnQsXG4gKiBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb3ZpZGUgdGhlbSB5b3Vyc2VsZi4gSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gb21pdCBhIGxhYmVsIGFuZCBzdGlsbFxuICogaGF2ZSB0aGUgY2hlY2tib3ggYmUgYWNjZXNzaWJsZSwgeW91IG1heSBzdXBwbHkgYW4gW2FyaWEtbGFiZWxdIGlucHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1jaGVja2JveCcsXG4gICAgZXhwb3J0QXM6ICdrYnFDaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGVja2JveC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnY2hlY2tib3guc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtY2hlY2tib3gnLFxuICAgICAgICAnW2lkXSc6ICdpZCcsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY2hlY2tib3hfYmlnXSc6ICdiaWcnLFxuICAgICAgICAnW2NsYXNzLmticS1pbmRldGVybWluYXRlXSc6ICdpbmRldGVybWluYXRlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY2hlY2tlZF0nOiAnY2hlY2tlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrYm94X2xhYmVsLWJlZm9yZV0nOiAnbGFiZWxQb3NpdGlvbiA9PSBcImJlZm9yZVwiJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGlucHV0czogWydjb2xvcicsICd0YWJJbmRleCddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3ggZXh0ZW5kcyBLYnFDaGVja2JveE1peGluQmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ2FuQ29sb3IsIENhbkRpc2FibGUsIEhhc1RhYkluZGV4IHtcblxuICAgIEBJbnB1dCgpIGJpZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEEgdW5pcXVlIGlkIGZvciB0aGUgY2hlY2tib3ggaW5wdXQuIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0by1nZW5lcmF0ZWQuICovXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYXBwZWFyIGFmdGVyIG9yIGJlZm9yZSB0aGUgY2hlY2tib3guIERlZmF1bHRzIHRvICdhZnRlcicgKi9cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInO1xuXG4gICAgLyoqIE5hbWUgdmFsdWUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGlmIHByZXNlbnQgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNoZWNrYm94J3MgYGNoZWNrZWRgIHZhbHVlIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxQ2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBpbmRldGVybWluYXRlYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogVGhlIHZhbHVlIGF0dHJpYnV0ZSBvZiB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj5gIGVsZW1lbnQgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogUmV0dXJucyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgdmlzdWFsIGhpZGRlbiBpbnB1dC4gKi9cbiAgICBnZXQgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZCB8fCB0aGlzLnVuaXF1ZUlkfS1pbnB1dGA7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHJlcXVpcmVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuXG4gICAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBkaXNhYmxlZC4gVGhpcyBmdWxseSBvdmVycmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGJ5XG4gICAgICogbWl4aW5EaXNhYmxlZCwgYnV0IHRoZSBtaXhpbiBpcyBzdGlsbCByZXF1aXJlZCBiZWNhdXNlIG1peGluVGFiSW5kZXggcmVxdWlyZXMgaXQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG4gICAgICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2luZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKFRyYW5zaXRpb25DaGVja1N0YXRlLkluZGV0ZXJtaW5hdGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25DaGVja1N0YXRlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPyBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5DaGVja2VkIDogVHJhbnNpdGlvbkNoZWNrU3RhdGUuVW5jaGVja2VkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHVuaXF1ZUlkOiBzdHJpbmcgPSBga2JxLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcblxuICAgIHByaXZhdGUgY3VycmVudEFuaW1hdGlvbkNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgY3VycmVudENoZWNrU3RhdGU6IFRyYW5zaXRpb25DaGVja1N0YXRlID0gVHJhbnNpdGlvbkNoZWNrU3RhdGUuSW5pdDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OKSBwcml2YXRlIGNsaWNrQWN0aW9uOiBLYnFDaGVja2JveENsaWNrQWN0aW9uXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLnVuaXF1ZUlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkLiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHlcbiAgICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbikpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGJlaW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgdGV4dCBjaGFuZ2VzLiAqL1xuICAgIG9uTGFiZWxUZXh0Q2hhbmdlKCkge1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBnZXR0aW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgb2YgdGhlIGNoZWNrYm94IGNoYW5nZXMuXG4gICAgICAgIC8vIFNpbmNlIHRoZSBjaGVja2JveCB1c2VzIHRoZSBPblB1c2ggc3RyYXRlZ3kgd2UgbmVlZCB0byBub3RpZnkgaXQgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYnkgdGhlIGNka09ic2VydmVDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJpYUNoZWNrZWQoKTogJ3RydWUnIHwgJ2ZhbHNlJyB8ICdtaXhlZCcge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkID8gJ3RydWUnIDogKHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnKTtcbiAgICB9XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgYGNoZWNrZWRgIHN0YXRlIG9mIHRoZSBjaGVja2JveC4gKi9cbiAgICB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3IgY2hlY2tib3ggaW5wdXQgZWxlbWVudC5cbiAgICAgKiBUb2dnbGVzIGNoZWNrZWQgc3RhdGUgaWYgZWxlbWVudCBpcyBub3QgZGlzYWJsZWQuXG4gICAgICogRG8gbm90IHRvZ2dsZSBvbiAoY2hhbmdlKSBldmVudCBzaW5jZSBJRSBkb2Vzbid0IGZpcmUgY2hhbmdlIGV2ZW50IHdoZW5cbiAgICAgKiAgIGluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgY2xpY2tlZC5cbiAgICAgKiBAcGFyYW0gZXZlbnQgSW5wdXQgY2xpY2sgZXZlbnRcbiAgICAgKi9cbiAgICBvbklucHV0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBmb3IgY2xpY2sgZXZlbnRzIG9uIHRoZSB2aXN1YWwgaGlkZGVuIGlucHV0IGVsZW1lbnQuXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIHdoZW4gYSB1c2VyIGNsaWNrcyBvbiBhIGxhYmVsIGVsZW1lbnQsIGEgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IHdpbGwgYmVcbiAgICAgICAgLy8gZGlzcGF0Y2hlZCBvbiB0aGUgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LiBTaW5jZSB3ZSBhcmUgdXNpbmcgYSBsYWJlbCBlbGVtZW50IGFzIG91clxuICAgICAgICAvLyByb290IGNvbnRhaW5lciwgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgY2hlY2tib3hgIHdpbGwgYmUgZXhlY3V0ZWQgdHdpY2UuXG4gICAgICAgIC8vIFRoZSByZWFsIGNsaWNrIGV2ZW50IHdpbGwgYnViYmxlIHVwLCBhbmQgdGhlIGdlbmVyYXRlZCBjbGljayBldmVudCBhbHNvIHRyaWVzIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgLy8gVGhpcyB3aWxsIGxlYWQgdG8gbXVsdGlwbGUgY2xpY2sgZXZlbnRzLlxuICAgICAgICAvLyBQcmV2ZW50aW5nIGJ1YmJsaW5nIGZvciB0aGUgc2Vjb25kIGV2ZW50IHdpbGwgc29sdmUgdGhhdCBpc3N1ZS5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgLy8gSWYgcmVzZXRJbmRldGVybWluYXRlIGlzIGZhbHNlLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZSwgZG8gbm90aGluZyBvbiBjbGlja1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jbGlja0FjdGlvbiAhPT0gJ25vb3AnKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHVzZXIgbWFudWFsbHkgY2xpY2sgb24gdGhlIGNoZWNrYm94LCBgaW5kZXRlcm1pbmF0ZWAgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnY2hlY2snKSB7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUoXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBFbWl0IG91ciBjdXN0b20gY2hhbmdlIGV2ZW50IGlmIHRoZSBuYXRpdmUgaW5wdXQgZW1pdHRlZCBvbmUuXG4gICAgICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gb25seSBlbWl0IGl0LCBpZiB0aGUgbmF0aXZlIGlucHV0IHRyaWdnZXJlZCBvbmUsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGNoYW5nZSBldmVudCwgd2hlbiB0aGUgYGNoZWNrZWRgIHZhcmlhYmxlIGNoYW5nZXMgZm9yIGV4YW1wbGUuXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpY2tBY3Rpb24gPT09ICdub29wJykge1xuICAgICAgICAgICAgLy8gUmVzZXQgbmF0aXZlIGlucHV0IHdoZW4gY2xpY2tlZCB3aXRoIG5vb3AuIFRoZSBuYXRpdmUgY2hlY2tib3ggYmVjb21lcyBjaGVja2VkIGFmdGVyXG4gICAgICAgICAgICAvLyBjbGljaywgcmVzZXQgaXQgdG8gYmUgYWxpZ24gd2l0aCBgY2hlY2tlZGAgdmFsdWUgb2YgYGticS1jaGVja2JveGAuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgY2hlY2tib3guICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgIH1cblxuICAgIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hhbmdlIGV2ZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5XG4gICAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uQ2hlY2tTdGF0ZShuZXdTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLmN1cnJlbnRDaGVja1N0YXRlO1xuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChvbGRTdGF0ZSA9PT0gbmV3U3RhdGUpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRDaGVja1N0YXRlID0gbmV3U3RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDaGFuZ2VFdmVudCgpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgS2JxQ2hlY2tib3hDaGFuZ2UoKTtcbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcblxuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9jdXMgY2hhbmdlcyBmb3IgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBvbklucHV0Rm9jdXNDaGFuZ2UoZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGlmIChmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxsYWJlbCBbYXR0ci5mb3JdPVwiaW5wdXRJZFwiIGNsYXNzPVwia2JxLWNoZWNrYm94X19sYXlvdXRcIiAjbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgIFtjbGFzcy5rYnEtY2hlY2tib3hfX2lubmVyLWNvbnRhaW5lcl9uby1zaWRlLW1hcmdpbl09XCIhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudCB8fCAhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudC50cmltKClcIj5cbiAgICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiZ2V0QXJpYUNoZWNrZWQoKVwiXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWNoZWNrYm94X19mcmFtZVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtY2hlY2ttYXJrIG1jIG1jLWNoZWNrXzE2XCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtbWl4ZWRtYXJrIG1jIG1jLW1pbnVzXzE2XCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX3RleHQtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwia2JxLWNoZWNrYm94LWxhYmVsXCIgI2NoZWNrYm94TGFiZWwgKGNka09ic2VydmVDb250ZW50KT1cIm9uTGFiZWxUZXh0Q2hhbmdlKClcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1oaW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
@@ -31,15 +31,15 @@ export class KbqActionBarComponent {
31
31
  this.copyTooltip.show();
32
32
  });
33
33
  }
34
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: { config: "config", codeFiles: "codeFiles", lessContrast: "lessContrast", selectedTabIndex: "selectedTabIndex", multiLine: "multiLine", softWrap: "softWrap" }, outputs: { toggleSoftWrap: "toggleSoftWrap", downloadCode: "downloadCode", copyCode: "copyCode", openExternalSystem: "openExternalSystem" }, host: { properties: { "class.kbq-code-block-actionbar_less-contrast": "lessContrast" }, classAttribute: "kbq-code-block-actionbar" }, viewQueries: [{ propertyName: "copyTooltip", first: true, predicate: ["copyTooltip"], descendants: true }], ngImport: i0, template: "<button kbq-button\n class=\"kbq-button-icon kbq-button_transparent\"\n *ngIf=\"multiLine\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\">\n <i *ngIf=\"!softWrap\" kbq-icon=\"mc-word-wrap_16\"></i>\n <i *ngIf=\"softWrap\" kbq-icon=\"mc-word-wrap-slash_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\">\n <i kbq-icon=\"mc-download_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n #copyTooltip=\"kbqTooltip\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\">\n <i kbq-icon=\"mc-copy-o_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n *ngIf=\"codeFiles[selectedTabIndex].link\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\">\n <i kbq-icon=\"mc-external-link_16\"></i>\n</button>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:4px;right:8px;gap:0;border-radius:8px}.kbq-code-block-actionbar.kbq-actionbar-block_floating{top:6px;right:6px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i3.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "mcEnterDelay", "mcLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipColor"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
34
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: { config: "config", codeFiles: "codeFiles", lessContrast: "lessContrast", selectedTabIndex: "selectedTabIndex", multiLine: "multiLine", softWrap: "softWrap" }, outputs: { toggleSoftWrap: "toggleSoftWrap", downloadCode: "downloadCode", copyCode: "copyCode", openExternalSystem: "openExternalSystem" }, host: { properties: { "class.kbq-code-block-actionbar_less-contrast": "lessContrast" }, classAttribute: "kbq-code-block-actionbar" }, viewQueries: [{ propertyName: "copyTooltip", first: true, predicate: ["copyTooltip"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n *ngIf=\"multiLine\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\">\n <i *ngIf=\"!softWrap\" kbq-icon=\"mc-word-wrap_16\"></i>\n <i *ngIf=\"softWrap\" kbq-icon=\"mc-word-wrap-slash_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\">\n <i kbq-icon=\"mc-download_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n #copyTooltip=\"kbqTooltip\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\">\n <i kbq-icon=\"mc-copy-o_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n *ngIf=\"codeFiles[selectedTabIndex].link\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\">\n <i kbq-icon=\"mc-external-link_16\"></i>\n</button>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:-1px;right:0;padding:var(--kbq-code-block-size-actionbar-padding-vertical, 8px) var(--kbq-code-block-size-actionbar-padding-horizontal, 12px);gap:var(--kbq-code-block-size-actionbar-content-gap-horizontal, 2px)}.kbq-code-block-actionbar .kbq-code-block__fade-gradient{display:none;width:var(--kbq-code-block-size-actionbar-fade-gradient-width, 36px);height:40px;margin-top:calc(var(--kbq-code-block-size-actionbar-padding-vertical, 8px) * -1)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i3.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipColor"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqActionBarComponent, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqActionBarComponent, decorators: [{
38
38
  type: Component,
39
39
  args: [{ selector: 'kbq-actionbar-block', host: {
40
40
  class: 'kbq-code-block-actionbar',
41
41
  '[class.kbq-code-block-actionbar_less-contrast]': 'lessContrast'
42
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button kbq-button\n class=\"kbq-button-icon kbq-button_transparent\"\n *ngIf=\"multiLine\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\">\n <i *ngIf=\"!softWrap\" kbq-icon=\"mc-word-wrap_16\"></i>\n <i *ngIf=\"softWrap\" kbq-icon=\"mc-word-wrap-slash_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\">\n <i kbq-icon=\"mc-download_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n #copyTooltip=\"kbqTooltip\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\">\n <i kbq-icon=\"mc-copy-o_16\"></i>\n</button>\n\n<button kbq-button\n class=\"kbq-button_transparent\"\n *ngIf=\"codeFiles[selectedTabIndex].link\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\">\n <i kbq-icon=\"mc-external-link_16\"></i>\n</button>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:4px;right:8px;gap:0;border-radius:8px}.kbq-code-block-actionbar.kbq-actionbar-block_floating{top:6px;right:6px}\n"] }]
42
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"kbq-code-block__fade-gradient\"></div>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n *ngIf=\"multiLine\"\n [kbqTooltip]=\"softWrap ? config.softWrapOffTooltip : config.softWrapOnTooltip\"\n (click)=\"toggleSoftWrap.emit()\">\n <i *ngIf=\"!softWrap\" kbq-icon=\"mc-word-wrap_16\"></i>\n <i *ngIf=\"softWrap\" kbq-icon=\"mc-word-wrap-slash_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n [kbqTooltip]=\"config.downloadTooltip\"\n (click)=\"downloadCode.emit()\">\n <i kbq-icon=\"mc-download_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n #copyTooltip=\"kbqTooltip\"\n [kbqTooltip]=\"copyTooltipText\"\n (click)=\"onCopy()\">\n <i kbq-icon=\"mc-copy-o_16\"></i>\n</button>\n\n<button kbq-button\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n *ngIf=\"codeFiles[selectedTabIndex].link\"\n [kbqTooltip]=\"config.openExternalSystemTooltip\"\n (click)=\"openExternalSystem.emit()\">\n <i kbq-icon=\"mc-external-link_16\"></i>\n</button>\n", styles: [".kbq-code-block-actionbar{display:flex;justify-content:right;align-items:center;position:absolute;top:-1px;right:0;padding:var(--kbq-code-block-size-actionbar-padding-vertical, 8px) var(--kbq-code-block-size-actionbar-padding-horizontal, 12px);gap:var(--kbq-code-block-size-actionbar-content-gap-horizontal, 2px)}.kbq-code-block-actionbar .kbq-code-block__fade-gradient{display:none;width:var(--kbq-code-block-size-actionbar-fade-gradient-width, 36px);height:40px;margin-top:calc(var(--kbq-code-block-size-actionbar-padding-vertical, 8px) * -1)}\n"] }]
43
43
  }], propDecorators: { copyTooltip: [{
44
44
  type: ViewChild,
45
45
  args: ['copyTooltip']
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
64
64
  }], openExternalSystem: [{
65
65
  type: Output
66
66
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29kZS1ibG9jay9hY3Rpb25iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWJsb2NrL2FjdGlvbmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBbUJ4QyxNQUFNLE9BQU8scUJBQXFCO0lBWGxDO1FBaUJhLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUlwQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0F3QjNEO0lBcEJHLGVBQWU7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRS9DLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTthQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDbEQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztpSUFwQ1EscUJBQXFCO3FIQUFyQixxQkFBcUIsa21CQzlCbEMsc2tDQStCQTs7MkZERGEscUJBQXFCO2tCQVhqQyxTQUFTOytCQUNJLHFCQUFxQixRQUd6Qjt3QkFDRixLQUFLLEVBQUUsMEJBQTBCO3dCQUNqQyxnREFBZ0QsRUFBRSxjQUFjO3FCQUNuRSxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUdyQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBRWYsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLYnFUb29sdGlwVHJpZ2dlciB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uLFxuICAgIEticUNvZGVGaWxlXG59IGZyb20gJy4vY29kZS1ibG9jay50eXBlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtYWN0aW9uYmFyLWJsb2NrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY3Rpb25iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWNvZGUtYmxvY2stYWN0aW9uYmFyJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9jay1hY3Rpb25iYXJfbGVzcy1jb250cmFzdF0nOiAnbGVzc0NvbnRyYXN0J1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBLYnFBY3Rpb25CYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCdjb3B5VG9vbHRpcCcpIGNvcHlUb29sdGlwOiBLYnFUb29sdGlwVHJpZ2dlcjtcblxuICAgIEBJbnB1dCgpIGNvbmZpZzogS2JxQ29kZUJsb2NrQ29uZmlndXJhdGlvbjtcbiAgICBASW5wdXQoKSBjb2RlRmlsZXM6IEticUNvZGVGaWxlW107XG4gICAgQElucHV0KCkgbGVzc0NvbnRyYXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICAgIEBJbnB1dCgpIG11bHRpTGluZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzb2Z0V3JhcDogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSB0b2dnbGVTb2Z0V3JhcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgZG93bmxvYWRDb2RlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBjb3B5Q29kZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgb3BlbkV4dGVybmFsU3lzdGVtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29weVRvb2x0aXBUZXh0OiBzdHJpbmc7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29weVRvb2x0aXBUZXh0ID0gdGhpcy5jb25maWcuY29weVRvb2x0aXA7XG5cbiAgICAgICAgdGhpcy5jb3B5VG9vbHRpcC52aXNpYmxlQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIoKHN0YXRlKSA9PiAhc3RhdGUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29weVRvb2x0aXBUZXh0ID09PSB0aGlzLmNvbmZpZy5jb3BpZWRUb29sdGlwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29weVRvb2x0aXBUZXh0ID0gdGhpcy5jb25maWcuY29weVRvb2x0aXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db3B5KCkge1xuICAgICAgICB0aGlzLmNvcHlDb2RlLmVtaXQoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29weVRvb2x0aXBUZXh0ID0gdGhpcy5jb25maWcuY29waWVkVG9vbHRpcDtcbiAgICAgICAgICAgIHRoaXMuY29weVRvb2x0aXAuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8YnV0dG9uIGticS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJrYnEtYnV0dG9uLWljb24ga2JxLWJ1dHRvbl90cmFuc3BhcmVudFwiXG4gICAgICAgICpuZ0lmPVwibXVsdGlMaW5lXCJcbiAgICAgICAgW2ticVRvb2x0aXBdPVwic29mdFdyYXAgPyBjb25maWcuc29mdFdyYXBPZmZUb29sdGlwIDogY29uZmlnLnNvZnRXcmFwT25Ub29sdGlwXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvZnRXcmFwLmVtaXQoKVwiPlxuICAgIDxpICpuZ0lmPVwiIXNvZnRXcmFwXCIga2JxLWljb249XCJtYy13b3JkLXdyYXBfMTZcIj48L2k+XG4gICAgPGkgKm5nSWY9XCJzb2Z0V3JhcFwiIGticS1pY29uPVwibWMtd29yZC13cmFwLXNsYXNoXzE2XCI+PC9pPlxuPC9idXR0b24+XG5cbjxidXR0b24ga2JxLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImticS1idXR0b25fdHJhbnNwYXJlbnRcIlxuICAgICAgICBba2JxVG9vbHRpcF09XCJjb25maWcuZG93bmxvYWRUb29sdGlwXCJcbiAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29kZS5lbWl0KClcIj5cbiAgICA8aSBrYnEtaWNvbj1cIm1jLWRvd25sb2FkXzE2XCI+PC9pPlxuPC9idXR0b24+XG5cbjxidXR0b24ga2JxLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImticS1idXR0b25fdHJhbnNwYXJlbnRcIlxuICAgICAgICAjY29weVRvb2x0aXA9XCJrYnFUb29sdGlwXCJcbiAgICAgICAgW2ticVRvb2x0aXBdPVwiY29weVRvb2x0aXBUZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29weSgpXCI+XG4gICAgPGkga2JxLWljb249XCJtYy1jb3B5LW9fMTZcIj48L2k+XG48L2J1dHRvbj5cblxuPGJ1dHRvbiBrYnEtYnV0dG9uXG4gICAgICAgIGNsYXNzPVwia2JxLWJ1dHRvbl90cmFuc3BhcmVudFwiXG4gICAgICAgICpuZ0lmPVwiY29kZUZpbGVzW3NlbGVjdGVkVGFiSW5kZXhdLmxpbmtcIlxuICAgICAgICBba2JxVG9vbHRpcF09XCJjb25maWcub3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcFwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRXh0ZXJuYWxTeXN0ZW0uZW1pdCgpXCI+XG4gICAgPGkga2JxLWljb249XCJtYy1leHRlcm5hbC1saW5rXzE2XCI+PC9pPlxuPC9idXR0b24+XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29kZS1ibG9jay9hY3Rpb25iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb2RlLWJsb2NrL2FjdGlvbmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBbUJ4QyxNQUFNLE9BQU8scUJBQXFCO0lBWGxDO1FBaUJhLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUlwQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0F3QjNEO0lBcEJHLGVBQWU7UUFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRS9DLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTthQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUNuRCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7aUlBcENRLHFCQUFxQjtxSEFBckIscUJBQXFCLGttQkM5QmxDLDZ0Q0FxQ0E7OzJGRFBhLHFCQUFxQjtrQkFYakMsU0FBUzsrQkFDSSxxQkFBcUIsUUFHekI7d0JBQ0YsS0FBSyxFQUFFLDBCQUEwQjt3QkFDakMsZ0RBQWdELEVBQUUsY0FBYztxQkFDbkUsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHckIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2JxVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgS2JxQ29kZUJsb2NrQ29uZmlndXJhdGlvbixcbiAgICBLYnFDb2RlRmlsZVxufSBmcm9tICcuL2NvZGUtYmxvY2sudHlwZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLWFjdGlvbmJhci1ibG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbmJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWN0aW9uYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1jb2RlLWJsb2NrLWFjdGlvbmJhcicsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2stYWN0aW9uYmFyX2xlc3MtY29udHJhc3RdJzogJ2xlc3NDb250cmFzdCdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgS2JxQWN0aW9uQmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnY29weVRvb2x0aXAnKSBjb3B5VG9vbHRpcDogS2JxVG9vbHRpcFRyaWdnZXI7XG5cbiAgICBASW5wdXQoKSBjb25maWc6IEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb247XG4gICAgQElucHV0KCkgY29kZUZpbGVzOiBLYnFDb2RlRmlsZVtdO1xuICAgIEBJbnB1dCgpIGxlc3NDb250cmFzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICBASW5wdXQoKSBtdWx0aUxpbmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc29mdFdyYXA6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlU29mdFdyYXAgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGRvd25sb2FkQ29kZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgY29weUNvZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbFN5c3RlbSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvcHlUb29sdGlwVGV4dDogc3RyaW5nO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcHlUb29sdGlwVGV4dCA9IHRoaXMuY29uZmlnLmNvcHlUb29sdGlwO1xuXG4gICAgICAgIHRoaXMuY29weVRvb2x0aXAudmlzaWJsZUNoYW5nZVxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvcHlUb29sdGlwVGV4dCA9PT0gdGhpcy5jb25maWcuY29waWVkVG9vbHRpcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHlUb29sdGlwVGV4dCA9IHRoaXMuY29uZmlnLmNvcHlUb29sdGlwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29weSgpIHtcbiAgICAgICAgdGhpcy5jb3B5Q29kZS5lbWl0KCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvcHlUb29sdGlwVGV4dCA9IHRoaXMuY29uZmlnLmNvcGllZFRvb2x0aXA7XG4gICAgICAgICAgICB0aGlzLmNvcHlUb29sdGlwLnNob3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImticS1jb2RlLWJsb2NrX19mYWRlLWdyYWRpZW50XCI+PC9kaXY+XG5cbjxidXR0b24ga2JxLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgKm5nSWY9XCJtdWx0aUxpbmVcIlxuICAgICAgICBba2JxVG9vbHRpcF09XCJzb2Z0V3JhcCA/IGNvbmZpZy5zb2Z0V3JhcE9mZlRvb2x0aXAgOiBjb25maWcuc29mdFdyYXBPblRvb2x0aXBcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29mdFdyYXAuZW1pdCgpXCI+XG4gICAgPGkgKm5nSWY9XCIhc29mdFdyYXBcIiBrYnEtaWNvbj1cIm1jLXdvcmQtd3JhcF8xNlwiPjwvaT5cbiAgICA8aSAqbmdJZj1cInNvZnRXcmFwXCIga2JxLWljb249XCJtYy13b3JkLXdyYXAtc2xhc2hfMTZcIj48L2k+XG48L2J1dHRvbj5cblxuPGJ1dHRvbiBrYnEtYnV0dG9uXG4gICAgICAgIFtjb2xvcl09XCInY29udHJhc3QnXCJcbiAgICAgICAgW2ticVN0eWxlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICBba2JxVG9vbHRpcF09XCJjb25maWcuZG93bmxvYWRUb29sdGlwXCJcbiAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ29kZS5lbWl0KClcIj5cbiAgICA8aSBrYnEtaWNvbj1cIm1jLWRvd25sb2FkXzE2XCI+PC9pPlxuPC9idXR0b24+XG5cbjxidXR0b24ga2JxLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgI2NvcHlUb29sdGlwPVwia2JxVG9vbHRpcFwiXG4gICAgICAgIFtrYnFUb29sdGlwXT1cImNvcHlUb29sdGlwVGV4dFwiXG4gICAgICAgIChjbGljayk9XCJvbkNvcHkoKVwiPlxuICAgIDxpIGticS1pY29uPVwibWMtY29weS1vXzE2XCI+PC9pPlxuPC9idXR0b24+XG5cbjxidXR0b24ga2JxLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgKm5nSWY9XCJjb2RlRmlsZXNbc2VsZWN0ZWRUYWJJbmRleF0ubGlua1wiXG4gICAgICAgIFtrYnFUb29sdGlwXT1cImNvbmZpZy5vcGVuRXh0ZXJuYWxTeXN0ZW1Ub29sdGlwXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5FeHRlcm5hbFN5c3RlbS5lbWl0KClcIj5cbiAgICA8aSBrYnEtaWNvbj1cIm1jLWV4dGVybmFsLWxpbmtfMTZcIj48L2k+XG48L2J1dHRvbj5cbiJdfQ==
@@ -7,9 +7,10 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/cdk/clipboard";
8
8
  import * as i2 from "@angular/common";
9
9
  import * as i3 from "@koobiq/components/button";
10
- import * as i4 from "ngx-highlightjs";
11
- import * as i5 from "@koobiq/components/tabs";
12
- import * as i6 from "./actionbar.component";
10
+ import * as i4 from "@koobiq/components/icon";
11
+ import * as i5 from "ngx-highlightjs";
12
+ import * as i6 from "@koobiq/components/tabs";
13
+ import * as i7 from "./actionbar.component";
13
14
  export const COPIED_MESSAGE_TOOLTIP_TIMEOUT = 100;
14
15
  export const DEFAULT_EXTENSION = 'txt';
15
16
  export const LANGUAGES_EXTENSIONS = {
@@ -61,12 +62,13 @@ export class KbqCodeBlockComponent {
61
62
  this.copied = false;
62
63
  this.viewAll = false;
63
64
  this.multiLine = false;
65
+ this.isTopOverflow = false;
64
66
  this.resizeStream = new Subject();
65
67
  this.resizeDebounceInterval = 100;
66
68
  this.resizeSubscription = Subscription.EMPTY;
67
69
  this.updateHeader = () => {
68
70
  const clientWidth = this.elementRef.nativeElement.querySelector('kbq-actionbar-block').clientWidth;
69
- this.renderer.setStyle(this.tabGroup.tabHeader.elementRef.nativeElement, 'margin-right', `${actionBarBlockLeftMargin + clientWidth}px`);
71
+ this.renderer.setStyle(this.tabGroup.tabHeader.elementRef.nativeElement, 'padding-right', `${actionBarBlockLeftMargin + clientWidth}px`);
70
72
  this.changeDetectorRef.markForCheck();
71
73
  };
72
74
  this.updateMultiline = () => {
@@ -110,48 +112,64 @@ export class KbqCodeBlockComponent {
110
112
  setTimeout(this.updateMultiline, 1);
111
113
  }
112
114
  getMaxHeight() {
113
- return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : 'none';
115
+ return this.maxHeight > 0 && !this.viewAll ? `${this.maxHeight}px` : '';
114
116
  }
115
117
  onSelectTab($event) {
116
118
  this.selectedTabIndex = $event.index;
117
119
  this.updateMultiline();
120
+ this.isTopOverflow = false;
118
121
  setTimeout(this.updateHeader);
119
122
  }
123
+ checkOverflow(currentCodeContentElement) {
124
+ if (this.noHeader) {
125
+ return;
126
+ }
127
+ this.isTopOverflow = currentCodeContentElement.scrollTop > 0;
128
+ }
129
+ onShowMoreClick(currentCodeContentElement) {
130
+ this.toggleViewAll();
131
+ // Should explicitly scroll to top so content will be cropped from the bottom
132
+ if (!this.viewAll) {
133
+ currentCodeContentElement?.scroll({ top: 0, behavior: 'instant' });
134
+ }
135
+ }
120
136
  getFullFileName(codeFile) {
121
137
  const fileName = codeFile.filename || 'code';
122
138
  const extension = LANGUAGES_EXTENSIONS[codeFile.language] || DEFAULT_EXTENSION;
123
139
  return `${fileName}.${extension}`;
124
140
  }
125
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCodeBlockComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Clipboard }, { token: i0.Renderer2 }, { token: KBQ_CODE_BLOCK_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
126
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCodeBlockComponent, selector: "kbq-code-block", inputs: { lineNumbers: "lineNumbers", codeFiles: "codeFiles", lessContrast: "lessContrast", maxHeight: "maxHeight", softWrap: "softWrap" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-code-block_less-contrast": "lessContrast", "class.kbq-code-block_hide-line-numbers": "!lineNumbers", "class.kbq-code-block_single-file": "singleFile", "class.kbq-code-block_no-header": "noHeader" }, classAttribute: "kbq-code-block" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: KbqTabGroup, descendants: true }], exportAs: ["kbqCodeBlock"], ngImport: i0, template: "<kbq-tab-group (selectedTabChange)=\"onSelectTab($event)\">\n <kbq-tab\n *ngFor=\"let codeFile of codeFiles; let i = index\"\n [disabled]=\"singleFile\">\n\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n\n <pre class=\"kbq-code-block__code kbq-scrollbar\"\n #codeContent\n [style.max-height]=\"getMaxHeight()\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n ><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n (highlighted)=\"onHighlighted()\">\n </code><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [lessContrast]=\"lessContrast\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\">\n </kbq-actionbar-block></pre>\n\n <button\n class=\"kbq-button_transparent kbq-code-block__show-more\"\n kbq-button\n *ngIf=\"viewAll || codeContent.offsetHeight < codeContent.scrollHeight\"\n (click)=\"toggleViewAll()\">\n\n {{ viewAll ? config.viewLessText : config.viewAllText}}\n <i class=\"mc mc-angle-down-S_16\" *ngIf=\"!viewAll\"></i>\n <i class=\"mc kbq-angle-up-S_16\" *ngIf=\"viewAll\"></i>\n </button>\n </kbq-tab>\n</kbq-tab-group>\n", styles: [".kbq-code-block{display:block;position:relative;box-sizing:border-box;hyphens:none;-ms-hyphens:none;-moz-hyphens:none;-webkit-hyphens:none;border-width:1px;border-style:solid;border-radius:8px}.kbq-code-block:not(.kbq-code-block_no-header) .kbq-tab-group:after{content:\"\";position:absolute;top:39px;left:0;right:0;height:1px}.kbq-code-block .kbq-tab-header{margin-right:152px}.kbq-code-block.kbq-code-block_hide-line-numbers .hljs-ln-line.hljs-ln-numbers{display:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:before{content:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:hover{background:transparent!important}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code{position:relative}.kbq-code-block.kbq-code-block_no-header .kbq-tab-header{display:none}.kbq-code-block pre{margin:0}.kbq-code-block .kbq-tab-body__wrapper{flex-direction:column;position:unset}.kbq-code-block .kbq-tab-body.kbq-tab-body__active{position:unset}.kbq-code-block__code{overflow-y:hidden}.kbq-code-block__code.kbq-code-block__code_view-all{max-height:unset;overflow-y:unset}.kbq-code-block__code.kbq-code-block__code_soft-wrap{white-space:pre-wrap}.kbq-code-block__code>code{padding:12px!important}.kbq-code-block__code .hljs-ln{border-collapse:unset}.kbq-code-block__code .hljs-ln .hljs{padding:0}.kbq-code-block__code .hljs-ln-numbers{border-right-width:0;padding:2px 12px 0 0;vertical-align:baseline;text-align:right}.kbq-code-block__code .hljs-ln-n:before{white-space:nowrap}.kbq-code-block__show-more{overflow:hidden;width:100%;border-top-style:solid!important;border-top-width:1px!important;border-top-left-radius:0!important;border-top-right-radius:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i4.Highlight, selector: "[highlight]", inputs: ["highlight", "languages", "lineNumbers"], outputs: ["highlighted"] }, { kind: "component", type: i5.KbqTabGroup, selector: "kbq-tab-group", inputs: ["disabled", "transparent", "onSurface", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["kbqTabGroup"] }, { kind: "directive", type: i5.KbqTabLabel, selector: "[kbq-tab-label], [kbqTabLabel]" }, { kind: "component", type: i5.KbqTab, selector: "kbq-tab", inputs: ["disabled", "tooltipTitle", "tooltipPlacement", "label", "empty", "tabId"], exportAs: ["kbqTab"] }, { kind: "component", type: i6.KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: ["config", "codeFiles", "lessContrast", "selectedTabIndex", "multiLine", "softWrap"], outputs: ["toggleSoftWrap", "downloadCode", "copyCode", "openExternalSystem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
141
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqCodeBlockComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Clipboard }, { token: i0.Renderer2 }, { token: KBQ_CODE_BLOCK_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
142
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqCodeBlockComponent, selector: "kbq-code-block", inputs: { lineNumbers: "lineNumbers", codeFiles: "codeFiles", filled: "filled", maxHeight: "maxHeight", softWrap: "softWrap" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-code-block_filled": "filled", "class.kbq-code-block_outline": "!filled", "class.kbq-code-block_hide-line-numbers": "!lineNumbers", "class.kbq-code-block_single-file": "singleFile", "class.kbq-code-block_no-header": "noHeader", "class.kbq-code-block_header-with-shadow": "isTopOverflow" }, classAttribute: "kbq-code-block" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: KbqTabGroup, descendants: true }], exportAs: ["kbqCodeBlock"], ngImport: i0, template: "<kbq-tab-group (selectedTabChange)=\"onSelectTab($event)\">\n <kbq-tab\n *ngFor=\"let codeFile of codeFiles; let i = index\"\n [disabled]=\"singleFile\">\n\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n\n <pre class=\"kbq-code-block__code kbq-scrollbar\"\n #codeContent\n [style.max-height]=\"getMaxHeight()\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n (highlighted)=\"onHighlighted()\">\n </code><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [lessContrast]=\"filled\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\">\n </kbq-actionbar-block></pre>\n\n <div class=\"kbq-code-block__show-more\"\n *ngIf=\"maxHeight\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\">\n <span class=\"bg-wrapper\">\n <button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n kbq-button\n (click)=\"onShowMoreClick(codeContent)\">\n <i kbq-icon=\"mc-angle-down-L_16\" *ngIf=\"!viewAll\"></i>\n <i kbq-icon=\"mc-angle-up-L_16\" *ngIf=\"viewAll\"></i>\n {{ viewAll ? config.viewLessText : config.viewAllText}}\n </button>\n </span>\n </div>\n </kbq-tab>\n</kbq-tab-group>\n", styles: [".kbq-code-block{display:block;position:relative;overflow:hidden;box-sizing:border-box;hyphens:none;-ms-hyphens:none;-moz-hyphens:none;-webkit-hyphens:none;border-width:var(--kbq-code-block-size-container-border-width, 1px);border-style:solid;border-radius:var(--kbq-code-block-size-container-border-radius, 12px)}.kbq-code-block .kbq-tab-header{padding:var(--kbq-code-block-size-header-padding-vertical, 8px) calc(var(--kbq-code-block-size-header-padding-right, 8px) + 152px) var(--kbq-code-block-size-header-padding-vertical, 8px) var(--kbq-code-block-size-header-padding-left, 12px)}.kbq-code-block .kbq-code-block__code>code{padding:var(--kbq-code-block-size-with-header-content-padding-top, 4px) var(--kbq-code-block-size-with-header-content-padding-horizontal, 20px) var(--kbq-code-block-size-with-header-content-padding-bottom, 16px) var(--kbq-code-block-size-with-header-content-padding-horizontal, 20px)}.kbq-code-block .kbq-code-block__code .hljs-ln-numbers{padding-right:var(--kbq-code-block-size-with-header-content-content-gap-horizontal, 12px)}.kbq-code-block.kbq-code-block_hide-line-numbers .hljs-ln-line.hljs-ln-numbers{display:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:before{content:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:hover{background:transparent!important}.kbq-code-block.kbq-code-block_no-header .kbq-tab-header{display:none}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code{position:relative}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code>code{padding:var(--kbq-code-block-size-no-header-content-padding-vertical, 14px) var(--kbq-code-block-size-no-header-content-padding-horizontal, 20px)}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code .hljs-ln-numbers{padding-right:var(--kbq-code-block-size-no-header-content-content-gap-horizontal, 12px)}.kbq-code-block:not(:has(.kbq-code-block__show-more)) .kbq-code-block__code{overflow-y:auto}.kbq-code-block pre{margin:0}.kbq-code-block .kbq-tab-body__wrapper{flex-direction:column;position:unset}.kbq-code-block .kbq-tab-body.kbq-tab-body__active{position:unset}.kbq-code-block__code{overflow-y:hidden}.kbq-code-block__code.kbq-code-block__code_view-all{max-height:unset;overflow-y:auto}.kbq-code-block__code.kbq-code-block__code_soft-wrap{white-space:pre-wrap}.kbq-code-block__code .hljs-ln{border-collapse:unset}.kbq-code-block__code .hljs-ln .hljs{padding:0}.kbq-code-block__code .hljs-ln-numbers{vertical-align:baseline;text-align:right}.kbq-code-block__code .hljs-ln-n:before{white-space:nowrap}.kbq-code-block__show-more{display:flex;justify-content:center;overflow:hidden;width:100%;position:absolute;bottom:0}.kbq-code-block__show-more.kbq-code-block__show-more_collapsed{padding-top:var(--kbq-code-block-size-collapse-collapsed-padding-top, 32px);padding-bottom:var(--kbq-code-block-size-collapse-collapsed-padding-bottom, 16px)}.kbq-code-block__show-more.kbq-code-block__show-more_expanded{padding-top:var(--kbq-code-block-size-collapse-expanded-padding-top, 0);margin-bottom:var(--kbq-code-block-size-collapse-expanded-padding-bottom, 16px)}.kbq-code-block__show-more .bg-wrapper{border-radius:var(--kbq-button-size-border-radius, 8px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "directive", type: i5.Highlight, selector: "[highlight]", inputs: ["highlight", "languages", "lineNumbers"], outputs: ["highlighted"] }, { kind: "component", type: i6.KbqTabGroup, selector: "kbq-tab-group", inputs: ["disabled", "transparent", "onSurface", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["kbqTabGroup"] }, { kind: "directive", type: i6.KbqTabLabel, selector: "[kbq-tab-label], [kbqTabLabel]" }, { kind: "component", type: i6.KbqTab, selector: "kbq-tab", inputs: ["disabled", "tooltipTitle", "tooltipPlacement", "label", "empty", "tabId"], exportAs: ["kbqTab"] }, { kind: "component", type: i7.KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: ["config", "codeFiles", "lessContrast", "selectedTabIndex", "multiLine", "softWrap"], outputs: ["toggleSoftWrap", "downloadCode", "copyCode", "openExternalSystem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
127
143
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCodeBlockComponent, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqCodeBlockComponent, decorators: [{
129
145
  type: Component,
130
146
  args: [{ selector: 'kbq-code-block', exportAs: 'kbqCodeBlock', host: {
131
147
  class: 'kbq-code-block',
132
- '[class.kbq-code-block_less-contrast]': 'lessContrast',
148
+ '[class.kbq-code-block_filled]': 'filled',
149
+ '[class.kbq-code-block_outline]': '!filled',
133
150
  '[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',
134
151
  '[class.kbq-code-block_single-file]': 'singleFile',
135
152
  '[class.kbq-code-block_no-header]': 'noHeader',
153
+ '[class.kbq-code-block_header-with-shadow]': 'isTopOverflow',
136
154
  '(window:resize)': 'resizeStream.next($event)'
137
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<kbq-tab-group (selectedTabChange)=\"onSelectTab($event)\">\n <kbq-tab\n *ngFor=\"let codeFile of codeFiles; let i = index\"\n [disabled]=\"singleFile\">\n\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n\n <pre class=\"kbq-code-block__code kbq-scrollbar\"\n #codeContent\n [style.max-height]=\"getMaxHeight()\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n ><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n (highlighted)=\"onHighlighted()\">\n </code><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [lessContrast]=\"lessContrast\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\">\n </kbq-actionbar-block></pre>\n\n <button\n class=\"kbq-button_transparent kbq-code-block__show-more\"\n kbq-button\n *ngIf=\"viewAll || codeContent.offsetHeight < codeContent.scrollHeight\"\n (click)=\"toggleViewAll()\">\n\n {{ viewAll ? config.viewLessText : config.viewAllText}}\n <i class=\"mc mc-angle-down-S_16\" *ngIf=\"!viewAll\"></i>\n <i class=\"mc kbq-angle-up-S_16\" *ngIf=\"viewAll\"></i>\n </button>\n </kbq-tab>\n</kbq-tab-group>\n", styles: [".kbq-code-block{display:block;position:relative;box-sizing:border-box;hyphens:none;-ms-hyphens:none;-moz-hyphens:none;-webkit-hyphens:none;border-width:1px;border-style:solid;border-radius:8px}.kbq-code-block:not(.kbq-code-block_no-header) .kbq-tab-group:after{content:\"\";position:absolute;top:39px;left:0;right:0;height:1px}.kbq-code-block .kbq-tab-header{margin-right:152px}.kbq-code-block.kbq-code-block_hide-line-numbers .hljs-ln-line.hljs-ln-numbers{display:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:before{content:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:hover{background:transparent!important}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code{position:relative}.kbq-code-block.kbq-code-block_no-header .kbq-tab-header{display:none}.kbq-code-block pre{margin:0}.kbq-code-block .kbq-tab-body__wrapper{flex-direction:column;position:unset}.kbq-code-block .kbq-tab-body.kbq-tab-body__active{position:unset}.kbq-code-block__code{overflow-y:hidden}.kbq-code-block__code.kbq-code-block__code_view-all{max-height:unset;overflow-y:unset}.kbq-code-block__code.kbq-code-block__code_soft-wrap{white-space:pre-wrap}.kbq-code-block__code>code{padding:12px!important}.kbq-code-block__code .hljs-ln{border-collapse:unset}.kbq-code-block__code .hljs-ln .hljs{padding:0}.kbq-code-block__code .hljs-ln-numbers{border-right-width:0;padding:2px 12px 0 0;vertical-align:baseline;text-align:right}.kbq-code-block__code .hljs-ln-n:before{white-space:nowrap}.kbq-code-block__show-more{overflow:hidden;width:100%;border-top-style:solid!important;border-top-width:1px!important;border-top-left-radius:0!important;border-top-right-radius:0!important}\n"] }]
138
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Clipboard }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
155
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<kbq-tab-group (selectedTabChange)=\"onSelectTab($event)\">\n <kbq-tab\n *ngFor=\"let codeFile of codeFiles; let i = index\"\n [disabled]=\"singleFile\">\n\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n\n <pre class=\"kbq-code-block__code kbq-scrollbar\"\n #codeContent\n [style.max-height]=\"getMaxHeight()\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n (scroll)=\"checkOverflow(codeContent)\"\n ><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n (highlighted)=\"onHighlighted()\">\n </code><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [lessContrast]=\"filled\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\">\n </kbq-actionbar-block></pre>\n\n <div class=\"kbq-code-block__show-more\"\n *ngIf=\"maxHeight\"\n [class.kbq-code-block__show-more_expanded]=\"viewAll\"\n [class.kbq-code-block__show-more_collapsed]=\"!viewAll\">\n <span class=\"bg-wrapper\">\n <button\n [color]=\"'theme'\"\n [kbqStyle]=\"'transparent'\"\n kbq-button\n (click)=\"onShowMoreClick(codeContent)\">\n <i kbq-icon=\"mc-angle-down-L_16\" *ngIf=\"!viewAll\"></i>\n <i kbq-icon=\"mc-angle-up-L_16\" *ngIf=\"viewAll\"></i>\n {{ viewAll ? config.viewLessText : config.viewAllText}}\n </button>\n </span>\n </div>\n </kbq-tab>\n</kbq-tab-group>\n", styles: [".kbq-code-block{display:block;position:relative;overflow:hidden;box-sizing:border-box;hyphens:none;-ms-hyphens:none;-moz-hyphens:none;-webkit-hyphens:none;border-width:var(--kbq-code-block-size-container-border-width, 1px);border-style:solid;border-radius:var(--kbq-code-block-size-container-border-radius, 12px)}.kbq-code-block .kbq-tab-header{padding:var(--kbq-code-block-size-header-padding-vertical, 8px) calc(var(--kbq-code-block-size-header-padding-right, 8px) + 152px) var(--kbq-code-block-size-header-padding-vertical, 8px) var(--kbq-code-block-size-header-padding-left, 12px)}.kbq-code-block .kbq-code-block__code>code{padding:var(--kbq-code-block-size-with-header-content-padding-top, 4px) var(--kbq-code-block-size-with-header-content-padding-horizontal, 20px) var(--kbq-code-block-size-with-header-content-padding-bottom, 16px) var(--kbq-code-block-size-with-header-content-padding-horizontal, 20px)}.kbq-code-block .kbq-code-block__code .hljs-ln-numbers{padding-right:var(--kbq-code-block-size-with-header-content-content-gap-horizontal, 12px)}.kbq-code-block.kbq-code-block_hide-line-numbers .hljs-ln-line.hljs-ln-numbers{display:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:before{content:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:hover{background:transparent!important}.kbq-code-block.kbq-code-block_no-header .kbq-tab-header{display:none}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code{position:relative}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code>code{padding:var(--kbq-code-block-size-no-header-content-padding-vertical, 14px) var(--kbq-code-block-size-no-header-content-padding-horizontal, 20px)}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code .hljs-ln-numbers{padding-right:var(--kbq-code-block-size-no-header-content-content-gap-horizontal, 12px)}.kbq-code-block:not(:has(.kbq-code-block__show-more)) .kbq-code-block__code{overflow-y:auto}.kbq-code-block pre{margin:0}.kbq-code-block .kbq-tab-body__wrapper{flex-direction:column;position:unset}.kbq-code-block .kbq-tab-body.kbq-tab-body__active{position:unset}.kbq-code-block__code{overflow-y:hidden}.kbq-code-block__code.kbq-code-block__code_view-all{max-height:unset;overflow-y:auto}.kbq-code-block__code.kbq-code-block__code_soft-wrap{white-space:pre-wrap}.kbq-code-block__code .hljs-ln{border-collapse:unset}.kbq-code-block__code .hljs-ln .hljs{padding:0}.kbq-code-block__code .hljs-ln-numbers{vertical-align:baseline;text-align:right}.kbq-code-block__code .hljs-ln-n:before{white-space:nowrap}.kbq-code-block__show-more{display:flex;justify-content:center;overflow:hidden;width:100%;position:absolute;bottom:0}.kbq-code-block__show-more.kbq-code-block__show-more_collapsed{padding-top:var(--kbq-code-block-size-collapse-collapsed-padding-top, 32px);padding-bottom:var(--kbq-code-block-size-collapse-collapsed-padding-bottom, 16px)}.kbq-code-block__show-more.kbq-code-block__show-more_expanded{padding-top:var(--kbq-code-block-size-collapse-expanded-padding-top, 0);margin-bottom:var(--kbq-code-block-size-collapse-expanded-padding-bottom, 16px)}.kbq-code-block__show-more .bg-wrapper{border-radius:var(--kbq-button-size-border-radius, 8px)}\n"] }]
156
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Clipboard }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
139
157
  type: Optional
140
158
  }, {
141
159
  type: Inject,
142
160
  args: [KBQ_CODE_BLOCK_CONFIGURATION]
143
- }] }]; }, propDecorators: { tabGroup: [{
161
+ }] }], propDecorators: { tabGroup: [{
144
162
  type: ViewChild,
145
163
  args: [KbqTabGroup]
146
164
  }], lineNumbers: [{
147
165
  type: Input
148
166
  }], codeFiles: [{
149
167
  type: Input
150
- }], lessContrast: [{
168
+ }], filled: [{
151
169
  type: Input
152
170
  }], maxHeight: [{
153
171
  type: Input
154
172
  }], softWrap: [{
155
173
  type: Input
156
174
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBRWpCLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUTlDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDaEMsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNO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Q3RELDBDQUEwQyxFQUFFLGNBQWM7d0JBQzFELG9DQUFvQyxFQUFFLFlBQVk7d0JBQ2xELGtDQUFrQyxFQUFFLFVBQVU7d0JBQzlDLGlCQUFpQixFQUFFLDJCQUEyQjtxQkFDakQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQW1DaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7NENBL0I1QixRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgT3B0aW9uYWwsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticVRhYkNoYW5nZUV2ZW50LCBLYnFUYWJHcm91cCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb24sXG4gICAgS2JxQ29kZUZpbGVcbn0gZnJvbSAnLi9jb2RlLWJsb2NrLnR5cGVzJztcblxuXG5leHBvcnQgY29uc3QgQ09QSUVEX01FU1NBR0VfVE9PTFRJUF9USU1FT1VUID0gMTAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhURU5TSU9OID0gJ3R4dCc7XG5leHBvcnQgY29uc3QgTEFOR1VBR0VTX0VYVEVOU0lPTlMgPSB7XG4gICAgaHRtbDogJ2h0bWwnLFxuICAgIGNzczogJ2NzcycsXG4gICAgcGhwOiAncGhwJyxcbiAgICBqYXZhOiAnamF2YScsXG4gICAgYmFzaDogJ3NoJyxcbiAgICBqYXZhc2NyaXB0OiAnanMnLFxuICAgIHR5cGVzY3JpcHQ6ICd0cycsXG4gICAgcHl0aG9uOiAncHknLFxuICAgIHJ1Ynk6ICdyYicsXG4gICAgYzogJ2MnLFxuICAgICdjKysnOiAnY3BwJyxcbiAgICAnYyMnOiAnY3MnLFxuICAgIGNzaGFycDogJ2NzJyxcbiAgICBsdWE6ICdsdWEnLFxuICAgIHhtbDogJ3htbCcsXG4gICAganNvbjogJ2pzb24nXG59O1xuXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfQ09ERV9CTE9DS19ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSB7XG4gICAgc29mdFdyYXBPblRvb2x0aXA6ICfQktC60LvRjtGH0LjRgtGMINC/0LXRgNC10L3QvtGBINC/0L4g0YHQu9C+0LLQsNC8JyxcbiAgICBzb2Z0V3JhcE9mZlRvb2x0aXA6ICfQktGL0LrQu9GO0YfQuNGC0Ywg0L/QtdGA0LXQvdC+0YEg0L/QviDRgdC70L7QstCw0LwnLFxuICAgIGRvd25sb2FkVG9vbHRpcDogJ9Ch0LrQsNGH0LDRgtGMJyxcbiAgICBjb3BpZWRUb29sdGlwOiAn4pyTINCh0LrQvtC/0LjRgNC+0LLQsNC90L4nLFxuICAgIGNvcHlUb29sdGlwOiAn0KHQutC+0L/QuNGA0L7QstCw0YLRjCcsXG4gICAgdmlld0FsbFRleHQ6ICfQn9C+0LrQsNC30LDRgtGMINCy0YHQtScsXG4gICAgdmlld0xlc3NUZXh0OiAn0KHQstC10YDQvdGD0YLRjCcsXG4gICAgb3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcDogJ9Ce0YLQutGA0YvRgtGMINCy0L4g0LLQvdC10YjQvdC10Lkg0YHQuNGB0YLQtdC80LUnXG59O1xuXG5cbmNvbnN0IGFjdGlvbkJhckJsb2NrTGVmdE1hcmdpbiA9IDI0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1jb2RlLWJsb2NrJyxcbiAgICBleHBvcnRBczogJ2ticUNvZGVCbG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUtYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvZGUtYmxvY2suc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtY29kZS1ibG9jaycsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfbGVzcy1jb250cmFzdF0nOiAnbGVzc0NvbnRyYXN0JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19oaWRlLWxpbmUtbnVtYmVyc10nOiAnIWxpbmVOdW1iZXJzJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19zaW5nbGUtZmlsZV0nOiAnc2luZ2xlRmlsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfbm8taGVhZGVyXSc6ICdub0hlYWRlcicsXG4gICAgICAgICcod2luZG93OnJlc2l6ZSknOiAncmVzaXplU3RyZWFtLm5leHQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxQ29kZUJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBWaWV3Q2hpbGQoS2JxVGFiR3JvdXApIHRhYkdyb3VwOiBLYnFUYWJHcm91cDtcblxuICAgIEBJbnB1dCgpIGxpbmVOdW1iZXJzID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2RlRmlsZXM6IEticUNvZGVGaWxlW107XG4gICAgQElucHV0KCkgbGVzc0NvbnRyYXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1heEhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNvZnRXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgbm9IZWFkZXIoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZUZpbGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5jb2RlRmlsZXNbMF0uZmlsZW5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZUZpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZGVGaWxlcy5sZW5ndGggPT09IDE7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgY29waWVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmlld0FsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG11bHRpTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgcmVzaXplU3RyZWFtID0gbmV3IFN1YmplY3Q8RXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZURlYm91bmNlSW50ZXJ2YWw6IG51bWJlciA9IDEwMDtcbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTikgcHVibGljIGNvbmZpZzogS2JxQ29kZUJsb2NrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyB8fCBLQlFfQ09ERV9CTE9DS19ERUZBVUxUX0NPTkZJR1VSQVRJT047XG5cbiAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24gPSB0aGlzLnJlc2l6ZVN0cmVhbVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMucmVzaXplRGVib3VuY2VJbnRlcnZhbCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudXBkYXRlSGVhZGVyKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVIZWFkZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudFdpZHRoOiBudW1iZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdrYnEtYWN0aW9uYmFyLWJsb2NrJykuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAudGFiSGVhZGVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnLFxuICAgICAgICAgICAgYCR7YWN0aW9uQmFyQmxvY2tMZWZ0TWFyZ2luICsgY2xpZW50V2lkdGh9cHhgXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTb2Z0V3JhcCgpIHtcbiAgICAgICAgdGhpcy5zb2Z0V3JhcCA9ICF0aGlzLnNvZnRXcmFwO1xuICAgIH1cblxuICAgIHRvZ2dsZVZpZXdBbGwoKSB7XG4gICAgICAgIHRoaXMudmlld0FsbCA9ICF0aGlzLnZpZXdBbGw7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb2RlKCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF07XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY29kZUZpbGUuY29udGVudF0sIHsgdHlwZTogJ3RleHQvcGxhaW4nIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGAke3RoaXMuZ2V0RnVsbEZpbGVOYW1lKGNvZGVGaWxlKX1gKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgIH1cblxuICAgIGNvcHlDb2RlKCkge1xuICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0uY29udGVudCk7XG4gICAgICAgIHRoaXMuY29waWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvcGVuRXh0ZXJuYWxTeXN0ZW0oKSB7XG4gICAgICAgIGNvbnN0IGV4dGVybmFsTGluayA9IHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0ubGluaztcbiAgICAgICAgd2luZG93Lm9wZW4oZXh0ZXJuYWxMaW5rLCAnX2JsYW5rJyk7XG4gICAgfVxuXG4gICAgb25IaWdobGlnaHRlZCgpIHtcbiAgICAgICAgc2V0VGltZW91dCh0aGlzLnVwZGF0ZU11bHRpbGluZSwgMSk7XG4gICAgfVxuXG4gICAgZ2V0TWF4SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEhlaWdodCA+IDAgJiYgIXRoaXMudmlld0FsbCA/IGAke3RoaXMubWF4SGVpZ2h0fXB4YCA6ICdub25lJztcbiAgICB9XG5cbiAgICBvblNlbGVjdFRhYigkZXZlbnQ6IEticVRhYkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9ICRldmVudC5pbmRleDtcbiAgICAgICAgdGhpcy51cGRhdGVNdWx0aWxpbmUoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KHRoaXMudXBkYXRlSGVhZGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU11bHRpbGluZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5tdWx0aUxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5obGpzLWxuLW51bWJlcnMnKS5sZW5ndGggPiAxO1xuXG4gICAgICAgIHRoaXMudXBkYXRlSGVhZGVyKCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZ1bGxGaWxlTmFtZShjb2RlRmlsZTogS2JxQ29kZUZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGNvZGVGaWxlLmZpbGVuYW1lIHx8ICdjb2RlJztcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gTEFOR1VBR0VTX0VYVEVOU0lPTlNbY29kZUZpbGUubGFuZ3VhZ2VdIHx8IERFRkFVTFRfRVhURU5TSU9OO1xuXG4gICAgICAgIHJldHVybiBgJHtmaWxlTmFtZX0uJHtleHRlbnNpb259YDtcbiAgICB9XG59XG4iLCI8a2JxLXRhYi1ncm91cCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RUYWIoJGV2ZW50KVwiPlxuICAgIDxrYnEtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2RlRmlsZSBvZiBjb2RlRmlsZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlRmlsZVwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrYnEtdGFiLWxhYmVsPnt7IGNvZGVGaWxlLmZpbGVuYW1lIH19PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8cHJlIGNsYXNzPVwia2JxLWNvZGUtYmxvY2tfX2NvZGUga2JxLXNjcm9sbGJhclwiXG4gICAgICAgICAgICAgI2NvZGVDb250ZW50XG4gICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0TWF4SGVpZ2h0KClcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fY29kZV9zb2Z0LXdyYXBdPVwic29mdFdyYXBcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fY29kZV92aWV3LWFsbF09XCJ2aWV3QWxsXCJcbiAgICAgICAgICAgID48Y29kZSBjbGFzcz1cImhsanNcIlxuICAgICAgICAgICAgICAgW2lkXT1cImNvZGVGaWxlLmZpbGVuYW1lICsgJ18nICsgaVwiXG4gICAgICAgICAgICAgICBbY2xhc3MuaGxqcy1saW5lLW51bWJlcnNdPVwibGluZU51bWJlcnNcIlxuICAgICAgICAgICAgICAgW2hpZ2hsaWdodF09XCJjb2RlRmlsZXNbaV0uY29udGVudFwiXG4gICAgICAgICAgICAgICBbbGluZU51bWJlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAoaGlnaGxpZ2h0ZWQpPVwib25IaWdobGlnaHRlZCgpXCI+XG4gICAgICAgICAgICA8L2NvZGU+PGticS1hY3Rpb25iYXItYmxvY2tcbiAgICAgICAgICAgICAgICBbY2xhc3Mua2JxLWFjdGlvbmJhci1ibG9ja19mbG9hdGluZ109XCJub0hlYWRlclwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgIFtjb2RlRmlsZXNdPVwiY29kZUZpbGVzXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUYWJJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICBbbGVzc0NvbnRyYXN0XT1cImxlc3NDb250cmFzdFwiXG4gICAgICAgICAgICAgICAgW211bHRpTGluZV09XCJtdWx0aUxpbmVcIlxuICAgICAgICAgICAgICAgIFtzb2Z0V3JhcF09XCJzb2Z0V3JhcFwiXG4gICAgICAgICAgICAgICAgKHRvZ2dsZVNvZnRXcmFwKT1cInRvZ2dsZVNvZnRXcmFwKClcIlxuICAgICAgICAgICAgICAgIChkb3dubG9hZENvZGUpPVwiZG93bmxvYWRDb2RlKClcIlxuICAgICAgICAgICAgICAgIChjb3B5Q29kZSk9XCJjb3B5Q29kZSgpXCJcbiAgICAgICAgICAgICAgICAob3BlbkV4dGVybmFsU3lzdGVtKT1cIm9wZW5FeHRlcm5hbFN5c3RlbSgpXCI+XG4gICAgICAgICAgICA8L2ticS1hY3Rpb25iYXItYmxvY2s+PC9wcmU+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtYnV0dG9uX3RyYW5zcGFyZW50IGticS1jb2RlLWJsb2NrX19zaG93LW1vcmVcIlxuICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ2aWV3QWxsIHx8IGNvZGVDb250ZW50Lm9mZnNldEhlaWdodCA8IGNvZGVDb250ZW50LnNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVmlld0FsbCgpXCI+XG5cbiAgICAgICAgICAgIHt7IHZpZXdBbGwgPyBjb25maWcudmlld0xlc3NUZXh0IDogY29uZmlnLnZpZXdBbGxUZXh0fX1cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWMgbWMtYW5nbGUtZG93bi1TXzE2XCIgKm5nSWY9XCIhdmlld0FsbFwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWMga2JxLWFuZ2xlLXVwLVNfMTZcIiAqbmdJZj1cInZpZXdBbGxcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwva2JxLXRhYj5cbjwva2JxLXRhYi1ncm91cD5cbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBRWpCLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVE5QyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxHQUFHLENBQUM7QUFDbEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2hDLElBQUksRUFBRSxNQUFNO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixVQUFVLEVBQUUsSUFBSTtJQUNoQixVQUFVLEVBQUUsSUFBSTtJQUNoQixNQUFNLEVBQUUsSUFBSTtJQUNaLElBQUksRUFBRSxJQUFJO0lBQ1YsQ0FBQyxFQUFFLEdBQUc7SUFD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USxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFXTyxlQUFlLENBQUMsUUFBcUI7UUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGlCQUFpQixDQUFDO1FBRS9FLE9BQU8sR0FBRyxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7SUFDdEMsQ0FBQztpSUFuSVEscUJBQXFCLCtIQWlDTiw0QkFBNEI7cUhBakMzQyxxQkFBcUIsbW9CQUNuQixXQUFXLDRFQ2pGMUIsaXZFQW1EQTs7MkZENkJhLHFCQUFxQjtrQkFsQmpDLFNBQVM7K0JBQ0ksZ0JBQWdCLFlBQ2hCLGNBQWMsUUFHbEI7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsK0JBQStCLEVBQUUsUUFBUTt3QkFDekMsZ0NBQWdDLEVBQUUsU0FBUzt3QkFDM0MsMENBQTBDLEVBQUUsY0FBYzt3QkFDMUQsb0NBQW9DLEVBQUUsWUFBWTt3QkFDbEQsa0NBQWtDLEVBQUUsVUFBVTt3QkFDOUMsMkNBQTJDLEVBQUUsZUFBZTt3QkFDNUQsaUJBQWlCLEVBQUUsMkJBQTJCO3FCQUNqRCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBbUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0Qjt5Q0FoQzVCLFFBQVE7c0JBQS9CLFNBQVM7dUJBQUMsV0FBVztnQkFFYixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgSW5wdXQsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9wdGlvbmFsLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLYnFUYWJDaGFuZ2VFdmVudCwgS2JxVGFiR3JvdXAgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uLFxuICAgIEticUNvZGVGaWxlXG59IGZyb20gJy4vY29kZS1ibG9jay50eXBlcyc7XG5cblxuZXhwb3J0IGNvbnN0IENPUElFRF9NRVNTQUdFX1RPT0xUSVBfVElNRU9VVCA9IDEwMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYVEVOU0lPTiA9ICd0eHQnO1xuZXhwb3J0IGNvbnN0IExBTkdVQUdFU19FWFRFTlNJT05TID0ge1xuICAgIGh0bWw6ICdodG1sJyxcbiAgICBjc3M6ICdjc3MnLFxuICAgIHBocDogJ3BocCcsXG4gICAgamF2YTogJ2phdmEnLFxuICAgIGJhc2g6ICdzaCcsXG4gICAgamF2YXNjcmlwdDogJ2pzJyxcbiAgICB0eXBlc2NyaXB0OiAndHMnLFxuICAgIHB5dGhvbjogJ3B5JyxcbiAgICBydWJ5OiAncmInLFxuICAgIGM6ICdjJyxcbiAgICAnYysrJzogJ2NwcCcsXG4gICAgJ2MjJzogJ2NzJyxcbiAgICBjc2hhcnA6ICdjcycsXG4gICAgbHVhOiAnbHVhJyxcbiAgICB4bWw6ICd4bWwnLFxuICAgIGpzb246ICdqc29uJ1xufTtcblxuZXhwb3J0IGNvbnN0IEtCUV9DT0RFX0JMT0NLX0NPTkZJR1VSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignS2JxQ29kZUJsb2NrQ29uZmlndXJhdGlvbicpO1xuXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfREVGQVVMVF9DT05GSUdVUkFUSU9OID0ge1xuICAgIHNvZnRXcmFwT25Ub29sdGlwOiAn0JLQutC70Y7Rh9C40YLRjCDQv9C10YDQtdC90L7RgSDQv9C+INGB0LvQvtCy0LDQvCcsXG4gICAgc29mdFdyYXBPZmZUb29sdGlwOiAn0JLRi9C60LvRjtGH0LjRgtGMINC/0LXRgNC10L3QvtGBINC/0L4g0YHQu9C+0LLQsNC8JyxcbiAgICBkb3dubG9hZFRvb2x0aXA6ICfQodC60LDRh9Cw0YLRjCcsXG4gICAgY29waWVkVG9vbHRpcDogJ+KckyDQodC60L7Qv9C40YDQvtCy0LDQvdC+JyxcbiAgICBjb3B5VG9vbHRpcDogJ9Ch0LrQvtC/0LjRgNC+0LLQsNGC0YwnLFxuICAgIHZpZXdBbGxUZXh0OiAn0J/QvtC60LDQt9Cw0YLRjCDQstGB0LUnLFxuICAgIHZpZXdMZXNzVGV4dDogJ9Ch0LLQtdGA0L3Rg9GC0YwnLFxuICAgIG9wZW5FeHRlcm5hbFN5c3RlbVRvb2x0aXA6ICfQntGC0LrRgNGL0YLRjCDQstC+INCy0L3QtdGI0L3QtdC5INGB0LjRgdGC0LXQvNC1J1xufTtcblxuXG5jb25zdCBhY3Rpb25CYXJCbG9ja0xlZnRNYXJnaW4gPSAyNDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtY29kZS1ibG9jaycsXG4gICAgZXhwb3J0QXM6ICdrYnFDb2RlQmxvY2snLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2RlLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2RlLWJsb2NrLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWNvZGUtYmxvY2snLFxuICAgICAgICAnW2NsYXNzLmticS1jb2RlLWJsb2NrX2ZpbGxlZF0nOiAnZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19vdXRsaW5lXSc6ICchZmlsbGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19oaWRlLWxpbmUtbnVtYmVyc10nOiAnIWxpbmVOdW1iZXJzJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19zaW5nbGUtZmlsZV0nOiAnc2luZ2xlRmlsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfbm8taGVhZGVyXSc6ICdub0hlYWRlcicsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfaGVhZGVyLXdpdGgtc2hhZG93XSc6ICdpc1RvcE92ZXJmbG93JyxcbiAgICAgICAgJyh3aW5kb3c6cmVzaXplKSc6ICdyZXNpemVTdHJlYW0ubmV4dCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFDb2RlQmxvY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoS2JxVGFiR3JvdXApIHRhYkdyb3VwOiBLYnFUYWJHcm91cDtcblxuICAgIEBJbnB1dCgpIGxpbmVOdW1iZXJzID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2RlRmlsZXM6IEticUNvZGVGaWxlW107XG4gICAgQElucHV0KCkgZmlsbGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1heEhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNvZnRXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgbm9IZWFkZXIoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZUZpbGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5jb2RlRmlsZXNbMF0uZmlsZW5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZUZpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZGVGaWxlcy5sZW5ndGggPT09IDE7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgY29waWVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmlld0FsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG11bHRpTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzVG9wT3ZlcmZsb3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IHJlc2l6ZVN0cmVhbSA9IG5ldyBTdWJqZWN0PEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNpemVEZWJvdW5jZUludGVydmFsOiBudW1iZXIgPSAxMDA7XG4gICAgcHJpdmF0ZSByZXNpemVTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZCxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9DT0RFX0JMT0NLX0NPTkZJR1VSQVRJT04pIHB1YmxpYyBjb25maWc6IEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb25cbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgS0JRX0NPREVfQkxPQ0tfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuXG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gdGhpcy5yZXNpemVTdHJlYW1cbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLnJlc2l6ZURlYm91bmNlSW50ZXJ2YWwpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLnVwZGF0ZUhlYWRlcik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlSGVhZGVyID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBjbGllbnRXaWR0aDogbnVtYmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcigna2JxLWFjdGlvbmJhci1ibG9jaycpLmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnRhYkhlYWRlci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAncGFkZGluZy1yaWdodCcsXG4gICAgICAgICAgICBgJHthY3Rpb25CYXJCbG9ja0xlZnRNYXJnaW4gKyBjbGllbnRXaWR0aH1weGBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNvZnRXcmFwKCkge1xuICAgICAgICB0aGlzLnNvZnRXcmFwID0gIXRoaXMuc29mdFdyYXA7XG4gICAgfVxuXG4gICAgdG9nZ2xlVmlld0FsbCgpIHtcbiAgICAgICAgdGhpcy52aWV3QWxsID0gIXRoaXMudmlld0FsbDtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvZGUoKSB7XG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gdGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XTtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjb2RlRmlsZS5jb250ZW50XSwgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7dGhpcy5nZXRGdWxsRmlsZU5hbWUoY29kZUZpbGUpfWApO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgY29weUNvZGUoKSB7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkLmNvcHkodGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XS5jb250ZW50KTtcbiAgICAgICAgdGhpcy5jb3BpZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9wZW5FeHRlcm5hbFN5c3RlbSgpIHtcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rID0gdGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XS5saW5rO1xuICAgICAgICB3aW5kb3cub3BlbihleHRlcm5hbExpbmssICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBvbkhpZ2hsaWdodGVkKCkge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMudXBkYXRlTXVsdGlsaW5lLCAxKTtcbiAgICB9XG5cbiAgICBnZXRNYXhIZWlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4SGVpZ2h0ID4gMCAmJiAhdGhpcy52aWV3QWxsID8gYCR7dGhpcy5tYXhIZWlnaHR9cHhgIDogJyc7XG4gICAgfVxuXG4gICAgb25TZWxlY3RUYWIoJGV2ZW50OiBLYnFUYWJDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSAkZXZlbnQuaW5kZXg7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlsaW5lKCk7XG4gICAgICAgIHRoaXMuaXNUb3BPdmVyZmxvdyA9IGZhbHNlO1xuXG4gICAgICAgIHNldFRpbWVvdXQodGhpcy51cGRhdGVIZWFkZXIpO1xuICAgIH1cblxuICAgIGNoZWNrT3ZlcmZsb3coY3VycmVudENvZGVDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMubm9IZWFkZXIpIHsgcmV0dXJuOyB9XG4gICAgICAgIHRoaXMuaXNUb3BPdmVyZmxvdyA9IGN1cnJlbnRDb2RlQ29udGVudEVsZW1lbnQuc2Nyb2xsVG9wID4gMDtcbiAgICB9XG5cbiAgICBvblNob3dNb3JlQ2xpY2soY3VycmVudENvZGVDb250ZW50RWxlbWVudDogSFRNTFByZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy50b2dnbGVWaWV3QWxsKCk7XG5cbiAgICAgICAgLy8gU2hvdWxkIGV4cGxpY2l0bHkgc2Nyb2xsIHRvIHRvcCBzbyBjb250ZW50IHdpbGwgYmUgY3JvcHBlZCBmcm9tIHRoZSBib3R0b21cbiAgICAgICAgaWYgKCF0aGlzLnZpZXdBbGwpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDb2RlQ29udGVudEVsZW1lbnQ/LnNjcm9sbCh7IHRvcDogMCwgYmVoYXZpb3I6ICdpbnN0YW50JyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTXVsdGlsaW5lID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm11bHRpTGluZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmhsanMtbG4tbnVtYmVycycpLmxlbmd0aCA+IDE7XG5cbiAgICAgICAgdGhpcy51cGRhdGVIZWFkZXIoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RnVsbEZpbGVOYW1lKGNvZGVGaWxlOiBLYnFDb2RlRmlsZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gY29kZUZpbGUuZmlsZW5hbWUgfHwgJ2NvZGUnO1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBMQU5HVUFHRVNfRVhURU5TSU9OU1tjb2RlRmlsZS5sYW5ndWFnZV0gfHwgREVGQVVMVF9FWFRFTlNJT047XG5cbiAgICAgICAgcmV0dXJuIGAke2ZpbGVOYW1lfS4ke2V4dGVuc2lvbn1gO1xuICAgIH1cbn1cbiIsIjxrYnEtdGFiLWdyb3VwIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdFRhYigkZXZlbnQpXCI+XG4gICAgPGticS10YWJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvZGVGaWxlIG9mIGNvZGVGaWxlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzaW5nbGVGaWxlXCI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGticS10YWItbGFiZWw+e3sgY29kZUZpbGUuZmlsZW5hbWUgfX08L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxwcmUgY2xhc3M9XCJrYnEtY29kZS1ibG9ja19fY29kZSBrYnEtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICAjY29kZUNvbnRlbnRcbiAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRNYXhIZWlnaHQoKVwiXG4gICAgICAgICAgICAgW2NsYXNzLmticS1jb2RlLWJsb2NrX19jb2RlX3NvZnQtd3JhcF09XCJzb2Z0V3JhcFwiXG4gICAgICAgICAgICAgW2NsYXNzLmticS1jb2RlLWJsb2NrX19jb2RlX3ZpZXctYWxsXT1cInZpZXdBbGxcIlxuICAgICAgICAgICAgIChzY3JvbGwpPVwiY2hlY2tPdmVyZmxvdyhjb2RlQ29udGVudClcIlxuICAgICAgICAgICAgPjxjb2RlIGNsYXNzPVwiaGxqc1wiXG4gICAgICAgICAgICAgICBbaWRdPVwiY29kZUZpbGUuZmlsZW5hbWUgKyAnXycgKyBpXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5obGpzLWxpbmUtbnVtYmVyc109XCJsaW5lTnVtYmVyc1wiXG4gICAgICAgICAgICAgICBbaGlnaGxpZ2h0XT1cImNvZGVGaWxlc1tpXS5jb250ZW50XCJcbiAgICAgICAgICAgICAgIFtsaW5lTnVtYmVyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgIChoaWdobGlnaHRlZCk9XCJvbkhpZ2hsaWdodGVkKClcIj5cbiAgICAgICAgICAgIDwvY29kZT48a2JxLWFjdGlvbmJhci1ibG9ja1xuICAgICAgICAgICAgICAgIFtjbGFzcy5rYnEtYWN0aW9uYmFyLWJsb2NrX2Zsb2F0aW5nXT1cIm5vSGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgW2NvZGVGaWxlc109XCJjb2RlRmlsZXNcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRhYkluZGV4XT1cInNlbGVjdGVkVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtsZXNzQ29udHJhc3RdPVwiZmlsbGVkXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlMaW5lXT1cIm11bHRpTGluZVwiXG4gICAgICAgICAgICAgICAgW3NvZnRXcmFwXT1cInNvZnRXcmFwXCJcbiAgICAgICAgICAgICAgICAodG9nZ2xlU29mdFdyYXApPVwidG9nZ2xlU29mdFdyYXAoKVwiXG4gICAgICAgICAgICAgICAgKGRvd25sb2FkQ29kZSk9XCJkb3dubG9hZENvZGUoKVwiXG4gICAgICAgICAgICAgICAgKGNvcHlDb2RlKT1cImNvcHlDb2RlKClcIlxuICAgICAgICAgICAgICAgIChvcGVuRXh0ZXJuYWxTeXN0ZW0pPVwib3BlbkV4dGVybmFsU3lzdGVtKClcIj5cbiAgICAgICAgICAgIDwva2JxLWFjdGlvbmJhci1ibG9jaz48L3ByZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWNvZGUtYmxvY2tfX3Nob3ctbW9yZVwiXG4gICAgICAgICAgICAgKm5nSWY9XCJtYXhIZWlnaHRcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fc2hvdy1tb3JlX2V4cGFuZGVkXT1cInZpZXdBbGxcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fc2hvdy1tb3JlX2NvbGxhcHNlZF09XCIhdmlld0FsbFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiZy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ3RoZW1lJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtrYnFTdHlsZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TaG93TW9yZUNsaWNrKGNvZGVDb250ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwibWMtYW5nbGUtZG93bi1MXzE2XCIgKm5nSWY9XCIhdmlld0FsbFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbj1cIm1jLWFuZ2xlLXVwLUxfMTZcIiAqbmdJZj1cInZpZXdBbGxcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHZpZXdBbGwgPyBjb25maWcudmlld0xlc3NUZXh0IDogY29uZmlnLnZpZXdBbGxUZXh0fX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2ticS10YWI+XG48L2ticS10YWItZ3JvdXA+XG4iXX0=