@fundamental-ngx/platform 0.48.0-rc.9 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/approval-flow/approval-flow-node/approval-flow-node.component.d.ts +0 -2
  2. package/button/button.component.d.ts +7 -8
  3. package/dynamic-page/dynamic-page.component.d.ts +24 -15
  4. package/dynamic-page/dynamic-page.tokens.d.ts +3 -0
  5. package/dynamic-page/index.d.ts +2 -1
  6. package/dynamic-page/platform-dynamic-page.interface.d.ts +22 -0
  7. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
  8. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
  9. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
  10. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
  11. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +5 -7
  12. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +3 -3
  13. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
  14. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
  15. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
  16. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
  17. package/esm2022/approval-flow/approval-flow.component.mjs +5 -5
  18. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  19. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  20. package/esm2022/button/button.component.mjs +14 -15
  21. package/esm2022/button/button.module.mjs +4 -4
  22. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  23. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  24. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
  25. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  28. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  29. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  30. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  31. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  32. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  33. package/esm2022/dynamic-page/dynamic-page.component.mjs +48 -35
  34. package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
  35. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  36. package/esm2022/dynamic-page/dynamic-page.tokens.mjs +3 -0
  37. package/esm2022/dynamic-page/index.mjs +3 -2
  38. package/esm2022/dynamic-page/platform-dynamic-page.interface.mjs +2 -0
  39. package/esm2022/feed-input/feed-input.component.mjs +6 -6
  40. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  41. package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
  42. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  43. package/esm2022/form/checkbox/checkbox.component.mjs +11 -43
  44. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  45. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +21 -63
  46. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  47. package/esm2022/form/combobox/combobox/combobox.component.mjs +33 -63
  48. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +15 -22
  49. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  50. package/esm2022/form/combobox/combobox.config.mjs +3 -3
  51. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  52. package/esm2022/form/combobox/commons/base-combobox.mjs +24 -58
  53. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  54. package/esm2022/form/date-picker/date-picker.component.mjs +21 -57
  55. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  56. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -60
  57. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  58. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +5 -9
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +5 -9
  61. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +5 -9
  62. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +5 -9
  63. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +5 -9
  64. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +4 -4
  65. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +5 -9
  66. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +5 -9
  67. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +5 -9
  68. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
  69. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
  70. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  71. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +27 -13
  72. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  73. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
  74. package/esm2022/form/form-generator/form-generator.service.mjs +11 -16
  75. package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
  76. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
  77. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  78. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  79. package/esm2022/form/form-group/form-field/form-field.component.mjs +40 -47
  80. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
  81. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
  82. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
  83. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  84. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
  85. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
  86. package/esm2022/form/form-group/form-group.component.mjs +40 -50
  87. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  88. package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
  89. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  90. package/esm2022/form/input/input.component.mjs +16 -48
  91. package/esm2022/form/input-group/addon-body.component.mjs +4 -5
  92. package/esm2022/form/input-group/addon.component.mjs +3 -3
  93. package/esm2022/form/input-group/input-group.component.mjs +13 -46
  94. package/esm2022/form/input-group/input-group.config.mjs +3 -3
  95. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  96. package/esm2022/form/input-group/input.component.mjs +3 -3
  97. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
  98. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +64 -102
  99. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +25 -71
  100. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +18 -26
  101. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  102. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
  103. package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
  104. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  105. package/esm2022/form/multi-input/base-multi-input.mjs +43 -83
  106. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +13 -21
  107. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  108. package/esm2022/form/multi-input/multi-input.component.mjs +32 -91
  109. package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
  110. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  111. package/esm2022/form/radio-group/radio/radio.component.mjs +12 -44
  112. package/esm2022/form/radio-group/radio-group.component.mjs +32 -74
  113. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  114. package/esm2022/form/select/commons/base-select.mjs +59 -101
  115. package/esm2022/form/select/select/select.component.mjs +17 -60
  116. package/esm2022/form/select/select.config.mjs +3 -3
  117. package/esm2022/form/select/select.module.mjs +4 -4
  118. package/esm2022/form/step-input/base.step-input.mjs +72 -85
  119. package/esm2022/form/step-input/number/number-step-input.component.mjs +14 -53
  120. package/esm2022/form/step-input/step-input-action-button.mjs +9 -13
  121. package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
  122. package/esm2022/form/step-input/step-input-decrement.directive.mjs +9 -13
  123. package/esm2022/form/step-input/step-input-increment.directive.mjs +9 -13
  124. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  125. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  126. package/esm2022/form/switch/switch/switch.component.mjs +12 -49
  127. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  128. package/esm2022/form/switch/switch.module.mjs +4 -4
  129. package/esm2022/form/text-area/text-area.component.mjs +14 -45
  130. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  131. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  132. package/esm2022/form/time-picker/time-picker.component.mjs +11 -42
  133. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  134. package/esm2022/fundamental-ngx.module.mjs +4 -4
  135. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +6 -6
  136. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +85 -90
  137. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +21 -9
  138. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +26 -9
  139. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +40 -26
  140. package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +76 -0
  141. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +28 -16
  142. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +14 -5
  143. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
  144. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +5 -5
  145. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +12 -21
  146. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +10 -12
  147. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +10 -11
  148. package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +14 -0
  149. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +208 -27
  150. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +19 -9
  151. package/esm2022/icon-tab-bar/index.mjs +3 -1
  152. package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
  153. package/esm2022/info-label/info-label.component.mjs +6 -4
  154. package/esm2022/info-label/info-label.module.mjs +4 -4
  155. package/esm2022/link/link.component.mjs +15 -23
  156. package/esm2022/link/link.module.mjs +4 -4
  157. package/esm2022/list/action-list-item/action-list-item.component.mjs +5 -5
  158. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  159. package/esm2022/list/base-list-item.mjs +20 -22
  160. package/esm2022/list/display-list-item/display-list-item.component.mjs +5 -5
  161. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  162. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +5 -5
  163. package/esm2022/list/list-group-footer.component.mjs +5 -5
  164. package/esm2022/list/list-group-header.component.mjs +7 -7
  165. package/esm2022/list/list.component.mjs +25 -66
  166. package/esm2022/list/list.config.mjs +3 -3
  167. package/esm2022/list/list.module.mjs +4 -4
  168. package/esm2022/list/load-more-content.directive.mjs +3 -3
  169. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
  170. package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
  171. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  172. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +5 -5
  173. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  174. package/esm2022/menu/menu-item.component.mjs +5 -5
  175. package/esm2022/menu/menu-trigger.directive.mjs +3 -3
  176. package/esm2022/menu/menu.component.mjs +5 -6
  177. package/esm2022/menu/menu.module.mjs +4 -4
  178. package/esm2022/menu-button/menu-button.component.mjs +14 -9
  179. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  180. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +11 -14
  181. package/esm2022/message-popover/components/message-view/message-view.component.mjs +4 -4
  182. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
  183. package/esm2022/message-popover/message-popover.component.mjs +53 -54
  184. package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
  185. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  186. package/esm2022/object-marker/object-marker.component.mjs +10 -5
  187. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  188. package/esm2022/object-status/object-status.component.mjs +13 -8
  189. package/esm2022/object-status/object-status.module.mjs +4 -4
  190. package/esm2022/page-footer/page-footer.component.mjs +8 -10
  191. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  192. package/esm2022/panel/panel-actions.component.mjs +3 -3
  193. package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
  194. package/esm2022/panel/panel.component.mjs +8 -9
  195. package/esm2022/panel/panel.config.mjs +3 -3
  196. package/esm2022/panel/panel.module.mjs +4 -4
  197. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +12 -22
  198. package/esm2022/search-field/search-field.component.mjs +36 -42
  199. package/esm2022/search-field/search-field.module.mjs +4 -4
  200. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
  201. package/esm2022/settings-generator/default-config.mjs +2 -2
  202. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  203. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
  204. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
  205. package/esm2022/settings-generator/models/settings.model.mjs +1 -1
  206. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +34 -28
  207. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +4 -5
  208. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  209. package/esm2022/settings-generator/settings-generator.component.mjs +6 -6
  210. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  211. package/esm2022/settings-generator/settings-generator.service.mjs +12 -13
  212. package/esm2022/shared/base.mjs +30 -18
  213. package/esm2022/shared/form/base.input.mjs +70 -69
  214. package/esm2022/shared/form/collection-base.input.mjs +7 -49
  215. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +25 -66
  216. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  217. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  218. package/esm2022/shared/platform.config.mjs +3 -3
  219. package/esm2022/slider/slider.component.mjs +11 -43
  220. package/esm2022/slider/slider.module.mjs +4 -4
  221. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +11 -14
  222. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +8 -16
  223. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -6
  224. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +13 -18
  225. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +22 -47
  226. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +12 -10
  227. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
  228. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  229. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +73 -57
  230. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  231. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
  232. package/esm2022/split-menu-button/split-menu-button.component.mjs +17 -24
  233. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  234. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  235. package/esm2022/table/components/reset-button/reset-button.component.mjs +8 -9
  236. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +10 -9
  237. package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
  238. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +11 -14
  239. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +4 -4
  240. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +6 -10
  241. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +31 -15
  242. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +19 -24
  243. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +9 -11
  244. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +4 -4
  245. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +8 -11
  246. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +8 -11
  247. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +11 -14
  248. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  249. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
  250. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  251. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  252. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  253. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -8
  254. package/esm2022/table/components/table-row/table-row.component.mjs +12 -17
  255. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  256. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  257. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +38 -23
  258. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
  259. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
  260. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
  261. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
  262. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
  263. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +8 -11
  264. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +9 -12
  265. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +9 -12
  266. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
  267. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  268. package/esm2022/table/table.component.mjs +138 -62
  269. package/esm2022/table/table.module.mjs +4 -4
  270. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
  271. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
  272. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +20 -23
  273. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  274. package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
  275. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +10 -9
  276. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  277. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  278. package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
  279. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +5 -5
  280. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
  281. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
  282. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  283. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  284. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  285. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  286. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  287. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  288. package/esm2022/table-helpers/services/table-column-resize.service.mjs +22 -20
  289. package/esm2022/table-helpers/services/table-responsive.service.mjs +9 -14
  290. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  291. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  292. package/esm2022/table-helpers/services/table.service.mjs +23 -21
  293. package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
  294. package/esm2022/table-helpers/table.mjs +1 -1
  295. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
  296. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -4
  297. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +28 -8
  298. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +9 -5
  299. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
  300. package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
  301. package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
  302. package/esm2022/value-help-dialog/index.mjs +3 -1
  303. package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
  304. package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
  305. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +59 -32
  306. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  307. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
  308. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -6
  309. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  310. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
  311. package/esm2022/variant-management/variant-management.component.mjs +47 -13
  312. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  313. package/esm2022/wizard-generator/base-wizard-generator.mjs +21 -28
  314. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +19 -19
  315. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +12 -18
  316. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +7 -12
  317. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +11 -10
  318. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
  319. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
  320. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  321. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  322. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  323. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  324. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
  325. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  326. package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
  327. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +42 -44
  328. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-button.mjs +16 -17
  330. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +88 -130
  332. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  333. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -9
  334. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  335. package/fesm2022/fundamental-ngx-platform-form.mjs +853 -1636
  336. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  337. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +532 -220
  338. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-info-label.mjs +9 -7
  340. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-link.mjs +18 -26
  342. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  343. package/fesm2022/fundamental-ngx-platform-list.mjs +104 -143
  344. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +16 -11
  346. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-menu.mjs +16 -16
  348. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +71 -74
  350. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +13 -8
  352. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-object-status.mjs +16 -11
  354. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  355. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +10 -12
  356. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  357. package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -20
  358. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-search-field.mjs +49 -77
  360. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +75 -72
  362. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform-shared.mjs +162 -218
  364. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  365. package/fesm2022/fundamental-ngx-platform-slider.mjs +12 -44
  366. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  367. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +144 -162
  368. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  369. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +20 -27
  370. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  371. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +143 -148
  372. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  373. package/fesm2022/fundamental-ngx-platform-table.mjs +366 -291
  374. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  375. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +144 -53
  376. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  377. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +63 -30
  378. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  379. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +82 -98
  380. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  381. package/fesm2022/fundamental-ngx-platform.mjs +4 -4
  382. package/form/checkbox/checkbox.component.d.ts +4 -6
  383. package/form/checkbox-group/checkbox-group.component.d.ts +3 -8
  384. package/form/combobox/combobox/combobox.component.d.ts +4 -12
  385. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +5 -8
  386. package/form/combobox/commons/base-combobox.d.ts +4 -9
  387. package/form/date-picker/date-picker.component.d.ts +8 -11
  388. package/form/datetime-picker/datetime-picker.component.d.ts +9 -11
  389. package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +0 -2
  390. package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +0 -2
  391. package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +0 -2
  392. package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +0 -2
  393. package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +0 -2
  394. package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +0 -2
  395. package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +0 -2
  396. package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +0 -2
  397. package/form/form-generator/form-generator/form-generator.component.d.ts +3 -1
  398. package/form/form-generator/form-generator.service.d.ts +3 -7
  399. package/form/form-generator/interfaces/dynamic-form-item.d.ts +5 -5
  400. package/form/form-group/form-field/form-field.component.d.ts +16 -20
  401. package/form/form-group/form-group.component.d.ts +36 -35
  402. package/form/input/input.component.d.ts +3 -6
  403. package/form/input-group/addon-body.component.d.ts +0 -1
  404. package/form/input-group/input-group.component.d.ts +4 -5
  405. package/form/multi-combobox/commons/base-multi-combobox.d.ts +13 -16
  406. package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -12
  407. package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +6 -9
  408. package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
  409. package/form/multi-input/base-multi-input.d.ts +10 -15
  410. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +5 -8
  411. package/form/multi-input/multi-input.component.d.ts +7 -37
  412. package/form/radio-group/radio/radio.component.d.ts +4 -5
  413. package/form/radio-group/radio-group.component.d.ts +7 -11
  414. package/form/select/commons/base-select.d.ts +11 -18
  415. package/form/select/select/select.component.d.ts +2 -15
  416. package/form/step-input/base.step-input.d.ts +13 -14
  417. package/form/step-input/number/number-step-input.component.d.ts +2 -7
  418. package/form/step-input/step-input-action-button.d.ts +4 -7
  419. package/form/step-input/step-input-decrement.directive.d.ts +2 -5
  420. package/form/step-input/step-input-increment.directive.d.ts +2 -5
  421. package/form/switch/switch/switch.component.d.ts +5 -8
  422. package/form/text-area/text-area.component.d.ts +4 -5
  423. package/form/time-picker/time-picker.component.d.ts +4 -5
  424. package/fundamental-ngx-platform-v0.48.0.tgz +0 -0
  425. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +19 -20
  426. package/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.d.ts +2 -0
  427. package/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.d.ts +45 -0
  428. package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +1 -3
  429. package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
  430. package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
  431. package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
  432. package/icon-tab-bar/directives/icon-tab-bar-free-content.directive.d.ts +5 -0
  433. package/icon-tab-bar/icon-tab-bar.component.d.ts +82 -8
  434. package/icon-tab-bar/icon-tab-bar.module.d.ts +7 -1
  435. package/icon-tab-bar/index.d.ts +2 -0
  436. package/icon-tab-bar/interfaces/tab-config.interface.d.ts +13 -5
  437. package/info-label/info-label.component.d.ts +2 -2
  438. package/link/link.component.d.ts +4 -7
  439. package/list/base-list-item.d.ts +4 -6
  440. package/list/list.component.d.ts +6 -15
  441. package/menu-button/menu-button.component.d.ts +7 -4
  442. package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
  443. package/message-popover/message-popover.component.d.ts +13 -20
  444. package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
  445. package/object-marker/object-marker.component.d.ts +4 -1
  446. package/object-status/object-status.component.d.ts +4 -1
  447. package/package.json +4 -4
  448. package/page-footer/page-footer.component.d.ts +2 -4
  449. package/panel/panel.component.d.ts +2 -3
  450. package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +7 -10
  451. package/search-field/search-field.component.d.ts +10 -19
  452. package/settings-generator/models/settings.model.d.ts +7 -6
  453. package/settings-generator/settings-generator-content/settings-generator-content.component.d.ts +31 -12
  454. package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +0 -2
  455. package/settings-generator/settings-generator.component.d.ts +3 -3
  456. package/settings-generator/settings-generator.service.d.ts +1 -1
  457. package/shared/base.d.ts +11 -4
  458. package/shared/form/base.input.d.ts +24 -16
  459. package/shared/form/collection-base.input.d.ts +1 -9
  460. package/shared/form/inline-layout-collection-base.input.d.ts +5 -12
  461. package/slider/slider.component.d.ts +3 -6
  462. package/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.d.ts +3 -5
  463. package/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.d.ts +0 -5
  464. package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
  465. package/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.d.ts +8 -17
  466. package/smart-filter-bar/directives/smart-filter-bar-subject.directive.d.ts +2 -0
  467. package/smart-filter-bar/smart-filter-bar.component.d.ts +28 -22
  468. package/split-menu-button/split-menu-button.component.d.ts +11 -14
  469. package/table/components/reset-button/reset-button.component.d.ts +2 -3
  470. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -3
  471. package/table/components/table-column-resizer/table-column-resizer.component.d.ts +4 -5
  472. package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
  473. package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
  474. package/table/components/table-header-row/table-header-row.component.d.ts +1 -3
  475. package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
  476. package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
  477. package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
  478. package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
  479. package/table/components/table-row/table-row.component.d.ts +2 -2
  480. package/table/components/table-toolbar/table-toolbar.component.d.ts +24 -8
  481. package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
  482. package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
  483. package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
  484. package/table/table.component.d.ts +29 -19
  485. package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
  486. package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -3
  487. package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
  488. package/table-helpers/services/table-column-resize.service.d.ts +4 -2
  489. package/table-helpers/services/table-responsive.service.d.ts +3 -5
  490. package/table-helpers/services/table.service.d.ts +12 -10
  491. package/table-helpers/table.d.ts +1 -0
  492. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
  493. package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
  494. package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
  495. package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
  496. package/value-help-dialog/index.d.ts +2 -0
  497. package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
  498. package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
  499. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +14 -7
  500. package/variant-management/variant-management.component.d.ts +19 -6
  501. package/wizard-generator/base-wizard-generator.d.ts +9 -12
  502. package/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.d.ts +2 -3
  503. package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
  504. package/wizard-generator/components/wizard-generator/wizard-generator.component.d.ts +1 -4
  505. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
  506. package/dynamic-page/dynamic-page.service.d.ts +0 -35
  507. package/esm2022/dynamic-page/dynamic-page.service.mjs +0 -58
  508. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
  509. package/fundamental-ngx-platform-v0.48.0-rc.9.tgz +0 -0
  510. package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
@@ -1,4 +1,5 @@
1
- import { ChangeDetectorRef, Component, EventEmitter, Input, NgZone, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';
2
+ import { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';
2
3
  import { NgClass } from '@angular/common';
3
4
  import { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';
4
5
  import { ButtonComponent } from '@fundamental-ngx/core/button';
@@ -8,12 +9,12 @@ import { IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-
8
9
  import { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';
9
10
  import { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';
10
11
  import { ClosableIconTabBar } from '../closable-icon-tab-bar.class';
12
+ import { IconTabBarBase } from '../icon-tab-bar-base.class';
11
13
  import { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';
12
14
  import * as i0 from "@angular/core";
13
15
  export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
14
- /** @hidden */
15
- constructor(_cd, _ngZone) {
16
- super(_cd, _ngZone);
16
+ constructor() {
17
+ super(...arguments);
17
18
  /**
18
19
  * @description Disable or enable reordering(drag and drop) feature.
19
20
  */
@@ -32,7 +33,7 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
32
33
  // Then to find root tab, and pass it to the parent method.
33
34
  if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {
34
35
  const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];
35
- selectedItem = this._tabs.find((tab) => tab.uId === rootTabUid);
36
+ selectedItem = this.tabs.find((tab) => tab.uId === rootTabUid);
36
37
  }
37
38
  if (!selectedItem) {
38
39
  return;
@@ -71,7 +72,7 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
71
72
  }
72
73
  };
73
74
  event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);
74
- this.reordered.emit(this._tabs);
75
+ this.reordered.emit(this.tabs);
75
76
  }
76
77
  /** @hidden */
77
78
  _canDrop(event) {
@@ -99,7 +100,7 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
99
100
  }
100
101
  // Add tab to subitem of the target tab
101
102
  replacedItemInfo.item.subItems.push(draggableItemInfo.item);
102
- this._tabs = this._updateTabs(this._tabs);
103
+ this.tabs = this._updateTabs(this.tabs);
103
104
  this._triggerRecalculationVisibleItems();
104
105
  }
105
106
  /**
@@ -112,7 +113,7 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
112
113
  draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);
113
114
  const newIndex = replacedItemInfo?.item?.index || 0;
114
115
  replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);
115
- this._tabs = this._updateTabs(this._tabs);
116
+ this.tabs = this._updateTabs(this.tabs);
116
117
  this._triggerRecalculationVisibleItems();
117
118
  }
118
119
  /** @hidden */
@@ -122,12 +123,22 @@ export class IconTabBarTextTypeComponent extends ClosableIconTabBar {
122
123
  }
123
124
  return tabUIElement._dropdownTrigger.nativeElement;
124
125
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarTextTypeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: IconTabBarTextTypeComponent, isStandalone: true, selector: "fdp-icon-tab-bar-text-type", inputs: { enableTabReordering: "enableTabReordering", layoutMode: "layoutMode" }, outputs: { reordered: "reordered" }, viewQueries: [{ propertyName: "_tabBarPopover", first: true, predicate: ["extraItemsPopover"], descendants: true }, { propertyName: "_tabUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of _tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label }}\n @if (item.counter) {\n ({{ item.counter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"_selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraTabs.length) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconBarDndContainerDirective, selector: "[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]", inputs: ["draggable"], outputs: ["dropped"] }, { kind: "directive", type: OverflowListDirective, selector: "[fdkOverflowList]", inputs: ["overflowOffset", "isRtl", "itemCssBlockValue"], outputs: ["overflowChanged"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: OverflowListItemDirective, selector: "[fdkOverflowListItem]" }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextTypePopoverComponent, selector: "fdp-text-type-popover", inputs: ["isExtraItemsMode", "parentTab", "selectedSubItemUid", "tabindex"], outputs: ["selectedSubItem"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }] }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarTextTypeComponent, isStandalone: true, selector: "fdp-icon-tab-bar-text-type", inputs: { enableTabReordering: "enableTabReordering", layoutMode: "layoutMode" }, outputs: { reordered: "reordered" }, providers: [
128
+ {
129
+ provide: IconTabBarBase,
130
+ useExisting: IconTabBarTextTypeComponent
131
+ }
132
+ ], viewQueries: [{ propertyName: "_tabBarPopover", first: true, predicate: ["extraItemsPopover"], descendants: true }, { propertyName: "_tabUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label | fdkAsyncOrSync }}\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconBarDndContainerDirective, selector: "[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]", inputs: ["draggable"], outputs: ["dropped"] }, { kind: "directive", type: OverflowListDirective, selector: "[fdkOverflowList]", inputs: ["overflowOffset", "isRtl", "itemCssBlockValue"], outputs: ["overflowChanged"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: OverflowListItemDirective, selector: "[fdkOverflowListItem]" }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TextTypePopoverComponent, selector: "fdp-text-type-popover", inputs: ["isExtraItemsMode", "parentTab", "selectedSubItemUid", "tabindex"], outputs: ["selectedSubItem"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "pipe", type: AsyncOrSyncPipe, name: "fdkAsyncOrSync" }] }); }
127
133
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarTextTypeComponent, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarTextTypeComponent, decorators: [{
129
135
  type: Component,
130
- args: [{ selector: 'fdp-icon-tab-bar-text-type', standalone: true, imports: [
136
+ args: [{ selector: 'fdp-icon-tab-bar-text-type', standalone: true, providers: [
137
+ {
138
+ provide: IconTabBarBase,
139
+ useExisting: IconTabBarTextTypeComponent
140
+ }
141
+ ], imports: [
131
142
  IconBarDndContainerDirective,
132
143
  OverflowListDirective,
133
144
  IconBarDndListDirective,
@@ -136,9 +147,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
136
147
  NgClass,
137
148
  TextTypePopoverComponent,
138
149
  ButtonComponent,
139
- IconComponent
140
- ], template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of _tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === _selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label }}\n @if (item.counter) {\n ({{ item.counter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"_selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraTabs.length) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n" }]
141
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { _tabUIElements: [{
150
+ IconComponent,
151
+ AsyncOrSyncPipe
152
+ ], template: "<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length) {\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n >\n @if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item.label | fdkAsyncOrSync }}\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n } @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n } @else {\n <fdp-text-type-popover\n #tabItem\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n" }]
153
+ }], propDecorators: { _tabUIElements: [{
142
154
  type: ViewChildren,
143
155
  args: ['tabItem']
144
156
  }], _tabBarPopover: [{
@@ -151,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
151
163
  }], reordered: [{
152
164
  type: Output
153
165
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFjLDRCQUE0QixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDakgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFF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Qiw2S0FDeEIsZUFBZSx3SEFDZixhQUFhOzsyRkFHUiwyQkFBMkI7a0JBaEJ2QyxTQUFTOytCQUNJLDRCQUE0QixjQUUxQixJQUFJLFdBQ1A7d0JBQ0wsNEJBQTRCO3dCQUM1QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6Qix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1Asd0JBQXdCO3dCQUN4QixlQUFlO3dCQUNmLGFBQWE7cUJBQ2hCOzJHQUl3QixjQUFjO3NCQUF0QyxZQUFZO3VCQUFDLFNBQVM7Z0JBR1MsY0FBYztzQkFBN0MsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBTTlCLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7Z0JBT04sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE92ZXJmbG93TGlzdERpcmVjdGl2ZSwgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IFVOSVFVRV9LRVlfU0VQQVJBVE9SIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZkRG5ERXZlbnQsIEljb25CYXJEbmRDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RuZC9pY29uLWJhci1kbmQtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsb3NhYmxlSWNvblRhYkJhciB9IGZyb20gJy4uL2Nsb3NhYmxlLWljb24tdGFiLWJhci5jbGFzcyc7XG5pbXBvcnQgeyBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQnO1xuXG4vKiogQGhpZGRlbiAqL1xuaW50ZXJmYWNlIERhdGFGb3JSZW9yZGVyaW5nIHtcbiAgICBhcnI6IEljb25UYWJCYXJJdGVtW107XG4gICAgaXRlbTogSWNvblRhYkJhckl0ZW07XG4gICAgcGFyZW50VWlkOiBzdHJpbmc7XG59XG5cbi8qKiBAaGlkZGVuICovXG50eXBlIFRhYkl0ZW0gPSBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaWNvbi10YWItYmFyLXRleHQtdHlwZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ljb24tdGFiLWJhci10ZXh0LXR5cGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBJY29uQmFyRG5kQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xpc3REaXJlY3RpdmUsXG4gICAgICAgIEljb25CYXJEbmRMaXN0RGlyZWN0aXZlLFxuICAgICAgICBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlLFxuICAgICAgICBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEljb25UYWJCYXJUZXh0VHlwZUNvbXBvbmVudCBleHRlbmRzIENsb3NhYmxlSWNvblRhYkJhciB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PFRhYkl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdleHRyYUl0ZW1zUG9wb3ZlcicpIF90YWJCYXJQb3BvdmVyOiBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlzYWJsZSBvciBlbmFibGUgcmVvcmRlcmluZyhkcmFnIGFuZCBkcm9wKSBmZWF0dXJlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlVGFiUmVvcmRlcmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExheW91dCB0eXBlIGZvciB0YWIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXRNb2RlOiAncm93JyB8ICdjb2x1bW4nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gdXNlciBkcm9wcyB0aGUgdGFiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW1bXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoX2NkOiBDaGFuZ2VEZXRlY3RvclJlZiwgX25nWm9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKF9jZCwgX25nWm9uZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgc3ViSXRlbVxuICAgICAgICAvLyBUaGVuIHRvIGZpbmQgcm9vdCB0YWIsIGFuZCBwYXNzIGl0IHRvIHRoZSBwYXJlbnQgbWV0aG9kLlxuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtPy51SWQuaW5jbHVkZXMoVU5JUVVFX0tFWV9TRVBBUkFUT1IpKSB7XG4gICAgICAgICAgICBjb25zdCByb290VGFiVWlkID0gc2VsZWN0ZWRJdGVtLnVJZC5zcGxpdChVTklRVUVfS0VZX1NFUEFSQVRPUilbMF07XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLl90YWJzLmZpbmQoKHRhYikgPT4gdGFiLnVJZCA9PT0gcm9vdFRhYlVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5fc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBkcmFnZ2FibGVJdGVtXG4gICAgICogQHBhcmFtIHRhcmdldEl0ZW1cbiAgICAgKiBAcGFyYW0gYWN0aW9uXG4gICAgICovXG4gICAgX29uRHJvcHBlZChldmVudDogRmREbkRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhbkRyb3AoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBsYWNlZFBhcnNlZFVpZEFyciA9IGV2ZW50LnRhcmdldEl0ZW0udUlkLnNwbGl0KFVOSVFVRV9LRVlfU0VQQVJBVE9SKTtcbiAgICAgICAgcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoID0gcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlUGFyc2VkVWlkQXJyID0gZXZlbnQuZHJhZ2dhYmxlSXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpO1xuICAgICAgICBkcmFnZ2FibGVQYXJzZWRVaWRBcnIubGVuZ3RoID0gZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdGFiSW5mb0Zvck5ld0xpc3QgPSB0aGlzLl9nZXRUYWJJbmZvRnJvbU1haW5MaXN0KGV2ZW50LnRhcmdldEl0ZW0udUlkKTtcbiAgICAgICAgY29uc3QgdGFiSW5mb0ZvclByZXZMaXN0ID0gdGhpcy5fZ2V0VGFiSW5mb0Zyb21NYWluTGlzdChldmVudC5kcmFnZ2FibGVJdGVtLnVJZCk7XG5cbiAgICAgICAgaWYgKCF0YWJJbmZvRm9yTmV3TGlzdCB8fCAhdGFiSW5mb0ZvclByZXZMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhRm9yQWN0aW9uID0ge1xuICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0Zvck5ld0xpc3QucGFyZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IHRhYkluZm9Gb3JOZXdMaXN0LnRhYixcbiAgICAgICAgICAgICAgICBwYXJlbnRVaWQ6IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmxlbmd0aCA/IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmpvaW4oVU5JUVVFX0tFWV9TRVBBUkFUT1IpIDogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkcmFnZ2FibGVJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0ZvclByZXZMaXN0LnBhcmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiB0YWJJbmZvRm9yUHJldkxpc3QudGFiLFxuICAgICAgICAgICAgICAgIHBhcmVudFVpZDogZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCA/IGRyYWdnYWJsZVBhcnNlZFVpZEFyci5qb2luKFVOSVFVRV9LRVlfU0VQQVJBVE9SKSA6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnQuYWN0aW9uID09PSAncmVwbGFjZScgPyB0aGlzLl9yZXBsYWNlQXNTaWJsaW5nKGRhdGFGb3JBY3Rpb24pIDogdGhpcy5faW5zZXJ0SXRlbUFzQ2hpbGQoZGF0YUZvckFjdGlvbik7XG5cbiAgICAgICAgdGhpcy5yZW9yZGVyZWQuZW1pdCh0aGlzLl90YWJzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbkRyb3AoZXZlbnQ6IEZkRG5ERXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHBhcmVudFVJZDogTnVsbGFibGU8c3RyaW5nPiA9XG4gICAgICAgICAgICBldmVudC5hY3Rpb24gPT09ICdyZXBsYWNlJyA/IGV2ZW50LnRhcmdldEl0ZW0ucGFyZW50VUlkIDogZXZlbnQudGFyZ2V0SXRlbS51SWQ7XG4gICAgICAgIHdoaWxlIChwYXJlbnRVSWQpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRVSWQgPT09IGV2ZW50LmRyYWdnYWJsZUl0ZW0udUlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV4dFNlcGFyYXRvcklkeCA9IHBhcmVudFVJZC5sYXN0SW5kZXhPZihVTklRVUVfS0VZX1NFUEFSQVRPUik7XG5cbiAgICAgICAgICAgIHBhcmVudFVJZCA9IG5leHRTZXBhcmF0b3JJZHggPiAwID8gcGFyZW50VUlkLnNsaWNlKDAsIG5leHRTZXBhcmF0b3JJZHgpIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5zZXJ0IHRhYiBpbnRvIGFub3RoZXIgdGFiLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2luc2VydEl0ZW1Bc0NoaWxkKGRhdGE6IHtcbiAgICAgICAgcmVwbGFjZWRJdGVtSW5mbzogRGF0YUZvclJlb3JkZXJpbmc7XG4gICAgICAgIGRyYWdnYWJsZUl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgcmVwbGFjZWRJdGVtSW5mbywgZHJhZ2dhYmxlSXRlbUluZm8gfSA9IGRhdGE7XG4gICAgICAgIC8vIFJlbW92ZSBkcmFnZ2FibGUgdGFiIGZyb20gcHJldmlvdXMgbGlzdFxuICAgICAgICBkcmFnZ2FibGVJdGVtSW5mby5hcnIuc3BsaWNlKGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0uaW5kZXgsIDEpO1xuICAgICAgICBpZiAoIXJlcGxhY2VkSXRlbUluZm8uaXRlbS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLml0ZW0uc3ViSXRlbXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgdGFiIHRvIHN1Yml0ZW0gb2YgdGhlIHRhcmdldCB0YWJcbiAgICAgICAgcmVwbGFjZWRJdGVtSW5mby5pdGVtLnN1Ykl0ZW1zLnB1c2goZHJhZ2dhYmxlSXRlbUluZm8uaXRlbSk7XG4gICAgICAgIHRoaXMuX3RhYnMgPSB0aGlzLl91cGRhdGVUYWJzKHRoaXMuX3RhYnMpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnNlcnQgdGFiIGJldHdlZW4gdGFic1xuICAgICAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VBc1NpYmxpbmcoZGF0YToge1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyByZXBsYWNlZEl0ZW1JbmZvLCBkcmFnZ2FibGVJdGVtSW5mbyB9ID0gZGF0YTtcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm8uYXJyLnNwbGljZShkcmFnZ2FibGVJdGVtSW5mby5pdGVtLmluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSByZXBsYWNlZEl0ZW1JbmZvPy5pdGVtPy5pbmRleCB8fCAwO1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLmFyci5zcGxpY2UobmV3SW5kZXgsIDAsIGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0pO1xuICAgICAgICB0aGlzLl90YWJzID0gdGhpcy5fdXBkYXRlVGFicyh0aGlzLl90YWJzKTtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogVGFiSXRlbSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YWJVSUVsZW1lbnQgPT09ICdvYmplY3QnICYmICduYXRpdmVFbGVtZW50JyBpbiB0YWJVSUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJVSUVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFiVUlFbGVtZW50Ll9kcm9wZG93blRyaWdnZXIubmF0aXZlRWxlbWVudDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyIGZkcEljb25CYXJEbmRDb250YWluZXIgW2RyYWdnYWJsZV09XCJlbmFibGVUYWJSZW9yZGVyaW5nXCIgKGRyb3BwZWQpPVwiX29uRHJvcHBlZCgkZXZlbnQpXCI+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19oZWFkZXJcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgIGZka092ZXJmbG93TGlzdFxuICAgICAgICBbaXNSdGxdPVwiaXNSdGxcIlxuICAgICAgICBbb3ZlcmZsb3dPZmZzZXRdPVwiMTAwXCJcbiAgICAgICAgZmRwSWNvbkJhckRuZExpc3RcbiAgICAgICAgZG5kT3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKG92ZXJmbG93Q2hhbmdlZCk9XCJfcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICBAZm9yIChpdGVtIG9mIF90YWJzOyB0cmFjayBpdGVtLnVJZDsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jc3NDbGFzc2VzXCJcbiAgICAgICAgICAgICAgICBmZGtPdmVyZmxvd0xpc3RJdGVtXG4gICAgICAgICAgICAgICAgZmRwSWNvbkJhckRuZEl0ZW1cbiAgICAgICAgICAgICAgICBbZG5kU2VwYXJhdG9yQ2xhc3NdPVwiWydmZC1pY29uLXRhYi1iYXJfX2l0ZW0tLWRuZC1zZXBhcmF0b3InXVwiXG4gICAgICAgICAgICAgICAgW2RuZEl0ZW1EYXRhXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19pdGVtXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmQtaWNvbi10YWItYmFyX19pdGVtLS1jbG9zYWJsZV09XCJpdGVtLmNsb3NhYmxlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmICghaXRlbS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0YWJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlkeCA9PT0gMCA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdEl0ZW0oaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS51SWQgPT09IF9zZWxlY3RlZFVpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGF5b3V0TW9kZSA9PT0gJ3JvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmNvdW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBpdGVtLmNvdW50ZXIgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fY291bnRlclwiPnt7IGl0ZW0uY291bnRlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb2xvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JlZW5yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoY29sb3JBc3NvY2lhdGlvbnMgJiYgY29sb3JBc3NvY2lhdGlvbnNbaXRlbS5jb2xvcl0pIHx8IGl0ZW0uY29sb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRleHQtdHlwZS1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImlkeCA9PT0gMCA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50VGFiXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkU3ViSXRlbVVpZF09XCJfc2VsZWN0ZWRVaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFN1Ykl0ZW0pPVwiX3NlbGVjdEl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZVRhYik9XCJfY2xvc2VUYWIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9mZHAtdGV4dC10eXBlLXBvcG92ZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY2xvc2VUYWIoaXRlbS51SWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImRlY2xpbmVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9leHRyYVRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICA8bGkgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19pdGVtIGZkLWljb24tdGFiLWJhcl9faXRlbS0tb3ZlcmZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLXRleHQtdHlwZS1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICNleHRyYUl0ZW1zUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiaXNSdGxcIlxuICAgICAgICAgICAgICAgICAgICBbZXh0cmFUYWJzXT1cIl9leHRyYVRhYnNcIlxuICAgICAgICAgICAgICAgICAgICBbaXNFeHRyYUl0ZW1zTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkRXh0cmFJdGVtKT1cIl9zZWxlY3RFeHRyYUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c0ZpcnN0VmlzaWJsZUl0ZW0pPVwiX2ZvY3VzSXRlbSgwKVwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c0xhc3RWaXNpYmxlSXRlbSk9XCJfZm9jdXNJdGVtKF9sYXN0VmlzaWJsZVRhYkluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZVRhYik9XCJfY2xvc2VUYWIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZmRwLXRleHQtdHlwZS1wb3BvdmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgIDwvdWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci10ZXh0LXR5cGUvaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsNEJBQTRCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0Ms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QUF1QixzSUFDdkIseUJBQXlCLGtFQUN6Qix1QkFBdUIsMEtBQ3ZCLE9BQU8sb0ZBQ1Asd0JBQXdCLDZLQUN4QixlQUFlLHdIQUNmLGFBQWEscUlBQ2IsZUFBZTs7MkZBR1YsMkJBQTJCO2tCQXZCdkMsU0FBUzsrQkFDSSw0QkFBNEIsY0FFMUIsSUFBSSxhQUNMO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0osV0FDUTt3QkFDTCw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsT0FBTzt3QkFDUCx3QkFBd0I7d0JBQ3hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3FCQUNsQjs4QkFJd0IsY0FBYztzQkFBdEMsWUFBWTt1QkFBQyxTQUFTO2dCQUdTLGNBQWM7c0JBQTdDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQU05QixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY09yU3luY1BpcGUsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE92ZXJmbG93TGlzdERpcmVjdGl2ZSwgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IFVOSVFVRV9LRVlfU0VQQVJBVE9SIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZkRG5ERXZlbnQsIEljb25CYXJEbmRDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RuZC9pY29uLWJhci1kbmQtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsb3NhYmxlSWNvblRhYkJhciB9IGZyb20gJy4uL2Nsb3NhYmxlLWljb24tdGFiLWJhci5jbGFzcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzJztcbmltcG9ydCB7IFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbi8qKiBAaGlkZGVuICovXG5pbnRlcmZhY2UgRGF0YUZvclJlb3JkZXJpbmcge1xuICAgIGFycjogSWNvblRhYkJhckl0ZW1bXTtcbiAgICBpdGVtOiBJY29uVGFiQmFySXRlbTtcbiAgICBwYXJlbnRVaWQ6IHN0cmluZztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbnR5cGUgVGFiSXRlbSA9IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1pY29uLXRhYi1iYXItdGV4dC10eXBlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi10YWItYmFyLXRleHQtdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSWNvblRhYkJhckJhc2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWNvblRhYkJhclRleHRUeXBlQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgSWNvbkJhckRuZENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMaXN0SXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIFRleHRUeXBlUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBc3luY09yU3luY1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEljb25UYWJCYXJUZXh0VHlwZUNvbXBvbmVudCBleHRlbmRzIENsb3NhYmxlSWNvblRhYkJhciB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PFRhYkl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdleHRyYUl0ZW1zUG9wb3ZlcicpIF90YWJCYXJQb3BvdmVyOiBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlzYWJsZSBvciBlbmFibGUgcmVvcmRlcmluZyhkcmFnIGFuZCBkcm9wKSBmZWF0dXJlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlVGFiUmVvcmRlcmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExheW91dCB0eXBlIGZvciB0YWIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXRNb2RlOiAncm93JyB8ICdjb2x1bW4nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gdXNlciBkcm9wcyB0aGUgdGFiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW1bXT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICovXG4gICAgX3NlbGVjdEV4dHJhSXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIHN1Ykl0ZW1cbiAgICAgICAgLy8gVGhlbiB0byBmaW5kIHJvb3QgdGFiLCBhbmQgcGFzcyBpdCB0byB0aGUgcGFyZW50IG1ldGhvZC5cbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbT8udUlkLmluY2x1ZGVzKFVOSVFVRV9LRVlfU0VQQVJBVE9SKSkge1xuICAgICAgICAgICAgY29uc3Qgcm9vdFRhYlVpZCA9IHNlbGVjdGVkSXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpWzBdO1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID0gdGhpcy50YWJzLmZpbmQoKHRhYikgPT4gdGFiLnVJZCA9PT0gcm9vdFRhYlVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5fc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBkcmFnZ2FibGVJdGVtXG4gICAgICogQHBhcmFtIHRhcmdldEl0ZW1cbiAgICAgKiBAcGFyYW0gYWN0aW9uXG4gICAgICovXG4gICAgX29uRHJvcHBlZChldmVudDogRmREbkRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NhbkRyb3AoZXZlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBsYWNlZFBhcnNlZFVpZEFyciA9IGV2ZW50LnRhcmdldEl0ZW0udUlkLnNwbGl0KFVOSVFVRV9LRVlfU0VQQVJBVE9SKTtcbiAgICAgICAgcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoID0gcmVwbGFjZWRQYXJzZWRVaWRBcnIubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlUGFyc2VkVWlkQXJyID0gZXZlbnQuZHJhZ2dhYmxlSXRlbS51SWQuc3BsaXQoVU5JUVVFX0tFWV9TRVBBUkFUT1IpO1xuICAgICAgICBkcmFnZ2FibGVQYXJzZWRVaWRBcnIubGVuZ3RoID0gZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdGFiSW5mb0Zvck5ld0xpc3QgPSB0aGlzLl9nZXRUYWJJbmZvRnJvbU1haW5MaXN0KGV2ZW50LnRhcmdldEl0ZW0udUlkKTtcbiAgICAgICAgY29uc3QgdGFiSW5mb0ZvclByZXZMaXN0ID0gdGhpcy5fZ2V0VGFiSW5mb0Zyb21NYWluTGlzdChldmVudC5kcmFnZ2FibGVJdGVtLnVJZCk7XG5cbiAgICAgICAgaWYgKCF0YWJJbmZvRm9yTmV3TGlzdCB8fCAhdGFiSW5mb0ZvclByZXZMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhRm9yQWN0aW9uID0ge1xuICAgICAgICAgICAgcmVwbGFjZWRJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0Zvck5ld0xpc3QucGFyZW50LFxuICAgICAgICAgICAgICAgIGl0ZW06IHRhYkluZm9Gb3JOZXdMaXN0LnRhYixcbiAgICAgICAgICAgICAgICBwYXJlbnRVaWQ6IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmxlbmd0aCA/IHJlcGxhY2VkUGFyc2VkVWlkQXJyLmpvaW4oVU5JUVVFX0tFWV9TRVBBUkFUT1IpIDogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkcmFnZ2FibGVJdGVtSW5mbzoge1xuICAgICAgICAgICAgICAgIGFycjogdGFiSW5mb0ZvclByZXZMaXN0LnBhcmVudCxcbiAgICAgICAgICAgICAgICBpdGVtOiB0YWJJbmZvRm9yUHJldkxpc3QudGFiLFxuICAgICAgICAgICAgICAgIHBhcmVudFVpZDogZHJhZ2dhYmxlUGFyc2VkVWlkQXJyLmxlbmd0aCA/IGRyYWdnYWJsZVBhcnNlZFVpZEFyci5qb2luKFVOSVFVRV9LRVlfU0VQQVJBVE9SKSA6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnQuYWN0aW9uID09PSAncmVwbGFjZScgPyB0aGlzLl9yZXBsYWNlQXNTaWJsaW5nKGRhdGFGb3JBY3Rpb24pIDogdGhpcy5faW5zZXJ0SXRlbUFzQ2hpbGQoZGF0YUZvckFjdGlvbik7XG5cbiAgICAgICAgdGhpcy5yZW9yZGVyZWQuZW1pdCh0aGlzLnRhYnMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FuRHJvcChldmVudDogRmREbkRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcGFyZW50VUlkOiBOdWxsYWJsZTxzdHJpbmc+ID1cbiAgICAgICAgICAgIGV2ZW50LmFjdGlvbiA9PT0gJ3JlcGxhY2UnID8gZXZlbnQudGFyZ2V0SXRlbS5wYXJlbnRVSWQgOiBldmVudC50YXJnZXRJdGVtLnVJZDtcbiAgICAgICAgd2hpbGUgKHBhcmVudFVJZCkge1xuICAgICAgICAgICAgaWYgKHBhcmVudFVJZCA9PT0gZXZlbnQuZHJhZ2dhYmxlSXRlbS51SWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXh0U2VwYXJhdG9ySWR4ID0gcGFyZW50VUlkLmxhc3RJbmRleE9mKFVOSVFVRV9LRVlfU0VQQVJBVE9SKTtcblxuICAgICAgICAgICAgcGFyZW50VUlkID0gbmV4dFNlcGFyYXRvcklkeCA+IDAgPyBwYXJlbnRVSWQuc2xpY2UoMCwgbmV4dFNlcGFyYXRvcklkeCkgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnNlcnQgdGFiIGludG8gYW5vdGhlciB0YWIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5zZXJ0SXRlbUFzQ2hpbGQoZGF0YToge1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyByZXBsYWNlZEl0ZW1JbmZvLCBkcmFnZ2FibGVJdGVtSW5mbyB9ID0gZGF0YTtcbiAgICAgICAgLy8gUmVtb3ZlIGRyYWdnYWJsZSB0YWIgZnJvbSBwcmV2aW91cyBsaXN0XG4gICAgICAgIGRyYWdnYWJsZUl0ZW1JbmZvLmFyci5zcGxpY2UoZHJhZ2dhYmxlSXRlbUluZm8uaXRlbS5pbmRleCwgMSk7XG4gICAgICAgIGlmICghcmVwbGFjZWRJdGVtSW5mby5pdGVtLnN1Ykl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkSXRlbUluZm8uaXRlbS5zdWJJdGVtcyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCB0YWIgdG8gc3ViaXRlbSBvZiB0aGUgdGFyZ2V0IHRhYlxuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLml0ZW0uc3ViSXRlbXMucHVzaChkcmFnZ2FibGVJdGVtSW5mby5pdGVtKTtcbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdXBkYXRlVGFicyh0aGlzLnRhYnMpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnNlcnQgdGFiIGJldHdlZW4gdGFic1xuICAgICAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VBc1NpYmxpbmcoZGF0YToge1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvOiBEYXRhRm9yUmVvcmRlcmluZztcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm86IERhdGFGb3JSZW9yZGVyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyByZXBsYWNlZEl0ZW1JbmZvLCBkcmFnZ2FibGVJdGVtSW5mbyB9ID0gZGF0YTtcbiAgICAgICAgZHJhZ2dhYmxlSXRlbUluZm8uYXJyLnNwbGljZShkcmFnZ2FibGVJdGVtSW5mby5pdGVtLmluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSByZXBsYWNlZEl0ZW1JbmZvPy5pdGVtPy5pbmRleCB8fCAwO1xuICAgICAgICByZXBsYWNlZEl0ZW1JbmZvLmFyci5zcGxpY2UobmV3SW5kZXgsIDAsIGRyYWdnYWJsZUl0ZW1JbmZvLml0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLl91cGRhdGVUYWJzKHRoaXMudGFicyk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZSh0YWJVSUVsZW1lbnQ6IFRhYkl0ZW0pOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGlmICh0eXBlb2YgdGFiVUlFbGVtZW50ID09PSAnb2JqZWN0JyAmJiAnbmF0aXZlRWxlbWVudCcgaW4gdGFiVUlFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFiVUlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYlVJRWxlbWVudC5fZHJvcGRvd25UcmlnZ2VyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBmZHBJY29uQmFyRG5kQ29udGFpbmVyIFtkcmFnZ2FibGVdPVwiZW5hYmxlVGFiUmVvcmRlcmluZ1wiIChkcm9wcGVkKT1cIl9vbkRyb3BwZWQoJGV2ZW50KVwiPlxuICAgIDx1bFxuICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faGVhZGVyXCJcbiAgICAgICAgW2NsYXNzLmZkLWR5bmFtaWMtcGFnZV9fdGFic109XCJfaW5EeW5hbWljUGFnZVwiXG4gICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgI3RhYmxpc3RcbiAgICAgICAgZmRrT3ZlcmZsb3dMaXN0XG4gICAgICAgIFtpc1J0bF09XCJpc1J0bFwiXG4gICAgICAgIFtvdmVyZmxvd09mZnNldF09XCIxMDBcIlxuICAgICAgICBmZHBJY29uQmFyRG5kTGlzdFxuICAgICAgICBkbmRPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAob3ZlcmZsb3dDaGFuZ2VkKT1cIl9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcygkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdGFiczsgdHJhY2sgaXRlbS51SWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY3NzQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgZmRrT3ZlcmZsb3dMaXN0SXRlbVxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRJdGVtXG4gICAgICAgICAgICAgICAgW2RuZFNlcGFyYXRvckNsYXNzXT1cIlsnZmQtaWNvbi10YWItYmFyX19pdGVtLS1kbmQtc2VwYXJhdG9yJ11cIlxuICAgICAgICAgICAgICAgIFtkbmRJdGVtRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLWljb24tdGFiLWJhcl9faXRlbS0tY2xvc2FibGVdPVwiaXRlbS5jbG9zYWJsZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiaXRlbS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoIWl0ZW0uc3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJpZHggPT09IDAgPyAwIDogLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RJdGVtKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0udUlkID09PSBzZWxlY3RlZFVpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGF5b3V0TW9kZSA9PT0gJ3JvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGl0ZW1Db3VudGVyIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2NvdW50ZXJcIj57eyBpdGVtLmNvdW50ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhZ1wiPnt7IGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb2xvciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NyZWVucmVhZGVyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKGNvbG9yQXNzb2NpYXRpb25zICYmIGNvbG9yQXNzb2NpYXRpb25zW2l0ZW1Db2xvcl0pIHx8IGl0ZW1Db2xvciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGV4dC10eXBlLXBvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0YWJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiaWR4ID09PSAwID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRUYWJdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRTdWJJdGVtVWlkXT1cInNlbGVjdGVkVWlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvckFzc29jaWF0aW9uc109XCJjb2xvckFzc29jaWF0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRTdWJJdGVtKT1cIl9zZWxlY3RJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VUYWIpPVwiX2Nsb3NlVGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmRwLXRleHQtdHlwZS1wb3BvdmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2Nsb3NlVGFiKGl0ZW0udUlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfZXh0cmFJdGVtcyQoKSkge1xuICAgICAgICAgICAgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbSBmZC1pY29uLXRhYi1iYXJfX2l0ZW0tLW92ZXJmbG93XCI+XG4gICAgICAgICAgICAgICAgPGZkcC10ZXh0LXR5cGUtcG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAjZXh0cmFJdGVtc1BvcG92ZXJcbiAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cImlzUnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW2V4dHJhVGFic109XCJfZXh0cmFUYWJzJCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzRXh0cmFJdGVtc01vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvckFzc29jaWF0aW9uc109XCJjb2xvckFzc29jaWF0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEV4dHJhSXRlbSk9XCJfc2VsZWN0RXh0cmFJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNGaXJzdFZpc2libGVJdGVtKT1cIl9mb2N1c0l0ZW0oMClcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXNMYXN0VmlzaWJsZUl0ZW0pPVwiX2ZvY3VzSXRlbShfbGFzdFZpc2libGVUYWJJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VUYWIpPVwiX2Nsb3NlVGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkcC10ZXh0LXR5cGUtcG9wb3Zlcj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICA8L3VsPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import { NgClass } from '@angular/common';
2
2
  import { Component, Input, QueryList, ViewChildren } from '@angular/core';
3
+ import { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';
3
4
  import { ButtonComponent } from '@fundamental-ngx/core/button';
4
5
  import { IconComponent } from '@fundamental-ngx/core/icon';
5
6
  import { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';
@@ -17,12 +18,20 @@ export class IconTabBarPopoverComponent extends IconTabBarPopoverBase {
17
18
  */
18
19
  this.label = 'more';
19
20
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: IconTabBarPopoverComponent, isStandalone: true, selector: "fdp-icon-tab-bar-popover", inputs: { leftSide: "leftSide", label: "label", showItemLabel: "showItemLabel" }, viewQueries: [{ propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && item.label) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }] }); }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarPopoverComponent, isStandalone: true, selector: "fdp-icon-tab-bar-popover", inputs: { leftSide: "leftSide", label: "label", showItemLabel: "showItemLabel" }, viewQueries: [{ propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: AsyncOrSyncPipe, name: "fdkAsyncOrSync" }] }); }
22
23
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarPopoverComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarPopoverComponent, decorators: [{
24
25
  type: Component,
25
- args: [{ selector: 'fdp-icon-tab-bar-popover', standalone: true, imports: [PopoverComponent, PopoverControlComponent, PopoverBodyComponent, IconComponent, NgClass, ButtonComponent], template: "<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && item.label) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ item.counter }})\n </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n" }]
26
+ args: [{ selector: 'fdp-icon-tab-bar-popover', standalone: true, imports: [
27
+ PopoverComponent,
28
+ PopoverControlComponent,
29
+ PopoverBodyComponent,
30
+ IconComponent,
31
+ NgClass,
32
+ ButtonComponent,
33
+ AsyncOrSyncPipe
34
+ ], template: "<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n" }]
26
35
  }], propDecorators: { _tabExtraUIElements: [{
27
36
  type: ViewChildren,
28
37
  args: ['tabItem']
@@ -33,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
33
42
  }], showItemLabel: [{
34
43
  type: Input
35
44
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy9pY29uLXRhYi1iYXItcG9wb3Zlci9pY29uLXRhYi1iYXItcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL2ljb24tdGFiLWJhci1wb3BvdmVyL2ljb24tdGFiLWJhci1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBUTNFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxxQkFBcUI7SUFOckU7O1FBVUk7O1dBRUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOztXQUVHO1FBRUgsVUFBSyxHQUFHLE1BQU0sQ0FBQztLQUtsQjs4R0FuQlksMEJBQTBCO2tHQUExQiwwQkFBMEIsZ1NDYnZDLHk2R0FxRUEsNENEMURjLGdCQUFnQixzSUFBRSx1QkFBdUIsbUZBQUUsb0JBQW9CLHdIQUFFLGFBQWEsMElBQUUsT0FBTyxvRkFBRSxlQUFlOzsyRkFFekcsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLDBCQUEwQixjQUV4QixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQzs4QkFJMUYsbUJBQW1CO3NCQUEzQyxZQUFZO3VCQUFDLFNBQVM7Z0JBTXZCLFFBQVE7c0JBRFAsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQsIFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgSWNvblRhYkJhclBvcG92ZXJCYXNlIH0gZnJvbSAnLi4vaWNvbi10YWItYmFyLXBvcG92ZXItYmFzZS5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWljb24tdGFiLWJhci1wb3BvdmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi10YWItYmFyLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1BvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LCBQb3BvdmVyQm9keUNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgTmdDbGFzcywgQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJY29uVGFiQmFyUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIEljb25UYWJCYXJQb3BvdmVyQmFzZSB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiRXh0cmFVSUVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHBvc2l0aW9uIGluc2lkZSBjb250YWluZXIgbGVmdC9yaWdodFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGVmdFNpZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbCA9ICdtb3JlJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgbGFiZWxzIGZvciB0YWIgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dJdGVtTGFiZWw6IGJvb2xlYW47XG59XG4iLCI8ZmQtcG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiICNwb3BvdmVyPlxuICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX292ZXJmbG93XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fb3ZlcmZsb3ctdGV4dFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJzYXAtaWNvbi0tc2xpbS1hcnJvdy1kb3duXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgPGZkLXBvcG92ZXItYm9keSBjbGFzcz1cImZkLWljb24tdGFiLWJhclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJmZC1saXN0IGZkLWxpc3QtLW5hdmlnYXRpb24gZmQtbGlzdC0tbm8tYm9yZGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdFwiIHJvbGU9XCJsaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGV4dHJhVGFiczsgdHJhY2sgaXRlbS51SWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGlzU2VwYXJhdG9ycykge1xuICAgICAgICAgICAgICAgICAgICA8bGkgdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19pY29uLXNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJwcm9jZXNzXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0X19pdGVtIGZkLWxpc3RfX2l0ZW0tLWxpbmsgZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tLWNsb3NhYmxlXT1cIml0ZW0uY2xvc2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNzc0NsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2xpbmsgZmQtaWNvbi10YWItYmFyX19saXN0LWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3RhYkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmxhdEluZGV4XT1cIml0ZW0uZmxhdEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0taWNvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX2ljb24gZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0taWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiaXRlbS5pY29uXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0l0ZW1MYWJlbCAmJiBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1saXN0X190aXRsZSBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS10aXRsZVwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fY291bnRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS1jb3VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPih7eyBpdGVtLmNvdW50ZXIgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlbnJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChjb2xvckFzc29jaWF0aW9ucyAmJiBjb2xvckFzc29jaWF0aW9uc1tpdGVtLmNvbG9yXSkgfHwgaXRlbS5jb2xvciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYi5lbWl0KGl0ZW0udUlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cImRlY2xpbmVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XG48L2ZkLXBvcG92ZXI+XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy9pY29uLXRhYi1iYXItcG9wb3Zlci9pY29uLXRhYi1iYXItcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL2ljb24tdGFiLWJhci1wb3BvdmVyL2ljb24tdGFiLWJhci1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWdCM0UsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHFCQUFxQjtJQWRyRTs7UUFrQkk7O1dBRUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOztXQUVHO1FBRUgsVUFBSyxHQUFHLE1BQU0sQ0FBQztLQUtsQjs4R0FuQlksMEJBQTBCO2tHQUExQiwwQkFBMEIsZ1NDdEJ2QywybEhBdUVBLDRDRDFEUSxnQkFBZ0Isc0lBQ2hCLHVCQUF1QixtRkFDdkIsb0JBQW9CLHdIQUNwQixhQUFhLDBJQUNiLE9BQU8sb0ZBQ1AsZUFBZSxtSEFDZixlQUFlOzsyRkFHViwwQkFBMEI7a0JBZHRDLFNBQVM7K0JBQ0ksMEJBQTBCLGNBRXhCLElBQUksV0FDUDt3QkFDTCxnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixlQUFlO3FCQUNsQjs4QkFJd0IsbUJBQW1CO3NCQUEzQyxZQUFZO3VCQUFDLFNBQVM7Z0JBTXZCLFFBQVE7c0JBRFAsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNPclN5bmNQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgUG9wb3ZlckJvZHlDb21wb25lbnQsIFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgSWNvblRhYkJhclBvcG92ZXJCYXNlIH0gZnJvbSAnLi4vaWNvbi10YWItYmFyLXBvcG92ZXItYmFzZS5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWljb24tdGFiLWJhci1wb3BvdmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi10YWItYmFyLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQXN5bmNPclN5bmNQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uVGFiQmFyUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIEljb25UYWJCYXJQb3BvdmVyQmFzZSB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiRXh0cmFVSUVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHBvc2l0aW9uIGluc2lkZSBjb250YWluZXIgbGVmdC9yaWdodFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGVmdFNpZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYWJlbCA9ICdtb3JlJztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgbGFiZWxzIGZvciB0YWIgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dJdGVtTGFiZWw6IGJvb2xlYW47XG59XG4iLCI8ZmQtcG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiICNwb3BvdmVyPlxuICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX292ZXJmbG93XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fb3ZlcmZsb3ctdGV4dFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9mZC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICA8ZmQtcG9wb3Zlci1ib2R5IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImZkLWxpc3QgZmQtbGlzdC0tbmF2aWdhdGlvbiBmZC1saXN0LS1uby1ib3JkZXIgZmQtaWNvbi10YWItYmFyX19saXN0XCIgcm9sZT1cImxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZXh0cmFUYWJzOyB0cmFjayBpdGVtLnVJZDsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIEBpZiAoaXNTZXBhcmF0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaSB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2ljb24tc2VwYXJhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInByb2Nlc3NcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2l0ZW0gZmQtbGlzdF9faXRlbS0tbGluayBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS0tY2xvc2FibGVdPVwiaXRlbS5jbG9zYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY3NzQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdF9fbGluayBmZC1pY29uLXRhYi1iYXJfX2xpc3QtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mbGF0SW5kZXhdPVwiaXRlbS5mbGF0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBpdGVtLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS1pY29uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9faWNvbiBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJpdGVtLmljb24gfCBmZGtBc3luY09yU3luY1wiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dJdGVtTGFiZWwgJiYgKGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX3RpdGxlIGZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtLXRpdGxlXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5sYWJlbCB8IGZka0FzeW5jT3JTeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fY291bnRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS1jb3VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPih7eyBpdGVtQ291bnRlciB9fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY29sb3IgfCBmZGtBc3luY09yU3luYzsgYXMgaXRlbUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlbnJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChjb2xvckFzc29jaWF0aW9ucyAmJiBjb2xvckFzc29jaWF0aW9uc1tpdGVtQ29sb3JdKSB8fCBpdGVtQ29sb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY2xvc2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VUYWIuZW1pdChpdGVtLnVJZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuPC9mZC1wb3BvdmVyPlxuIl19
@@ -115,10 +115,10 @@ export class IconTabBarPopoverBase {
115
115
  this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);
116
116
  }
117
117
  }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarPopoverBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
119
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: IconTabBarPopoverBase, inputs: { isRtl: "isRtl", extraTabs: "extraTabs", isSeparators: "isSeparators", colorAssociations: "colorAssociations" }, outputs: { selectedExtraItem: "selectedExtraItem", focusFirstVisibleItem: "focusFirstVisibleItem", focusLastVisibleItem: "focusLastVisibleItem", closeTab: "closeTab" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesOnChanges: true, ngImport: i0 }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarPopoverBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
119
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: IconTabBarPopoverBase, inputs: { isRtl: "isRtl", extraTabs: "extraTabs", isSeparators: "isSeparators", colorAssociations: "colorAssociations" }, outputs: { selectedExtraItem: "selectedExtraItem", focusFirstVisibleItem: "focusFirstVisibleItem", focusLastVisibleItem: "focusLastVisibleItem", closeTab: "closeTab" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesOnChanges: true, ngImport: i0 }); }
120
120
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: IconTabBarPopoverBase, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarPopoverBase, decorators: [{
122
122
  type: Directive
123
123
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { isRtl: [{
124
124
  type: Input
@@ -66,10 +66,10 @@ export class TextTypePopoverComponent extends IconTabBarPopoverBase {
66
66
  return acc;
67
67
  }, []);
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TextTypePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: TextTypePopoverComponent, isStandalone: true, selector: "fdp-text-type-popover", inputs: { isExtraItemsMode: "isExtraItemsMode", parentTab: "parentTab", selectedSubItemUid: "selectedSubItemUid", tabindex: "tabindex" }, outputs: { selectedSubItem: "selectedSubItem" }, viewQueries: [{ propertyName: "_dropdownTrigger", first: true, predicate: ["dropdownTrigger"], descendants: true }, { propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextTypePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: TextTypePopoverComponent, isStandalone: true, selector: "fdp-text-type-popover", inputs: { isExtraItemsMode: "isExtraItemsMode", parentTab: "parentTab", selectedSubItemUid: "selectedSubItemUid", tabindex: "tabindex" }, outputs: { selectedSubItem: "selectedSubItem" }, viewQueries: [{ propertyName: "_dropdownTrigger", first: true, predicate: ["dropdownTrigger"], descendants: true }, { propertyName: "_tabExtraUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: IconBarDndListDirective, selector: "[fdpIconBarDndList], [fdp-icon-bar-dnd-list]", inputs: ["dndOrientation", "dndAutoScroll"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconBarDndItemDirective, selector: "[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]", inputs: ["dndItemData", "previewClass", "dndHoveredClass", "dndSeparatorClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TextTypePopoverComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TextTypePopoverComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'fdp-text-type-popover', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
75
75
  PopoverComponent,
@@ -81,7 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
81
81
  NgClass,
82
82
  ButtonComponent,
83
83
  IconComponent
84
- ], template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <i class=\"sap-icon--slim-arrow-down\" role=\"presentation\"></i>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n" }]
84
+ ], template: "@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (!isExtraItemsMode && parentTab) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n" }]
85
85
  }], propDecorators: { _dropdownTrigger: [{
86
86
  type: ViewChild,
87
87
  args: ['dropdownTrigger']
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
99
99
  }], selectedSubItem: [{
100
100
  type: Output
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFtQjNFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFqQm5FOztRQXVCSTs7V0FFRztRQUVILHFCQUFnQixHQUFHLEtBQUssQ0FB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QUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjs4QkFJNkIsZ0JBQWdCO3NCQUE3QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFSCxtQkFBbUI7c0JBQTNDLFlBQVk7dUJBQUMsU0FBUztnQkFNdkIsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCwgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC10ZXh0LXR5cGUtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgSWNvblRhYkJhclBvcG92ZXJCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgZm9yIGh0bWwgZWxlbWVudCwgdGhhdCBvcGVucyBkcm9wZG93biBhbmQgY2FuIHJlY2VpdmUgZm9jdXMgKi9cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInKSBfZHJvcGRvd25UcmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICAvKiogQGhpZGRlbiBsaXN0IG9mIHRhYiBodG1sIGVsZW1lbnRzLCB0aGF0IGNhbiByZWNlaXZlIGZvY3VzICovXG4gICAgQFZpZXdDaGlsZHJlbigndGFiSXRlbScpIF90YWJFeHRyYVVJRWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgZXh0cmEgaXRlbXMgbW9kZSBvciBzdWJpdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0V4dHJhSXRlbXNNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyZW50IHRhYiBuZWVkIGZvciBzdWJJdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwYXJlbnRUYWI6IEljb25UYWJCYXJJdGVtO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHVJZCBvZiBzZWxlY3RlZCBzdWJJdGVtXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZFN1Ykl0ZW1VaWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdGFiSW5kZXggb2YgdGhlIHBhcnRpY3VsYXIgaXRlbS4gQXBsaWNhYmxlIG9ubHkgZm9yIHN1Yml0ZW1zIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgc3ViVGFiIGlzIHNlbGVjdGVkIGFuZCBpc0V4dHJhSXRlbXNNb2RlIGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRTdWJJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29udGFpbnNTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaXNFeHRyYUl0ZW1zTW9kZSAmJiBjaGFuZ2VzLnBhcmVudFRhYiAmJiB0aGlzLnBhcmVudFRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3R5bGVzKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFN1Ykl0ZW1VaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUlmQ29udGFpbnNTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHRyYUl0ZW1zTW9kZSA/IHRoaXMuc2VsZWN0ZWRFeHRyYUl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pIDogdGhpcy5zZWxlY3RlZFN1Ykl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZXh0UG9wb3ZlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIC8vIHVzaW5nIHJlbGF0aXZlIGluZGV4IHdpdGhpbiBwb3BvdmVyIChmaXJzdCBwb3BvdmVyIHRhYiBzaG91bGQgc3RhcnQgZnJvbSAwKVxuICAgICAgICBjb25zdCBiYXNlSW5kZXggPSB0aGlzLnBhcmVudFRhYiA/IHRoaXMucGFyZW50VGFiLmZsYXRJbmRleCArIDEgOiB0aGlzLmV4dHJhVGFic1swXS5mbGF0SW5kZXg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRhYi5mbGF0SW5kZXggLSBiYXNlSW5kZXg7XG4gICAgICAgIHN1cGVyLl9rZXlEb3duSGFuZGxlcihldmVudCwgdGFiLCBjdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlSWZDb250YWluc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250YWluc1NlbGVjdGVkID1cbiAgICAgICAgICAgICEhdGhpcy5wYXJlbnRUYWIuc3ViSXRlbXMgJiZcbiAgICAgICAgICAgIHRoaXMuX2dldENoaWxkcmVuKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKS5zb21lKCh7IHVJZCB9KSA9PiB1SWQgPT09IHRoaXMuc2VsZWN0ZWRTdWJJdGVtVWlkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENoaWxkcmVuKGl0ZW1zOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogSWNvblRhYkJhckl0ZW1bXSwgaXRlbTogSWNvblRhYkJhckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodGhpcy5fZ2V0Q2hpbGRyZW4oaXRlbS5zdWJJdGVtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbn1cbiIsIkBpZiAoaXNFeHRyYUl0ZW1zTW9kZSkge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvdy10ZXh0XCI+TW9yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInNhcC1pY29uLS1zbGltLWFycm93LWRvd25cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyXCI+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBmZHBJY29uQmFyRG5kTGlzdFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdCBmZC1saXN0LS1uYXZpZ2F0aW9uIGZkLWxpc3QtLW5vLWJvcmRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3RcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGV2ZWw6IDEsIGl0ZW1zOiBleHRyYVRhYnMgfVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1Ykl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgPC9mZC1wb3BvdmVyPlxufVxuQGlmICghaXNFeHRyYUl0ZW1zTW9kZSAmJiBwYXJlbnRUYWIpIHtcbiAgICA8ZmQtcG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b20tZW5kXCIgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiIFtmb2N1c1RyYXBwZWRdPVwidHJ1ZVwiICNwb3BvdmVyPlxuICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl9jb250YWluc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFiXCJcbiAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgI2Ryb3Bkb3duVHJpZ2dlclxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhZ1wiPnt7IHBhcmVudFRhYi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2Fycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInNhcC1pY29uLS1zbGltLWFycm93LWRvd25cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocGFyZW50VGFiLmJhZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJcIj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRMaXN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0IGZkLWxpc3QtLW5hdmlnYXRpb24gZmQtbGlzdC0tbm8tYm9yZGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGV2ZWw6IDEsIGl0ZW1zOiBwYXJlbnRUYWIuc3ViSXRlbXMgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1Ykl0ZW1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbjxuZy10ZW1wbGF0ZSAjc3ViSXRlbSBsZXQtaXRlbXM9XCJpdGVtc1wiIGxldC1sZXZlbD1cImxldmVsXCI+XG4gICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbS51SWQpIHtcbiAgICAgICAgPGxpXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxldmVsXT1cImxldmVsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdF9faXRlbSBmZC1saXN0X19pdGVtLS1saW5rIGZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS0tY2xvc2FibGVdPVwiaXRlbS5jbG9zYWJsZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmNzc0NsYXNzZXNcIlxuICAgICAgICAgICAgZmRwSWNvbkJhckRuZEl0ZW1cbiAgICAgICAgICAgIFtkbmRJdGVtRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2xpbmsgZmQtaWNvbi10YWItYmFyX19saXN0LWxpbmtcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgI3RhYkl0ZW1cbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZsYXRJbmRleF09XCJpdGVtLmZsYXRJbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLnVJZCA9PT0gc2VsZWN0ZWRTdWJJdGVtVWlkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl90ZXh0UG9wb3ZlcktleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fdGl0bGUgZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tdGl0bGVcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fY291bnRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbS1jb3VudGVyXCI+KHt7IGl0ZW0uY291bnRlciB9fSkgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlbnJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoY29sb3JBc3NvY2lhdGlvbnMgJiYgY29sb3JBc3NvY2lhdGlvbnNbaXRlbS5jb2xvcl0pIHx8IGl0ZW0uY29sb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgQGlmIChpdGVtLmNsb3NhYmxlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVGFiLmVtaXQoaXRlbS51SWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9saT5cbiAgICAgICAgQGlmIChpdGVtLnN1Ykl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsZXZlbDogbGV2ZWwgKyAxLCBpdGVtczogaXRlbS5zdWJJdGVtcyB9XCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWJJdGVtXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10eXBlLXBvcG92ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9pY29uLXRhYi1iYXIvY29tcG9uZW50cy9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL3BvcG92ZXJzL3RleHQtdHlwZS1wb3BvdmVyL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFtQjNFLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFqQm5FOztRQXVCSTs7V0FFRztRQUVILHFCQUFnQixHQUFHLEtBQUssQ0FB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QUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjs4QkFJNkIsZ0JBQWdCO3NCQUE3QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFSCxtQkFBbUI7c0JBQTNDLFlBQVk7dUJBQUMsU0FBUztnQkFNdkIsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sU0FBUztzQkFEUixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBQb3BvdmVyQm9keUNvbXBvbmVudCwgUG9wb3ZlckNvbXBvbmVudCwgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBJY29uQmFyRG5kSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZG5kL2ljb24tYmFyLWRuZC1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uVGFiQmFySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvaWNvbi10YWItYmFyLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4uL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC10ZXh0LXR5cGUtcG9wb3ZlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RleHQtdHlwZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgICAgICBJY29uQmFyRG5kTGlzdERpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgSWNvbkJhckRuZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgSWNvblRhYkJhclBvcG92ZXJCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKiogQGhpZGRlbiByZWZlcmVuY2UgZm9yIGh0bWwgZWxlbWVudCwgdGhhdCBvcGVucyBkcm9wZG93biBhbmQgY2FuIHJlY2VpdmUgZm9jdXMgKi9cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRyaWdnZXInKSBfZHJvcGRvd25UcmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICAvKiogQGhpZGRlbiBsaXN0IG9mIHRhYiBodG1sIGVsZW1lbnRzLCB0aGF0IGNhbiByZWNlaXZlIGZvY3VzICovXG4gICAgQFZpZXdDaGlsZHJlbigndGFiSXRlbScpIF90YWJFeHRyYVVJRWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgZXh0cmEgaXRlbXMgbW9kZSBvciBzdWJpdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0V4dHJhSXRlbXNNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUGFyZW50IHRhYiBuZWVkIGZvciBzdWJJdGVtcyBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwYXJlbnRUYWI6IEljb25UYWJCYXJJdGVtO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHVJZCBvZiBzZWxlY3RlZCBzdWJJdGVtXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZFN1Ykl0ZW1VaWQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gdGFiSW5kZXggb2YgdGhlIHBhcnRpY3VsYXIgaXRlbS4gQXBsaWNhYmxlIG9ubHkgZm9yIHN1Yml0ZW1zIG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgc3ViVGFiIGlzIHNlbGVjdGVkIGFuZCBpc0V4dHJhSXRlbXNNb2RlIGlzIGRpc2FibGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRTdWJJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29udGFpbnNTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoIXRoaXMuaXNFeHRyYUl0ZW1zTW9kZSAmJiBjaGFuZ2VzLnBhcmVudFRhYiAmJiB0aGlzLnBhcmVudFRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5fc2V0U3R5bGVzKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFN1Ykl0ZW1VaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUlmQ29udGFpbnNTZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFeHRyYUl0ZW1zTW9kZSA/IHRoaXMuc2VsZWN0ZWRFeHRyYUl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pIDogdGhpcy5zZWxlY3RlZFN1Ykl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZXh0UG9wb3ZlcktleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIC8vIHVzaW5nIHJlbGF0aXZlIGluZGV4IHdpdGhpbiBwb3BvdmVyIChmaXJzdCBwb3BvdmVyIHRhYiBzaG91bGQgc3RhcnQgZnJvbSAwKVxuICAgICAgICBjb25zdCBiYXNlSW5kZXggPSB0aGlzLnBhcmVudFRhYiA/IHRoaXMucGFyZW50VGFiLmZsYXRJbmRleCArIDEgOiB0aGlzLmV4dHJhVGFic1swXS5mbGF0SW5kZXg7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRhYi5mbGF0SW5kZXggLSBiYXNlSW5kZXg7XG4gICAgICAgIHN1cGVyLl9rZXlEb3duSGFuZGxlcihldmVudCwgdGFiLCBjdXJyZW50SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlSWZDb250YWluc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250YWluc1NlbGVjdGVkID1cbiAgICAgICAgICAgICEhdGhpcy5wYXJlbnRUYWIuc3ViSXRlbXMgJiZcbiAgICAgICAgICAgIHRoaXMuX2dldENoaWxkcmVuKHRoaXMucGFyZW50VGFiLnN1Ykl0ZW1zKS5zb21lKCh7IHVJZCB9KSA9PiB1SWQgPT09IHRoaXMuc2VsZWN0ZWRTdWJJdGVtVWlkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENoaWxkcmVuKGl0ZW1zOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogSWNvblRhYkJhckl0ZW1bXSwgaXRlbTogSWNvblRhYkJhckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQodGhpcy5fZ2V0Q2hpbGRyZW4oaXRlbS5zdWJJdGVtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbn1cbiIsIkBpZiAoaXNFeHRyYUl0ZW1zTW9kZSkge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvd1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19vdmVyZmxvdy10ZXh0XCI+TW9yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJcIj5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGZkcEljb25CYXJEbmRMaXN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0IGZkLWxpc3QtLW5hdmlnYXRpb24gZmQtbGlzdC0tbm8tYm9yZGVyIGZkLWljb24tdGFiLWJhcl9fbGlzdFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBsZXZlbDogMSwgaXRlbXM6IGV4dHJhVGFicyB9XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG59XG5AaWYgKCFpc0V4dHJhSXRlbXNNb2RlICYmIHBhcmVudFRhYikge1xuICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCIgI3BvcG92ZXI+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiX2NvbnRhaW5zU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX190YWJcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAjZHJvcGRvd25UcmlnZ2VyXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFiLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFnXCI+e3sgcGFyZW50VGFiLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBhcmVudFRhYi5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2JhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyXCI+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBmZHBJY29uQmFyRG5kTGlzdFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdCBmZC1saXN0LS1uYXZpZ2F0aW9uIGZkLWxpc3QtLW5vLWJvcmRlciBmZC1pY29uLXRhYi1iYXJfX2xpc3RcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxldmVsOiAxLCBpdGVtczogcGFyZW50VGFiLnN1Ykl0ZW1zIH1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWJJdGVtXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG59XG48bmctdGVtcGxhdGUgI3N1Ykl0ZW0gbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0udUlkKSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJsZXZlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2l0ZW0gZmQtbGlzdF9faXRlbS0tbGluayBmZC1pY29uLXRhYi1iYXJfX2xpc3QtaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tLWNsb3NhYmxlXT1cIml0ZW0uY2xvc2FibGVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jc3NDbGFzc2VzXCJcbiAgICAgICAgICAgIGZkcEljb25CYXJEbmRJdGVtXG4gICAgICAgICAgICBbZG5kSXRlbURhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0X19saW5rIGZkLWljb24tdGFiLWJhcl9fbGlzdC1saW5rXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICN0YWJJdGVtXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mbGF0SW5kZXhdPVwiaXRlbS5mbGF0SW5kZXhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS51SWQgPT09IHNlbGVjdGVkU3ViSXRlbVVpZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfdGV4dFBvcG92ZXJLZXlEb3duSGFuZGxlcigkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX3RpdGxlIGZkLWljb24tdGFiLWJhcl9fbGlzdC1pdGVtLXRpdGxlXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2JhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX2NvdW50ZXIgZmQtaWNvbi10YWItYmFyX19saXN0LWl0ZW0tY291bnRlclwiPih7eyBpdGVtLmNvdW50ZXIgfX0pIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JlZW5yZWFkZXItb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKGNvbG9yQXNzb2NpYXRpb25zICYmIGNvbG9yQXNzb2NpYXRpb25zW2l0ZW0uY29sb3JdKSB8fCBpdGVtLmNvbG9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVRhYi5lbWl0KGl0ZW0udUlkKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbGk+XG4gICAgICAgIEBpZiAoaXRlbS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGV2ZWw6IGxldmVsICsgMSwgaXRlbXM6IGl0ZW0uc3ViSXRlbXMgfVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3ViSXRlbVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19