@sbb-esta/lyne-elements 3.0.0-next.0 → 3.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/accordion/accordion.component.js +19 -22
  2. package/action-group/action-group.component.js +3 -5
  3. package/alert/alert/alert.component.d.ts +5 -7
  4. package/alert/alert/alert.component.d.ts.map +1 -1
  5. package/alert/alert/alert.component.js +69 -84
  6. package/alert/alert-group/alert-group.component.js +2 -3
  7. package/autocomplete/autocomplete-base-element.js +83 -95
  8. package/autocomplete/autocomplete.component.js +28 -33
  9. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +42 -50
  10. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -1
  11. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  12. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +4 -5
  13. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +17 -20
  14. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +1 -1
  15. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  16. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +21 -24
  17. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +5 -5
  18. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +27 -31
  19. package/button/mini-button/mini-button.component.js +1 -1
  20. package/button/mini-button-group/mini-button-group.component.js +1 -2
  21. package/calendar/calendar.component.d.ts +0 -5
  22. package/calendar/calendar.component.d.ts.map +1 -1
  23. package/calendar/calendar.component.js +129 -147
  24. package/card/card/card.component.js +12 -12
  25. package/card/card-badge/card-badge.component.js +17 -17
  26. package/card/common/card-action-common.js +20 -22
  27. package/checkbox/checkbox/checkbox.component.js +17 -20
  28. package/checkbox/checkbox-group/checkbox-group.component.js +39 -52
  29. package/checkbox/checkbox-panel/checkbox-panel.component.js +18 -21
  30. package/checkbox/common/checkbox-common.js +13 -15
  31. package/chip/chip-group/chip-group.component.js +66 -80
  32. package/clock/clock.component.js +50 -60
  33. package/container/container/container.component.js +28 -29
  34. package/container/sticky-bar/sticky-bar.component.js +25 -26
  35. package/core/a11y/focus-trap-controller.js +11 -14
  36. package/core/a11y/input-modality-detector.js +15 -16
  37. package/core/a11y/interactivity-checker.js +10 -10
  38. package/core/a11y/live-announcer.js +12 -14
  39. package/core/base-elements/button-base-element.js +58 -63
  40. package/core/base-elements/link-base-element.js +3 -6
  41. package/core/base-elements/open-close-base-element.js +1 -1
  42. package/core/config/config.d.ts.map +1 -1
  43. package/core/controllers/escapable-overlay-controller.js +10 -12
  44. package/core/controllers/id-reference-controller.js +13 -14
  45. package/core/controllers/inert-controller.js +8 -10
  46. package/core/controllers/slot-state-controller.js +16 -26
  47. package/core/datetime/date-adapter.d.ts +1 -1
  48. package/core/datetime/date-adapter.d.ts.map +1 -1
  49. package/core/datetime/date-adapter.js +21 -21
  50. package/core/datetime/native-date-adapter.d.ts +1 -1
  51. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  52. package/core/datetime/native-date-adapter.js +28 -28
  53. package/core/decorators/force-type.js +4 -5
  54. package/core/decorators/id-reference.js +34 -37
  55. package/core/decorators/plain-date.js +16 -19
  56. package/core/dom/breakpoint.js +8 -8
  57. package/core/eventing/event-emitter.js +4 -5
  58. package/core/i18n/i18n.js +41 -41
  59. package/core/mixins/element-internals-mixin.d.ts +21 -0
  60. package/core/mixins/element-internals-mixin.d.ts.map +1 -1
  61. package/core/mixins/element-internals-mixin.js +109 -23
  62. package/core/mixins/form-associated-checkbox-mixin.js +32 -37
  63. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  64. package/core/mixins/form-associated-input-mixin.js +69 -93
  65. package/core/mixins/form-associated-mixin.js +32 -35
  66. package/core/mixins/form-associated-radio-button-mixin.js +3 -5
  67. package/core/mixins/hydration-mixin.js +12 -13
  68. package/core/mixins/named-slot-list-mixin.js +32 -37
  69. package/core/mixins/panel-mixin.js +26 -27
  70. package/core/mixins/readonly-mixin.d.ts.map +1 -1
  71. package/core/mixins/readonly-mixin.js +10 -11
  72. package/core/mixins.js +27 -25
  73. package/core/overlay/position.js +23 -23
  74. package/core/styles/core/mediaqueries.scss +1 -1
  75. package/core/styles/core.scss +70 -37
  76. package/core/styles/mixins/table.scss +1 -24
  77. package/core/styles/mixins/typo.scss +0 -1
  78. package/core/testing/event-spy.js +2 -4
  79. package/core/testing/wait-for-image-ready.js +8 -9
  80. package/core/testing/wait-for-render.js +8 -9
  81. package/core.css +29 -1
  82. package/custom-elements.json +5804 -3207
  83. package/date-input/date-input.component.d.ts +16 -1
  84. package/date-input/date-input.component.d.ts.map +1 -1
  85. package/date-input/date-input.component.js +71 -58
  86. package/datepicker/common/datepicker-button.d.ts +31 -20
  87. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  88. package/datepicker/common/datepicker-button.js +79 -74
  89. package/datepicker/common.d.ts +0 -1
  90. package/datepicker/common.d.ts.map +1 -1
  91. package/datepicker/common.js +3 -5
  92. package/datepicker/datepicker/datepicker.component.d.ts +23 -102
  93. package/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  94. package/datepicker/datepicker/datepicker.component.js +91 -233
  95. package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -2
  96. package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
  97. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +27 -18
  98. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -2
  99. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
  100. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +27 -18
  101. package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +6 -26
  102. package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
  103. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +36 -145
  104. package/datepicker.js +9 -11
  105. package/development/accordion/accordion.component.js +4 -7
  106. package/development/action-group/action-group.component.js +3 -5
  107. package/development/alert/alert/alert.component.d.ts +5 -7
  108. package/development/alert/alert/alert.component.d.ts.map +1 -1
  109. package/development/alert/alert/alert.component.js +34 -52
  110. package/development/alert/alert-group/alert-group.component.js +2 -3
  111. package/development/autocomplete/autocomplete-base-element.js +20 -32
  112. package/development/autocomplete/autocomplete.component.js +7 -12
  113. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +10 -18
  114. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -1
  115. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  116. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +4 -9
  117. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  118. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +4 -7
  119. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +1 -1
  120. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  121. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +4 -7
  122. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +2 -2
  123. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
  124. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +5 -9
  125. package/development/button/accent-button/accent-button.component.js +1 -1
  126. package/development/button/accent-button-link/accent-button-link.component.js +1 -1
  127. package/development/button/accent-button-static/accent-button-static.component.js +1 -1
  128. package/development/button/button/button.component.js +1 -1
  129. package/development/button/button-link/button-link.component.js +1 -1
  130. package/development/button/button-static/button-static.component.js +1 -1
  131. package/development/button/common/button-common.js +1 -1
  132. package/development/button/mini-button/mini-button.component.js +1 -1
  133. package/development/button/mini-button-group/mini-button-group.component.js +2 -3
  134. package/development/button/secondary-button/secondary-button.component.js +1 -1
  135. package/development/button/secondary-button-link/secondary-button-link.component.js +1 -1
  136. package/development/button/secondary-button-static/secondary-button-static.component.js +1 -1
  137. package/development/button/transparent-button/transparent-button.component.js +1 -1
  138. package/development/button/transparent-button-link/transparent-button-link.component.js +1 -1
  139. package/development/button/transparent-button-static/transparent-button-static.component.js +1 -1
  140. package/development/calendar/calendar.component.d.ts +0 -5
  141. package/development/calendar/calendar.component.d.ts.map +1 -1
  142. package/development/calendar/calendar.component.js +20 -44
  143. package/development/card/card/card.component.js +1 -1
  144. package/development/card/card-badge/card-badge.component.js +2 -2
  145. package/development/card/card-button/card-button.component.js +1 -1
  146. package/development/card/card-link/card-link.component.js +1 -1
  147. package/development/card/common/card-action-common.js +4 -6
  148. package/development/checkbox/checkbox/checkbox.component.js +2 -5
  149. package/development/checkbox/checkbox-group/checkbox-group.component.js +8 -21
  150. package/development/checkbox/checkbox-panel/checkbox-panel.component.js +2 -5
  151. package/development/checkbox/common/checkbox-common.js +3 -5
  152. package/development/chip/chip/chip.component.js +1 -1
  153. package/development/chip/chip-group/chip-group.component.js +18 -32
  154. package/development/chip-label/chip-label.component.js +1 -1
  155. package/development/clock/clock.component.js +23 -33
  156. package/development/container/container/container.component.js +2 -3
  157. package/development/container/sticky-bar/sticky-bar.component.js +3 -4
  158. package/development/core/a11y/arrow-navigation.js +1 -1
  159. package/development/core/a11y/fake-event-detection.js +1 -1
  160. package/development/core/a11y/focus-trap-controller.js +6 -9
  161. package/development/core/a11y/focus-visible-within-controller.js +1 -1
  162. package/development/core/a11y/input-modality-detector.js +2 -3
  163. package/development/core/a11y/interactivity-checker.js +2 -2
  164. package/development/core/a11y/live-announcer.js +6 -8
  165. package/development/core/base-elements/action-base-element.js +2 -3
  166. package/development/core/base-elements/button-base-element.js +6 -11
  167. package/development/core/base-elements/link-base-element.js +4 -7
  168. package/development/core/base-elements/open-close-base-element.js +2 -2
  169. package/development/core/config/config.d.ts.map +1 -1
  170. package/development/core/config/config.js +1 -1
  171. package/development/core/controllers/escapable-overlay-controller.js +3 -5
  172. package/development/core/controllers/id-reference-controller.js +2 -3
  173. package/development/core/controllers/inert-controller.js +4 -6
  174. package/development/core/controllers/language-controller.js +1 -1
  175. package/development/core/controllers/media-matchers-controller.js +1 -1
  176. package/development/core/controllers/slot-state-controller.js +8 -18
  177. package/development/core/datetime/date-adapter.d.ts +1 -1
  178. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  179. package/development/core/datetime/date-adapter.js +5 -5
  180. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  181. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  182. package/development/core/datetime/native-date-adapter.js +4 -4
  183. package/development/core/decorators/force-type.js +3 -4
  184. package/development/core/decorators/get-override.js +1 -1
  185. package/development/core/decorators/handle-distinct-change.js +1 -1
  186. package/development/core/decorators/host-attributes.js +1 -1
  187. package/development/core/decorators/id-reference.js +4 -7
  188. package/development/core/decorators/plain-date.js +5 -8
  189. package/development/core/decorators/slot-state.js +1 -1
  190. package/development/core/dom/animation.js +1 -1
  191. package/development/core/dom/breakpoint.js +2 -2
  192. package/development/core/dom/host-context.js +1 -1
  193. package/development/core/dom/platform.js +1 -1
  194. package/development/core/dom/scroll.js +1 -1
  195. package/development/core/dom/set-or-remove-attribute.js +1 -1
  196. package/development/core/eventing/composed-path-has-attribute.js +1 -1
  197. package/development/core/eventing/event-emitter.js +2 -3
  198. package/development/core/eventing/form-element-handlers.js +1 -1
  199. package/development/core/eventing/forward-event.js +1 -1
  200. package/development/core/eventing/throttle.js +1 -1
  201. package/development/core/i18n/i18n.js +18 -18
  202. package/development/core/mixins/animation-complete-mixin.js +1 -1
  203. package/development/core/mixins/disabled-mixin.js +1 -1
  204. package/development/core/mixins/element-internals-mixin.d.ts +21 -0
  205. package/development/core/mixins/element-internals-mixin.d.ts.map +1 -1
  206. package/development/core/mixins/element-internals-mixin.js +123 -2
  207. package/development/core/mixins/form-associated-checkbox-mixin.js +6 -9
  208. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  209. package/development/core/mixins/form-associated-input-mixin.js +29 -59
  210. package/development/core/mixins/form-associated-mixin.js +6 -9
  211. package/development/core/mixins/form-associated-radio-button-mixin.js +7 -9
  212. package/development/core/mixins/hydration-mixin.js +3 -4
  213. package/development/core/mixins/named-slot-list-mixin.js +4 -7
  214. package/development/core/mixins/negative-mixin.js +1 -1
  215. package/development/core/mixins/panel-mixin.js +2 -3
  216. package/development/core/mixins/readonly-mixin.d.ts.map +1 -1
  217. package/development/core/mixins/readonly-mixin.js +4 -6
  218. package/development/core/mixins/required-mixin.js +1 -1
  219. package/development/core/mixins/update-scheduler-mixin.js +1 -1
  220. package/development/core/mixins.js +4 -2
  221. package/development/core/overlay/overlay-option-panel.js +1 -1
  222. package/development/core/overlay/overlay-trigger-attributes.js +1 -1
  223. package/development/core/overlay/overlay.js +1 -1
  224. package/development/core/overlay/position.js +5 -5
  225. package/development/core/testing/event-spy.js +3 -5
  226. package/development/core/testing/mocha-extensions.js +1 -1
  227. package/development/core/testing/wait-for-condition.js +1 -1
  228. package/development/core/testing/wait-for-image-ready.js +2 -3
  229. package/development/core/testing/wait-for-render.js +2 -3
  230. package/development/date-input/date-input.component.d.ts +16 -1
  231. package/development/date-input/date-input.component.d.ts.map +1 -1
  232. package/development/date-input/date-input.component.js +28 -11
  233. package/development/datepicker/common/datepicker-button.d.ts +31 -20
  234. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  235. package/development/datepicker/common/datepicker-button.js +103 -90
  236. package/development/datepicker/common.d.ts +0 -1
  237. package/development/datepicker/common.d.ts.map +1 -1
  238. package/development/datepicker/common.js +4 -6
  239. package/development/datepicker/datepicker/datepicker.component.d.ts +23 -102
  240. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  241. package/development/datepicker/datepicker/datepicker.component.js +94 -337
  242. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -2
  243. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
  244. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +18 -6
  245. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -2
  246. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
  247. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +18 -6
  248. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +6 -26
  249. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
  250. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +137 -224
  251. package/development/datepicker.js +3 -5
  252. package/development/dialog/dialog/dialog.component.d.ts +7 -16
  253. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  254. package/development/dialog/dialog/dialog.component.js +78 -149
  255. package/development/dialog/dialog-actions/dialog-actions.component.d.ts +2 -2
  256. package/development/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
  257. package/development/dialog/dialog-actions/dialog-actions.component.js +20 -17
  258. package/development/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
  259. package/development/dialog/dialog-content/dialog-content.component.js +5 -46
  260. package/development/dialog/dialog-title/dialog-title.component.d.ts +2 -26
  261. package/development/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
  262. package/development/dialog/dialog-title/dialog-title.component.js +12 -179
  263. package/development/divider/divider.component.js +2 -2
  264. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +9 -13
  265. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +2 -2
  266. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +5 -6
  267. package/development/file-selector/common/file-selector-common.js +2 -3
  268. package/development/file-selector/file-selector/file-selector.component.js +1 -1
  269. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  270. package/development/flip-card/flip-card/flip-card.component.js +7 -13
  271. package/development/flip-card/flip-card-details/flip-card-details.component.js +3 -4
  272. package/development/flip-card/flip-card-summary/flip-card-summary.component.js +3 -4
  273. package/development/footer/footer.component.js +1 -1
  274. package/development/form-error/form-error.component.js +3 -4
  275. package/development/form-field/form-field/form-field.component.d.ts +1 -1
  276. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  277. package/development/form-field/form-field/form-field.component.js +39 -67
  278. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  279. package/development/form-field/form-field-clear/form-field-clear.component.js +6 -8
  280. package/development/header/common/header-action-common.js +1 -1
  281. package/development/header/header/header.component.js +5 -8
  282. package/development/header/header-button/header-button.component.js +1 -1
  283. package/development/header/header-link/header-link.component.js +1 -1
  284. package/development/icon/icon-base.d.ts +5 -3
  285. package/development/icon/icon-base.d.ts.map +1 -1
  286. package/development/icon/icon-base.js +4 -7
  287. package/development/icon/icon-name-mixin.js +1 -1
  288. package/development/icon/icon-request.js +2 -3
  289. package/development/icon/icon-validate.js +1 -1
  290. package/development/icon/icon.component.d.ts +1 -2
  291. package/development/icon/icon.component.d.ts.map +1 -1
  292. package/development/icon/icon.component.js +8 -19
  293. package/development/image/image.component.js +7 -9
  294. package/development/journey-header/journey-header.component.d.ts +5 -5
  295. package/development/journey-header/journey-header.component.d.ts.map +1 -1
  296. package/development/journey-header/journey-header.component.js +26 -40
  297. package/development/lead-container/lead-container.component.js +1 -1
  298. package/development/link/block-link/block-link.component.js +1 -1
  299. package/development/link/block-link-button/block-link-button.component.js +1 -1
  300. package/development/link/block-link-static/block-link-static.component.js +1 -1
  301. package/development/link/common/block-link-common.js +1 -1
  302. package/development/link/common/inline-link-common.js +1 -1
  303. package/development/link/link/link.component.js +1 -1
  304. package/development/link/link-button/link-button.component.js +1 -1
  305. package/development/link/link-static/link-static.component.js +1 -1
  306. package/development/link-common-DPLJx5Uo.js +1 -1
  307. package/development/link-list/common/link-list-base.js +1 -1
  308. package/development/link-list/link-list/link-list.component.js +1 -1
  309. package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -1
  310. package/development/loading-indicator/loading-indicator.component.js +1 -1
  311. package/development/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
  312. package/development/logo/logo.component.js +1 -1
  313. package/development/map-container/map-container.component.js +2 -3
  314. package/development/menu/common/menu-action-common.js +1 -1
  315. package/development/menu/menu/menu.component.js +17 -25
  316. package/development/menu/menu-button/menu-button.component.js +1 -1
  317. package/development/menu/menu-link/menu-link.component.js +1 -1
  318. package/development/message/message.component.d.ts +4 -8
  319. package/development/message/message.component.d.ts.map +1 -1
  320. package/development/message/message.component.js +12 -54
  321. package/development/navigation/common/navigation-action-common.js +3 -5
  322. package/development/navigation/navigation/navigation.component.js +19 -35
  323. package/development/navigation/navigation-button/navigation-button.component.js +1 -1
  324. package/development/navigation/navigation-link/navigation-link.component.js +1 -1
  325. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  326. package/development/navigation/navigation-marker/navigation-marker.component.js +4 -6
  327. package/development/navigation/navigation-section/navigation-section.component.d.ts +1 -1
  328. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  329. package/development/navigation/navigation-section/navigation-section.component.js +27 -37
  330. package/development/notification/notification.component.d.ts +7 -9
  331. package/development/notification/notification.component.d.ts.map +1 -1
  332. package/development/notification/notification.component.js +47 -77
  333. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  334. package/development/option/optgroup/optgroup-base-element.js +8 -14
  335. package/development/option/optgroup/optgroup.component.js +6 -10
  336. package/development/option/option/option-base-element.js +3 -4
  337. package/development/option/option/option.component.js +7 -10
  338. package/development/overlay/overlay-base-element.d.ts +24 -6
  339. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  340. package/development/overlay/overlay-base-element.js +114 -15
  341. package/development/overlay/overlay.component.d.ts +2 -12
  342. package/development/overlay/overlay.component.d.ts.map +1 -1
  343. package/development/overlay/overlay.component.js +33 -98
  344. package/development/paginator/common/paginator-common.js +1 -1
  345. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  346. package/development/paginator/paginator/paginator.component.js +2 -3
  347. package/development/popover/popover/popover.component.d.ts +45 -34
  348. package/development/popover/popover/popover.component.d.ts.map +1 -1
  349. package/development/popover/popover/popover.component.js +215 -172
  350. package/development/popover/popover-trigger/popover-trigger.component.js +1 -1
  351. package/development/popover/popover.js +2 -1
  352. package/development/popover.js +2 -1
  353. package/development/radio-button/common/radio-button-common.js +6 -10
  354. package/development/radio-button/radio-button/radio-button.component.js +2 -5
  355. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +1 -1
  356. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  357. package/development/radio-button/radio-button-group/radio-button-group.component.js +8 -24
  358. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +3 -7
  359. package/development/screen-reader-only/screen-reader-only.component.js +1 -1
  360. package/development/select/select.component.js +26 -49
  361. package/development/selection-expansion-panel/selection-expansion-panel.component.js +7 -11
  362. package/development/sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
  363. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
  364. package/development/sidebar/icon-sidebar-container/icon-sidebar-container.component.js +4 -7
  365. package/development/sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
  366. package/development/sidebar/icon-sidebar-link/icon-sidebar-link.component.js +1 -1
  367. package/development/sidebar/sidebar/sidebar.component.js +9 -16
  368. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +0 -1
  369. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
  370. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +3 -8
  371. package/development/sidebar/sidebar-container/sidebar-container.component.js +9 -13
  372. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  373. package/development/sidebar/sidebar-title/sidebar-title.component.d.ts +2 -0
  374. package/development/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
  375. package/development/sidebar/sidebar-title/sidebar-title.component.js +3 -9
  376. package/development/signet/signet.component.js +1 -1
  377. package/development/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  378. package/development/skiplink-list/skiplink-list.component.js +19 -10
  379. package/development/slider/slider.component.js +4 -6
  380. package/development/status/status.component.d.ts +4 -7
  381. package/development/status/status.component.d.ts.map +1 -1
  382. package/development/status/status.component.js +23 -56
  383. package/development/stepper/step/step.component.d.ts +2 -1
  384. package/development/stepper/step/step.component.d.ts.map +1 -1
  385. package/development/stepper/step/step.component.js +16 -15
  386. package/development/stepper/step-label/step-label.component.d.ts +3 -3
  387. package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
  388. package/development/stepper/step-label/step-label.component.js +16 -17
  389. package/development/stepper/stepper/stepper.component.js +16 -29
  390. package/development/table/table-wrapper/table-wrapper.component.js +2 -7
  391. package/development/tabs/tab/tab.component.js +1 -1
  392. package/development/tabs/tab-group/tab-group.component.js +23 -38
  393. package/development/tabs/tab-label/tab-label.component.js +1 -1
  394. package/development/tag/tag/tag.component.js +7 -13
  395. package/development/tag/tag-group/tag-group.component.js +5 -13
  396. package/development/teaser/teaser.component.d.ts +6 -10
  397. package/development/teaser/teaser.component.d.ts.map +1 -1
  398. package/development/teaser/teaser.component.js +48 -76
  399. package/development/teaser-hero/teaser-hero.component.js +1 -1
  400. package/development/teaser-product/common/teaser-product-common.js +1 -1
  401. package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
  402. package/development/teaser-product/teaser-product-static/teaser-product-static.component.js +1 -1
  403. package/development/time-input/time-input.component.js +10 -14
  404. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  405. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  406. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +2 -5
  407. package/development/title/title-base.d.ts +0 -8
  408. package/development/title/title-base.d.ts.map +1 -1
  409. package/development/title/title-base.js +17 -50
  410. package/development/title/title.component.d.ts +2 -0
  411. package/development/title/title.component.d.ts.map +1 -1
  412. package/development/title/title.component.js +9 -14
  413. package/development/toast/toast.component.d.ts.map +1 -1
  414. package/development/toast/toast.component.js +7 -16
  415. package/development/toggle/toggle/toggle.component.js +28 -30
  416. package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -1
  417. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  418. package/development/toggle/toggle-option/toggle-option.component.js +12 -19
  419. package/development/toggle-check/toggle-check.component.js +1 -1
  420. package/development/train/train/train.component.js +1 -1
  421. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  422. package/development/train/train-formation/train-formation.component.js +5 -7
  423. package/development/train/train-wagon/train-wagon.component.js +1 -1
  424. package/development/visual-checkbox/visual-checkbox.component.js +1 -1
  425. package/dialog/dialog/dialog.component.d.ts +7 -16
  426. package/dialog/dialog/dialog.component.d.ts.map +1 -1
  427. package/dialog/dialog/dialog.component.js +57 -87
  428. package/dialog/dialog-actions/dialog-actions.component.d.ts +2 -2
  429. package/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
  430. package/dialog/dialog-actions/dialog-actions.component.js +16 -16
  431. package/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
  432. package/dialog/dialog-content/dialog-content.component.js +14 -19
  433. package/dialog/dialog-title/dialog-title.component.d.ts +2 -26
  434. package/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
  435. package/dialog/dialog-title/dialog-title.component.js +16 -111
  436. package/divider/divider.component.js +3 -3
  437. package/expansion-panel/expansion-panel/expansion-panel.component.js +5 -9
  438. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +1 -1
  439. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +30 -31
  440. package/file-selector/common/file-selector-common.js +1 -2
  441. package/flip-card/flip-card/flip-card.component.js +48 -54
  442. package/flip-card/flip-card-details/flip-card-details.component.js +15 -16
  443. package/flip-card/flip-card-summary/flip-card-summary.component.js +19 -20
  444. package/form-error/form-error.component.js +13 -14
  445. package/form-field/form-field/form-field.component.d.ts +1 -1
  446. package/form-field/form-field/form-field.component.d.ts.map +1 -1
  447. package/form-field/form-field/form-field.component.js +149 -168
  448. package/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  449. package/form-field/form-field-clear/form-field-clear.component.js +19 -21
  450. package/header/header/header.component.js +26 -29
  451. package/icon/icon-base.d.ts +5 -3
  452. package/icon/icon-base.d.ts.map +1 -1
  453. package/icon/icon-base.js +32 -34
  454. package/icon/icon-request.js +10 -11
  455. package/icon/icon.component.d.ts +1 -2
  456. package/icon/icon.component.d.ts.map +1 -1
  457. package/icon/icon.component.js +37 -37
  458. package/icon-sidebar-button-common-CM-ueEhH.js +7 -0
  459. package/image/image.component.js +4 -6
  460. package/journey-header/journey-header.component.d.ts +5 -5
  461. package/journey-header/journey-header.component.d.ts.map +1 -1
  462. package/journey-header/journey-header.component.js +50 -63
  463. package/map-container/map-container.component.js +1 -2
  464. package/menu/menu/menu.component.js +47 -55
  465. package/message/message.component.d.ts +4 -8
  466. package/message/message.component.d.ts.map +1 -1
  467. package/message/message.component.js +18 -47
  468. package/navigation/common/navigation-action-common.js +19 -21
  469. package/navigation/navigation/navigation.component.js +73 -92
  470. package/navigation/navigation-marker/navigation-marker.component.js +26 -28
  471. package/navigation/navigation-section/navigation-section.component.d.ts +1 -1
  472. package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  473. package/navigation/navigation-section/navigation-section.component.js +72 -82
  474. package/notification/notification.component.d.ts +7 -9
  475. package/notification/notification.component.d.ts.map +1 -1
  476. package/notification/notification.component.js +77 -95
  477. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  478. package/option/optgroup/optgroup-base-element.js +36 -38
  479. package/option/optgroup/optgroup.component.js +16 -20
  480. package/option/option/option-base-element.js +3 -4
  481. package/option/option/option.component.js +26 -29
  482. package/overlay/overlay-base-element.d.ts +24 -6
  483. package/overlay/overlay-base-element.d.ts.map +1 -1
  484. package/overlay/overlay-base-element.js +98 -51
  485. package/overlay/overlay.component.d.ts +2 -12
  486. package/overlay/overlay.component.d.ts.map +1 -1
  487. package/overlay/overlay.component.js +57 -95
  488. package/package.json +1 -1
  489. package/paginator/paginator/paginator.component.js +3 -4
  490. package/popover/popover/popover.component.d.ts +45 -34
  491. package/popover/popover/popover.component.d.ts.map +1 -1
  492. package/popover/popover/popover.component.js +194 -168
  493. package/popover/popover-trigger/popover-trigger.component.js +1 -1
  494. package/popover/popover.js +2 -1
  495. package/popover.js +5 -4
  496. package/radio-button/common/radio-button-common.js +11 -15
  497. package/radio-button/radio-button/radio-button.component.js +16 -19
  498. package/radio-button/radio-button-group/radio-button-group.component.d.ts +1 -1
  499. package/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  500. package/radio-button/radio-button-group/radio-button-group.component.js +27 -43
  501. package/radio-button/radio-button-panel/radio-button-panel.component.js +33 -37
  502. package/select/select.component.js +94 -117
  503. package/selection-expansion-panel/selection-expansion-panel.component.js +35 -39
  504. package/sidebar/common.js +1 -1
  505. package/sidebar/icon-sidebar-container/icon-sidebar-container.component.js +10 -13
  506. package/sidebar/sidebar/sidebar.component.js +62 -69
  507. package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +0 -1
  508. package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
  509. package/sidebar/sidebar-close-button/sidebar-close-button.component.js +18 -18
  510. package/sidebar/sidebar-container/sidebar-container.component.js +29 -33
  511. package/sidebar/sidebar-title/sidebar-title.component.d.ts +2 -0
  512. package/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
  513. package/sidebar/sidebar-title/sidebar-title.component.js +16 -16
  514. package/sidebar.js +1 -1
  515. package/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  516. package/skiplink-list/skiplink-list.component.js +36 -39
  517. package/slider/slider.component.js +11 -13
  518. package/standard-theme.css +29 -26
  519. package/status/status.component.d.ts +4 -7
  520. package/status/status.component.d.ts.map +1 -1
  521. package/status/status.component.js +34 -50
  522. package/stepper/step/step.component.d.ts +2 -1
  523. package/stepper/step/step.component.d.ts.map +1 -1
  524. package/stepper/step/step.component.js +26 -24
  525. package/stepper/step-label/step-label.component.d.ts +3 -3
  526. package/stepper/step-label/step-label.component.d.ts.map +1 -1
  527. package/stepper/step-label/step-label.component.js +15 -15
  528. package/stepper/stepper/stepper.component.js +72 -86
  529. package/table/table-wrapper/table-wrapper.component.js +17 -18
  530. package/table.css +0 -25
  531. package/tabs/tab-group/tab-group.component.js +77 -92
  532. package/tabs/tab-label/tab-label.component.js +12 -12
  533. package/tag/tag/tag.component.js +49 -55
  534. package/tag/tag-group/tag-group.component.js +37 -45
  535. package/teaser/teaser.component.d.ts +6 -10
  536. package/teaser/teaser.component.d.ts.map +1 -1
  537. package/teaser/teaser.component.js +45 -68
  538. package/teaser-product/common.js +1 -1
  539. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  540. package/teaser-product-common-C8oSkIxy.js +5 -0
  541. package/teaser-product.js +1 -1
  542. package/time-input/time-input.component.js +29 -33
  543. package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  544. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +22 -25
  545. package/title/title-base.d.ts +0 -8
  546. package/title/title-base.d.ts.map +1 -1
  547. package/title/title-base.js +34 -53
  548. package/title/title.component.d.ts +2 -0
  549. package/title/title.component.d.ts.map +1 -1
  550. package/title/title.component.js +9 -9
  551. package/toast/toast.component.d.ts.map +1 -1
  552. package/toast/toast.component.js +6 -9
  553. package/toggle/toggle/toggle.component.js +36 -40
  554. package/toggle/toggle-option/toggle-option.component.d.ts +1 -1
  555. package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  556. package/toggle/toggle-option/toggle-option.component.js +44 -51
  557. package/train/train-formation/train-formation.component.js +41 -43
  558. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +0 -530
  559. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +0 -1123
  560. package/datepicker/common/datepicker-association-controllers.d.ts +0 -21
  561. package/datepicker/common/datepicker-association-controllers.d.ts.map +0 -1
  562. package/datepicker/common/datepicker-association-controllers.js +0 -58
  563. package/development/datepicker/common/datepicker-association-controllers.d.ts +0 -21
  564. package/development/datepicker/common/datepicker-association-controllers.d.ts.map +0 -1
  565. package/development/datepicker/common/datepicker-association-controllers.js +0 -82
  566. package/icon-sidebar-button-common-DG8bnrBu.js +0 -7
  567. package/teaser-product-common-CpMAlYEp.js +0 -5
@@ -121,7 +121,6 @@ let SbbStepperElement = (() => {
121
121
  let _set_selectedIndex_decorators;
122
122
  _a = class extends _classSuper {
123
123
  constructor() {
124
- var _a2, _b;
125
124
  super();
126
125
  __privateAdd(this, _linear_accessor_storage);
127
126
  __privateAdd(this, _orientation_accessor_storage);
@@ -150,8 +149,8 @@ let SbbStepperElement = (() => {
150
149
  this.toggleAttribute("data-disable-animation", true);
151
150
  this._resizeObserverTimeout = setTimeout(() => this.toggleAttribute("data-disable-animation", false), DEBOUNCE_TIME);
152
151
  };
153
- (_a2 = this.addEventListener) == null ? void 0 : _a2.call(this, "keydown", (e) => this._handleKeyDown(e));
154
- (_b = this.addEventListener) == null ? void 0 : _b.call(this, "resizeChange", (e) => this._onSelectedStepResize(e));
152
+ this.addEventListener?.("keydown", (e) => this._handleKeyDown(e));
153
+ this.addEventListener?.("resizeChange", (e) => this._onSelectedStepResize(e));
155
154
  }
156
155
  /** If set to true, only the current and previous labels can be clicked and selected. */
157
156
  get linear() {
@@ -194,8 +193,7 @@ let SbbStepperElement = (() => {
194
193
  }
195
194
  }
196
195
  get selected() {
197
- var _a2;
198
- return ((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-step[data-selected]")) ?? null;
196
+ return this.querySelector?.("sbb-step[data-selected]") ?? null;
199
197
  }
200
198
  /** The currently selected step index. */
201
199
  set selectedIndex(index) {
@@ -208,14 +206,10 @@ let SbbStepperElement = (() => {
208
206
  }
209
207
  /** The steps of the stepper. */
210
208
  get steps() {
211
- var _a2;
212
- return Array.from(((_a2 = this.querySelectorAll) == null ? void 0 : _a2.call(this, "sbb-step")) ?? []);
209
+ return Array.from(this.querySelectorAll?.("sbb-step") ?? []);
213
210
  }
214
211
  get _enabledSteps() {
215
- return this.steps.filter((s) => {
216
- var _a2;
217
- return !((_a2 = s.label) == null ? void 0 : _a2.hasAttribute("disabled"));
218
- });
212
+ return this.steps.filter((s) => !s.label?.hasAttribute("disabled"));
219
213
  }
220
214
  /** Selects the next step. */
221
215
  next() {
@@ -231,7 +225,6 @@ let SbbStepperElement = (() => {
231
225
  }
232
226
  /** Resets the form in which the stepper is nested or every form of each step, if any. */
233
227
  reset() {
234
- var _a2, _b, _c;
235
228
  const closestForm = this.closest("form");
236
229
  if (closestForm) {
237
230
  closestForm.reset();
@@ -239,13 +232,12 @@ let SbbStepperElement = (() => {
239
232
  this.querySelectorAll("form").forEach((form) => form.reset());
240
233
  }
241
234
  this.selectedIndex = 0;
242
- if (((_a2 = document.activeElement) == null ? void 0 : _a2.closest("sbb-stepper")) === this) {
243
- (_c = (_b = this.selected) == null ? void 0 : _b.label) == null ? void 0 : _c.focus();
235
+ if (document.activeElement?.closest("sbb-stepper") === this) {
236
+ this.selected?.label?.focus();
244
237
  }
245
238
  }
246
239
  _isValidStep(step) {
247
- var _a2;
248
- if (!step || !this.linear && ((_a2 = step.label) == null ? void 0 : _a2.hasAttribute("disabled"))) {
240
+ if (!step || !this.linear && step.label?.hasAttribute("disabled")) {
249
241
  return false;
250
242
  }
251
243
  if (this.linear && !this.selected) {
@@ -258,7 +250,6 @@ let SbbStepperElement = (() => {
258
250
  return true;
259
251
  }
260
252
  _select(step) {
261
- var _a2, _b, _c;
262
253
  if (!this._isValidStep(step)) {
263
254
  return;
264
255
  }
@@ -272,13 +263,13 @@ let SbbStepperElement = (() => {
272
263
  return;
273
264
  }
274
265
  const current = this.selected;
275
- current == null ? void 0 : current.deselect();
266
+ current?.deselect();
276
267
  step.select();
277
268
  this._setMarkerSize();
278
269
  this._setStepperHeight(step);
279
270
  this._configureLinearMode();
280
- if (((_a2 = document.activeElement) == null ? void 0 : _a2.closest("sbb-stepper")) === this) {
281
- (_c = (_b = this.selected) == null ? void 0 : _b.label) == null ? void 0 : _c.focus();
271
+ if (document.activeElement?.closest("sbb-stepper") === this) {
272
+ this.selected?.label?.focus();
282
273
  }
283
274
  }
284
275
  _setMarkerSize() {
@@ -292,11 +283,10 @@ let SbbStepperElement = (() => {
292
283
  * Sets the stepper height based on the height of the provided step.
293
284
  */
294
285
  _setStepperHeight(step) {
295
- var _a2;
296
286
  if (step && step.shadowRoot) {
297
287
  const innerElement = step.shadowRoot.querySelector(".sbb-step");
298
288
  if (innerElement) {
299
- (_a2 = this.style) == null ? void 0 : _a2.setProperty("--sbb-stepper-content-height", `${innerElement.offsetHeight}px`);
289
+ this.style?.setProperty("--sbb-stepper-content-height", `${innerElement.offsetHeight}px`);
300
290
  }
301
291
  }
302
292
  }
@@ -327,10 +317,9 @@ let SbbStepperElement = (() => {
327
317
  }
328
318
  _updateLabels() {
329
319
  this.steps.forEach((step) => {
330
- var _a2;
331
320
  step.slot = this.orientation === "horizontal" ? "step" : "step-label";
332
321
  step.setAttribute("data-orientation", this.orientation);
333
- (_a2 = step.label) == null ? void 0 : _a2.setAttribute("data-orientation", this.orientation);
322
+ step.label?.setAttribute("data-orientation", this.orientation);
334
323
  });
335
324
  }
336
325
  _checkOrientation() {
@@ -342,8 +331,7 @@ let SbbStepperElement = (() => {
342
331
  }
343
332
  _configureLinearMode() {
344
333
  this.steps.forEach((step, index) => {
345
- var _a2;
346
- (_a2 = step.label) == null ? void 0 : _a2.toggleAttribute("disabled", this.linear && index > this.selectedIndex || !this.linear && step.label.hasAttribute("data-disabled"));
334
+ step.label?.toggleAttribute("disabled", this.linear && index > this.selectedIndex || !this.linear && step.label.hasAttribute("data-disabled"));
347
335
  });
348
336
  }
349
337
  connectedCallback() {
@@ -383,8 +371,7 @@ let SbbStepperElement = (() => {
383
371
  }
384
372
  _proxySize() {
385
373
  this.steps.forEach((step) => {
386
- var _a2;
387
- (_a2 = step.label) == null ? void 0 : _a2.setAttribute("data-size", this.size);
374
+ step.label?.setAttribute("data-size", this.size);
388
375
  });
389
376
  }
390
377
  _handleKeyDown(evt) {
@@ -447,4 +434,4 @@ let SbbStepperElement = (() => {
447
434
  export {
448
435
  SbbStepperElement
449
436
  };
450
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9zdGVwcGVyL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4LCBpc0Fycm93S2V5UHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgYnJlYWtwb2ludHMsIGlzQnJlYWtwb2ludCwgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSwgU2JiT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlN0ZXBFbGVtZW50LCBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgfSBmcm9tICcuLi9zdGVwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3RlcHBlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgc3RydWN0dXJlZCwgc3RlcC1ieS1zdGVwIHdvcmtmbG93IGZvciB1c2VyIGludGVyYWN0aW9ucy5cbiAqIEBzbG90IC0gUHJvdmlkZSBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgdG8gdGhlIHN0ZXBwZXIuXG4gKiBAc2xvdCBzdGVwLWxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcC1sYWJlbGAuXG4gKiBAc2xvdCBzdGVwIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zdGVwcGVyJylcbmNsYXNzIFNiYlN0ZXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogSWYgdGhlIHNiYi1zdGVwcGVyIGlzIHVzZWQgaW4gYSBzYmItZGlhbG9nLCB0aGUgbWFya2VyIG9uIHRoZSBzZWxlY3RlZCBlbGVtZW50IHdpbGwgbm90IGFwcGVhcixcbiAgICogYmVjYXVzZSB0aGUgY2FsY3VsYXRpb25zIGFyZSBkb25lIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQsIHNvIHRoZSBtYXJrZXIgaGFzIGEgd2lkdGggb2YgMDtcbiAgICogdGhlIHNhbWUgaGFwcGVucyBmb3IgdGhlIHN0ZXBwZXIgaGVpZ2h0LlxuICAgKiBXZSBuZWVkIHRvIHJlY2FsY3VsYXRlIGl0IHdoZW4gdGhlIGVsZW1lbnQgYmVjb21lcyB2aXNpYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGlmIChlLmludGVyc2VjdGlvblJhdGlvID4gMCkge1xuICAgICAgICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIG9ubHkgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGxhYmVscyBjYW4gYmUgY2xpY2tlZCBhbmQgc2VsZWN0ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsaW5lYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBiZWhhdmlvdXIgb2YgYG9yaWVudGF0aW9uYCBwcm9wZXJ0eS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaG9yaXpvbnRhbC1mcm9tJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxGcm9tKHZhbHVlOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsRnJvbSA9IHZhbHVlICYmIGJyZWFrcG9pbnRzLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbiAgICBpZiAodGhpcy5faG9yaXpvbnRhbEZyb20gJiYgdGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEZyb20oKTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEZyb207XG4gIH1cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEZyb206IFNiYkhvcml6b250YWxGcm9tIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFN0ZXBzIG9yaWVudGF0aW9uLCBlaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIG9yIG0uXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3Qoc3RlcCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogU2JiU3RlcEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yPy48U2JiU3RlcEVsZW1lbnQ+KCdzYmItc3RlcFtkYXRhLXNlbGVjdGVkXScpID8/IG51bGw7XG4gIH1cblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwIGluZGV4LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICYmIGluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1tpbmRleF0pO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPyB0aGlzLnN0ZXBzLmluZGV4T2YodGhpcy5zZWxlY3RlZCkgOiBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBzdGVwcyBvZiB0aGUgc3RlcHBlci4gKi9cbiAgcHVibGljIGdldCBzdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLXN0ZXAnKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZW5hYmxlZFN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcigocykgPT4gIXMubGFiZWw/Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdyZXNpemVDaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+XG4gICAgICB0aGlzLl9vblNlbGVjdGVkU3RlcFJlc2l6ZShlKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIG5leHQgc3RlcC4gKi9cbiAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbdGhpcy5zZWxlY3RlZEluZGV4ICsgMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3RzIHRoZSBwcmV2aW91cyBzdGVwLiAqL1xuICBwdWJsaWMgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbdGhpcy5zZWxlY3RlZEluZGV4IC0gMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIGZvcm0gaW4gd2hpY2ggdGhlIHN0ZXBwZXIgaXMgbmVzdGVkIG9yIGV2ZXJ5IGZvcm0gb2YgZWFjaCBzdGVwLCBpZiBhbnkuICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9zZXN0Rm9ybSA9IHRoaXMuY2xvc2VzdCgnZm9ybScpO1xuICAgIGlmIChjbG9zZXN0Rm9ybSkge1xuICAgICAgY2xvc2VzdEZvcm0ucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdmb3JtJykuZm9yRWFjaCgoZm9ybSkgPT4gZm9ybS5yZXNldCgpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSByZXNldCB0aGUgZm9jdXMgdG8gdGhlIGZpcnN0L3NlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWRTdGVwKHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghc3RlcCB8fCAoIXRoaXMubGluZWFyICYmIHN0ZXAubGFiZWw/Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saW5lYXIgJiYgIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiBzdGVwID09PSB0aGlzLnN0ZXBzWzBdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpbmVhciAmJiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zdGVwcy5pbmRleE9mKHN0ZXApO1xuICAgICAgcmV0dXJuIGluZGV4IDwgdGhpcy5zZWxlY3RlZEluZGV4IHx8IGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXggKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0KHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNWYWxpZFN0ZXAoc3RlcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICAgIGN1cnJlbnRTdGVwOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgbmV4dEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwgPyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxIDogbnVsbCxcbiAgICAgIG5leHRTdGVwOiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwgPyB0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCArIDFdIDogbnVsbCxcbiAgICB9O1xuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGVkLnZhbGlkYXRlKHZhbGlkYXRlUGF5bG9hZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgY3VycmVudD8uZGVzZWxlY3QoKTtcbiAgICBzdGVwIS5zZWxlY3QoKTtcbiAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChzdGVwKTtcbiAgICB0aGlzLl9jb25maWd1cmVMaW5lYXJNb2RlKCk7XG4gICAgLy8gSW4gY2FzZSB0aGUgZm9jdXMgaXMgY3VycmVudGx5IGluc2lkZSB0aGUgc3RlcHBlciwgd2UgZm9jdXMgdGhlIHNlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldE1hcmtlclNpemUoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2xvYWRlZCB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWQgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZC5sYWJlbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRMZWZ0ICsgdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRXaWR0aFxuICAgICAgICA6IHRoaXMuX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk7XG5cbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplJywgYCR7b2Zmc2V0fXB4YCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RlcHBlciBoZWlnaHQgYmFzZWQgb24gdGhlIGhlaWdodCBvZiB0aGUgcHJvdmlkZWQgc3RlcC5cbiAgICovXG4gIHByaXZhdGUgX3NldFN0ZXBwZXJIZWlnaHQoc3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0ZXAgJiYgc3RlcC5zaGFkb3dSb290KSB7XG4gICAgICBjb25zdCBpbm5lckVsZW1lbnQ6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCA9IHN0ZXAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0ZXAnKTtcbiAgICAgIGlmIChpbm5lckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItY29udGVudC1oZWlnaHQnLCBgJHtpbm5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XG4gICAgICBpZiAoc3RlcCA9PT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9mZnNldCA9IHN0ZXAubGFiZWwhLm9mZnNldEhlaWdodCArIG9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIG9mZnNldCArXG4gICAgICB0aGlzLnNlbGVjdGVkIS5sYWJlbCEub2Zmc2V0SGVpZ2h0ISArXG4gICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItc3BhY2luZy1maXhlZC02eCcpKSAqXG4gICAgICAgIDE2ICpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0ZWRTdGVwUmVzaXplKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChlLnRhcmdldCBhcyBTYmJTdGVwRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBzO1xuICAgIHN0ZXBzLmZvckVhY2goKHMpID0+IHMuY29uZmlndXJlKHRoaXMuX2xvYWRlZCkpO1xuICAgIHN0ZXBzXG4gICAgICAuZmlsdGVyKChzKSA9PiBzLmxhYmVsKVxuICAgICAgLm1hcCgocykgPT4gcy5sYWJlbCEpXG4gICAgICAuZm9yRWFjaCgobGFiZWwsIGksIGFycmF5KSA9PiB7XG4gICAgICAgIGxhYmVsLmNvbmZpZ3VyZShpICsgMSwgYXJyYXkubGVuZ3RoLCB0aGlzLl9sb2FkZWQpO1xuICAgICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0KHRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5fZW5hYmxlZFN0ZXBzWzBdKTtcbiAgICB0aGlzLl9wcm94eVNpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUxhYmVscygpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAuc2xvdCA9IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICdzdGVwJyA6ICdzdGVwLWxhYmVsJztcbiAgICAgIHN0ZXAuc2V0QXR0cmlidXRlKCdkYXRhLW9yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgICBzdGVwLmxhYmVsPy5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSBpc0JyZWFrcG9pbnQodGhpcy5ob3Jpem9udGFsRnJvbSkgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgICAgdGhpcy5fdXBkYXRlTGFiZWxzKCk7XG4gICAgfVxuICAgIC8vIFRoZSB0aW1lb3V0IGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbWFya2VyIHRha2VzIHRoZSBjb3JyZWN0IHN0ZXAtbGFiZWwgc2l6ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3NldE1hcmtlclNpemUoKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9vblN0ZXBwZXJSZXNpemUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQodGhpcy5zZWxlY3RlZCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCEpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgdHJ1ZSk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0byBhdm9pZCBzdHJhbmdlIHRyYW5zaXRpb24gZWZmZWN0cy5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZS1hbmltYXRpb24nLCBmYWxzZSksXG4gICAgICBERUJPVU5DRV9USU1FLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlTGluZWFyTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICBzdGVwLmxhYmVsPy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICh0aGlzLmxpbmVhciAmJiBpbmRleCA+IHRoaXMuc2VsZWN0ZWRJbmRleCEpIHx8XG4gICAgICAgICAgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlZCcpKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgIXRoaXMuX2xvYWRlZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMubGluZWFyID8gMCA6IE51bWJlcih0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQtaW5kZXgnKSkgfHwgMDtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgICAvLyBSZW1vdmUgW2RhdGEtZGlzYWJsZS1hbmltYXRpb25dIGFmdGVyIGNvbXBvbmVudCBpbml0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgZmFsc2UpLCBERUJPVU5DRV9USU1FKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykgJiYgIXRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaW5lYXInKSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5U2l6ZSgpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Byb3h5U2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAubGFiZWw/LnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gdGhpcy5fZW5hYmxlZFN0ZXBzO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRTdGVwcyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRTdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQhKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRTdGVwcy5sZW5ndGgpO1xuICAgICAgdGhpcy5fc2VsZWN0KGVuYWJsZWRTdGVwc1tuZXh0SW5kZXhdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fbGFiZWxzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3RlcC1sYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX3N0ZXBzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXBcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwcGVyJzogU2JiU3RlcHBlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNLGdCQUFnQjtJQVVoQixxQkFBaUIsTUFBQTs7MEJBRHRCLGNBQWMsYUFBYSxDQUFDOzs7O29CQUNHLGtCQUFrQixVQUFVOzs7Ozs7Ozs7Ozs7OztBQUFwQyxFQUFBLG1CQUFRLFlBQTZCO0FBQUEsSUFtRjNELGNBQUE7OztBQTNEQTtBQWlCQTtBQU02QjtBQXRDckIsV0FBQSxhQVRKLGtCQUFpQixNQUFBLDBCQUFBLEdBU0QsSUFBSSx1QkFBdUIsTUFBTTtBQUFBLFFBQ25ELFFBQVE7QUFBQSxRQUNSLFVBQVUsQ0FBQyxZQUFXO0FBQ1osa0JBQUEsUUFBUSxDQUFDLE1BQUs7QUFDaEIsZ0JBQUEsRUFBRSxvQkFBb0IsR0FBRztBQUN0QixtQkFBQSxrQkFBa0IsS0FBSyxRQUFRO0FBQ3BDLG1CQUFLLGVBQWM7QUFBQSxZQUFBO0FBQUEsVUFDckIsQ0FDRDtBQUFBLFFBQUE7QUFBQSxNQUNILENBQ0Q7QUFLZSx5QkFBQSwwQkFBQSxrQkFBQSxNQUFBLHNCQUFrQixLQUFLO0FBYS9CLFdBQWUsbUJBQUEsa0JBQUEsTUFBQSx5QkFBQSxHQUE2QjtBQUlwQyx5QkFBQSwrQkFBQSxrQkFBQSxNQUFBLDJCQUE4QixZQUFZO0FBTUsseUJBQUEseUJBQUEsa0JBQUEsTUFBQSw4QkFBQSxH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
437
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9zdGVwcGVyL3N0ZXBwZXIvc3RlcHBlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJzZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvaW50ZXJzZWN0aW9uLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4LCBpc0Fycm93S2V5UHJlc3NlZCB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgYnJlYWtwb2ludHMsIGlzQnJlYWtwb2ludCwgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSwgU2JiT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlN0ZXBFbGVtZW50LCBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgfSBmcm9tICcuLi9zdGVwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3RlcHBlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgc3RydWN0dXJlZCwgc3RlcC1ieS1zdGVwIHdvcmtmbG93IGZvciB1c2VyIGludGVyYWN0aW9ucy5cbiAqIEBzbG90IC0gUHJvdmlkZSBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgdG8gdGhlIHN0ZXBwZXIuXG4gKiBAc2xvdCBzdGVwLWxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcC1sYWJlbGAuXG4gKiBAc2xvdCBzdGVwIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zdGVwcGVyJylcbmNsYXNzIFNiYlN0ZXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKipcbiAgICogSWYgdGhlIHNiYi1zdGVwcGVyIGlzIHVzZWQgaW4gYSBzYmItZGlhbG9nLCB0aGUgbWFya2VyIG9uIHRoZSBzZWxlY3RlZCBlbGVtZW50IHdpbGwgbm90IGFwcGVhcixcbiAgICogYmVjYXVzZSB0aGUgY2FsY3VsYXRpb25zIGFyZSBkb25lIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQsIHNvIHRoZSBtYXJrZXIgaGFzIGEgd2lkdGggb2YgMDtcbiAgICogdGhlIHNhbWUgaGFwcGVucyBmb3IgdGhlIHN0ZXBwZXIgaGVpZ2h0LlxuICAgKiBXZSBuZWVkIHRvIHJlY2FsY3VsYXRlIGl0IHdoZW4gdGhlIGVsZW1lbnQgYmVjb21lcyB2aXNpYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGlmIChlLmludGVyc2VjdGlvblJhdGlvID4gMCkge1xuICAgICAgICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQodGhpcy5zZWxlY3RlZCk7XG4gICAgICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIG9ubHkgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGxhYmVscyBjYW4gYmUgY2xpY2tlZCBhbmQgc2VsZWN0ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsaW5lYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBiZWhhdmlvdXIgb2YgYG9yaWVudGF0aW9uYCBwcm9wZXJ0eS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaG9yaXpvbnRhbC1mcm9tJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxGcm9tKHZhbHVlOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3Jpem9udGFsRnJvbSA9IHZhbHVlICYmIGJyZWFrcG9pbnRzLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbiAgICBpZiAodGhpcy5faG9yaXpvbnRhbEZyb20gJiYgdGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgaG9yaXpvbnRhbEZyb20oKTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEZyb207XG4gIH1cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEZyb206IFNiYkhvcml6b250YWxGcm9tIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFN0ZXBzIG9yaWVudGF0aW9uLCBlaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBzIG9yIG0uXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdzJyB8ICdtJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3Qoc3RlcCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogU2JiU3RlcEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yPy48U2JiU3RlcEVsZW1lbnQ+KCdzYmItc3RlcFtkYXRhLXNlbGVjdGVkXScpID8/IG51bGw7XG4gIH1cblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwIGluZGV4LiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fbG9hZGVkICYmIGluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9zZWxlY3QodGhpcy5zdGVwc1tpbmRleF0pO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPyB0aGlzLnN0ZXBzLmluZGV4T2YodGhpcy5zZWxlY3RlZCkgOiBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBzdGVwcyBvZiB0aGUgc3RlcHBlci4gKi9cbiAgcHVibGljIGdldCBzdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLXN0ZXAnKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZW5hYmxlZFN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcigocykgPT4gIXMubGFiZWw/Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdyZXNpemVDaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+XG4gICAgICB0aGlzLl9vblNlbGVjdGVkU3RlcFJlc2l6ZShlKSxcbiAgICApO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIG5leHQgc3RlcC4gKi9cbiAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbdGhpcy5zZWxlY3RlZEluZGV4ICsgMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3RzIHRoZSBwcmV2aW91cyBzdGVwLiAqL1xuICBwdWJsaWMgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbdGhpcy5zZWxlY3RlZEluZGV4IC0gMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIGZvcm0gaW4gd2hpY2ggdGhlIHN0ZXBwZXIgaXMgbmVzdGVkIG9yIGV2ZXJ5IGZvcm0gb2YgZWFjaCBzdGVwLCBpZiBhbnkuICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9zZXN0Rm9ybSA9IHRoaXMuY2xvc2VzdCgnZm9ybScpO1xuICAgIGlmIChjbG9zZXN0Rm9ybSkge1xuICAgICAgY2xvc2VzdEZvcm0ucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdmb3JtJykuZm9yRWFjaCgoZm9ybSkgPT4gZm9ybS5yZXNldCgpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSByZXNldCB0aGUgZm9jdXMgdG8gdGhlIGZpcnN0L3NlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWRTdGVwKHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghc3RlcCB8fCAoIXRoaXMubGluZWFyICYmIHN0ZXAubGFiZWw/Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saW5lYXIgJiYgIXRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiBzdGVwID09PSB0aGlzLnN0ZXBzWzBdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpbmVhciAmJiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zdGVwcy5pbmRleE9mKHN0ZXApO1xuICAgICAgcmV0dXJuIGluZGV4IDwgdGhpcy5zZWxlY3RlZEluZGV4IHx8IGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXggKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0KHN0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNWYWxpZFN0ZXAoc3RlcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICAgIGN1cnJlbnRTdGVwOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgbmV4dEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwgPyB0aGlzLnNlbGVjdGVkSW5kZXggKyAxIDogbnVsbCxcbiAgICAgIG5leHRTdGVwOiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwgPyB0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCArIDFdIDogbnVsbCxcbiAgICB9O1xuICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnNlbGVjdGVkLnZhbGlkYXRlKHZhbGlkYXRlUGF5bG9hZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgY3VycmVudD8uZGVzZWxlY3QoKTtcbiAgICBzdGVwIS5zZWxlY3QoKTtcbiAgICB0aGlzLl9zZXRNYXJrZXJTaXplKCk7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChzdGVwKTtcbiAgICB0aGlzLl9jb25maWd1cmVMaW5lYXJNb2RlKCk7XG4gICAgLy8gSW4gY2FzZSB0aGUgZm9jdXMgaXMgY3VycmVudGx5IGluc2lkZSB0aGUgc3RlcHBlciwgd2UgZm9jdXMgdGhlIHNlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldE1hcmtlclNpemUoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2xvYWRlZCB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWQgfHxcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZC5sYWJlbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRMZWZ0ICsgdGhpcy5zZWxlY3RlZC5sYWJlbC5vZmZzZXRXaWR0aFxuICAgICAgICA6IHRoaXMuX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk7XG5cbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi1zdGVwcGVyLW1hcmtlci1zaXplJywgYCR7b2Zmc2V0fXB4YCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RlcHBlciBoZWlnaHQgYmFzZWQgb24gdGhlIGhlaWdodCBvZiB0aGUgcHJvdmlkZWQgc3RlcC5cbiAgICovXG4gIHByaXZhdGUgX3NldFN0ZXBwZXJIZWlnaHQoc3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHN0ZXAgJiYgc3RlcC5zaGFkb3dSb290KSB7XG4gICAgICBjb25zdCBpbm5lckVsZW1lbnQ6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCA9IHN0ZXAuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuc2JiLXN0ZXAnKTtcbiAgICAgIGlmIChpbm5lckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItY29udGVudC1oZWlnaHQnLCBgJHtpbm5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XG4gICAgICBpZiAoc3RlcCA9PT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9mZnNldCA9IHN0ZXAubGFiZWwhLm9mZnNldEhlaWdodCArIG9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIG9mZnNldCArXG4gICAgICB0aGlzLnNlbGVjdGVkIS5sYWJlbCEub2Zmc2V0SGVpZ2h0ISArXG4gICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItc3BhY2luZy1maXhlZC02eCcpKSAqXG4gICAgICAgIDE2ICpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0ZWRTdGVwUmVzaXplKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgdGhpcy5fc2V0U3RlcHBlckhlaWdodChlLnRhcmdldCBhcyBTYmJTdGVwRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBzO1xuICAgIHN0ZXBzLmZvckVhY2goKHMpID0+IHMuY29uZmlndXJlKHRoaXMuX2xvYWRlZCkpO1xuICAgIHN0ZXBzXG4gICAgICAuZmlsdGVyKChzKSA9PiBzLmxhYmVsKVxuICAgICAgLm1hcCgocykgPT4gcy5sYWJlbCEpXG4gICAgICAuZm9yRWFjaCgobGFiZWwsIGksIGFycmF5KSA9PiB7XG4gICAgICAgIGxhYmVsLmNvbmZpZ3VyZShpICsgMSwgYXJyYXkubGVuZ3RoLCB0aGlzLl9sb2FkZWQpO1xuICAgICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0KHRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5fZW5hYmxlZFN0ZXBzWzBdKTtcbiAgICB0aGlzLl9wcm94eVNpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUxhYmVscygpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAuc2xvdCA9IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICdzdGVwJyA6ICdzdGVwLWxhYmVsJztcbiAgICAgIHN0ZXAuc2V0QXR0cmlidXRlKCdkYXRhLW9yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgICBzdGVwLmxhYmVsPy5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSBpc0JyZWFrcG9pbnQodGhpcy5ob3Jpem9udGFsRnJvbSkgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgICAgdGhpcy5fdXBkYXRlTGFiZWxzKCk7XG4gICAgfVxuICAgIC8vIFRoZSB0aW1lb3V0IGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbWFya2VyIHRha2VzIHRoZSBjb3JyZWN0IHN0ZXAtbGFiZWwgc2l6ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3NldE1hcmtlclNpemUoKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9vblN0ZXBwZXJSZXNpemUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIHRoaXMuX3NldFN0ZXBwZXJIZWlnaHQodGhpcy5zZWxlY3RlZCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCEpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgdHJ1ZSk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0byBhdm9pZCBzdHJhbmdlIHRyYW5zaXRpb24gZWZmZWN0cy5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZS1hbmltYXRpb24nLCBmYWxzZSksXG4gICAgICBERUJPVU5DRV9USU1FLFxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlTGluZWFyTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICBzdGVwLmxhYmVsPy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICh0aGlzLmxpbmVhciAmJiBpbmRleCA+IHRoaXMuc2VsZWN0ZWRJbmRleCEpIHx8XG4gICAgICAgICAgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlZCcpKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgIXRoaXMuX2xvYWRlZCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fb25TdGVwcGVyUmVzaXplKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMubGluZWFyID8gMCA6IE51bWJlcih0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQtaW5kZXgnKSkgfHwgMDtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcyk7XG4gICAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgICAvLyBSZW1vdmUgW2RhdGEtZGlzYWJsZS1hbmltYXRpb25dIGFmdGVyIGNvbXBvbmVudCBpbml0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgZmFsc2UpLCBERUJPVU5DRV9USU1FKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykgJiYgIXRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaW5lYXInKSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5U2l6ZSgpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Byb3h5U2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAubGFiZWw/LnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gdGhpcy5fZW5hYmxlZFN0ZXBzO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRTdGVwcyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRTdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQhKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRTdGVwcy5sZW5ndGgpO1xuICAgICAgdGhpcy5fc2VsZWN0KGVuYWJsZWRTdGVwc1tuZXh0SW5kZXhdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fbGFiZWxzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3RlcC1sYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX3N0ZXBzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXBcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwcGVyJzogU2JiU3RlcHBlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sZ0JBQWdCO0lBVWhCLHFCQUFpQixNQUFBOzswQkFEdEIsY0FBYyxhQUFhLENBQUM7Ozs7b0JBQ0csa0JBQWtCLFVBQVU7Ozs7Ozs7Ozs7Ozs7O0FBQXBDLEVBQUEsbUJBQVEsWUFBNkI7QUFBQSxJQW1GM0QsY0FBQTtBQUNFLFlBQUE7QUE1REY7QUFpQkE7QUFNNkI7QUF0Q3JCLFdBQUEsYUFUSixrQkFBQSxNQUFBLDBCQUFBLEdBU2dCLElBQUksdUJBQXVCLE1BQU07QUFBQSxRQUNuRCxRQUFRO0FBQUEsUUFDUixVQUFVLENBQUMsWUFBVztBQUNwQixrQkFBUSxRQUFRLENBQUMsTUFBSztBQUNwQixnQkFBSSxFQUFFLG9CQUFvQixHQUFHO0FBQzNCLG1CQUFLLGtCQUFrQixLQUFLLFFBQVE7QUFDcEMsbUJBQUssZUFBQTtBQUFBLFlBQWM7QUFBQSxVQUNyQixDQUNEO0FBQUEsUUFBQTtBQUFBLE1BQ0gsQ0FDRDtBQUtlLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsc0JBQWtCLEtBQUs7QUFhL0IsV0FBQSxtQkFBZSxrQkFBQSxNQUFBLHlCQUFBLEdBQTZCO0FBSXBDLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsMkJBQThCLFlBQVk7QUFNYix5QkFBQSx5QkFBQSxrQkFBQSxNQUFBLDhC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
@@ -22,10 +22,6 @@ const style = css`*,
22
22
  overflow: auto;
23
23
  }
24
24
 
25
- :host(:not(.sbb-table-wrapper-offset-none)) {
26
- padding-bottom: var(--sbb-spacing-fixed-1x);
27
- }
28
-
29
25
  :host(:focus-visible) {
30
26
  outline-offset: var(--sbb-focus-outline-offset);
31
27
  outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
@@ -46,7 +42,6 @@ let SbbTableWrapperElement = (() => {
46
42
  let _focusable_extraInitializers = [];
47
43
  _a = class extends _classSuper {
48
44
  constructor() {
49
- var _a2;
50
45
  super();
51
46
  __privateAdd(this, _focusable_accessor_storage, __runInitializers(this, _focusable_initializers, false));
52
47
  __runInitializers(this, _focusable_extraInitializers);
@@ -54,7 +49,7 @@ let SbbTableWrapperElement = (() => {
54
49
  skipInitial: true,
55
50
  callback: () => this._checkHorizontalScrollbarOffset()
56
51
  }));
57
- (_a2 = this.addEventListener) == null ? void 0 : _a2.call(this, "scroll", () => this._checkHorizontalScrollbarOffset(), {
52
+ this.addEventListener?.("scroll", () => this._checkHorizontalScrollbarOffset(), {
58
53
  passive: true
59
54
  });
60
55
  }
@@ -134,4 +129,4 @@ let SbbTableWrapperElement = (() => {
134
129
  export {
135
130
  SbbTableWrapperElement
136
131
  };
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90YWJsZS90YWJsZS13cmFwcGVyL3RhYmxlLXdyYXBwZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYmxlLXdyYXBwZXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBXcmFwcyBhIHRhYmxlIHRvIGVuaGFuY2UgaXRzIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgdGhlIHRhYmxlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGFibGUtd3JhcHBlcicpXG5jbGFzcyBTYmJUYWJsZVdyYXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3NlY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFibGUgd3JhcHBlciBpcyBmb2N1c2FibGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2N1c2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5fY2hlY2tIb3Jpem9udGFsU2Nyb2xsYmFyT2Zmc2V0KCksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3Njcm9sbCcsICgpID0+IHRoaXMuX2NoZWNrSG9yaXpvbnRhbFNjcm9sbGJhck9mZnNldCgpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBBcyB3ZSBjYW4ndCBpbmNsdWRlIHRoZSBzY3JvbGxiYXIgbWl4aW4gb24gdGhlIGhvc3QgYW5kIHRvIG1pbmltaXplXG4gICAgLy8gcGF5bG9hZCwgd2UgZGVjaWRlZCB0byBhZGQgdGhlIHNjcm9sbGJhciBjbGFzcyBoZXJlLlxuICAgIC8vIFRoaXMgaXMgYW4gZXhjZXB0aW9uIGFzIHdlIG5vcm1hbGx5IGRvbid0IGFsdGVyIHRoZSBjbGFzc0xpc3Qgb2YgdGhlIGhvc3QuXG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyQ2xhc3MoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZm9jdXNhYmxlJykpIHtcbiAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpKSB7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyQ2xhc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTY3JvbGxiYXJDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUpIHtcbiAgICAgIHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgnc2JiLXNjcm9sbGJhci10aGljay10cmFjay12aXNpYmxlJyk7XG4gICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NiYi1zY3JvbGxiYXItdGhpY2stbmVnYXRpdmUtdHJhY2stdmlzaWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoJ3NiYi1zY3JvbGxiYXItdGhpY2stbmVnYXRpdmUtdHJhY2stdmlzaWJsZScpO1xuICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdzYmItc2Nyb2xsYmFyLXRoaWNrLXRyYWNrLXZpc2libGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIENhbGN1bGF0ZXMgd2hldGhlciB0aGUgdGFibGUgaXMgaG9yaXpvbnRhbGx5IHNjcm9sbGVkIGFuZCBhZGRzIHRoZVxuICAgKiAgY29ycmVzcG9uZGluZyBjbGFzcyBgc2JiLXRhYmxlLXdyYXBwZXItb2Zmc2V0LSR7bm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGh9YFxuICAgKi9cbiAgcHJpdmF0ZSBfY2hlY2tIb3Jpem9udGFsU2Nyb2xsYmFyT2Zmc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fY2FsY3VsYXRlU2Nyb2xsT2Zmc2V0KCk7XG4gICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgYHNiYi10YWJsZS13cmFwcGVyLW9mZnNldC1ub25lYCxcbiAgICAgIGBzYmItdGFibGUtd3JhcHBlci1vZmZzZXQtbGVmdGAsXG4gICAgICBgc2JiLXRhYmxlLXdyYXBwZXItb2Zmc2V0LXJpZ2h0YCxcbiAgICAgIGBzYmItdGFibGUtd3JhcHBlci1vZmZzZXQtYm90aGAsXG4gICAgKTtcbiAgICB0aGlzLmNsYXNzTGlzdC5hZGQoYHNiYi10YWJsZS13cmFwcGVyLW9mZnNldC0ke3N0YXRlfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlU2Nyb2xsT2Zmc2V0KCk6ICdub25lJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90aCcge1xuICAgIGlmICh0aGlzLnNjcm9sbFdpZHRoID09PSB0aGlzLm9mZnNldFdpZHRoKSB7XG4gICAgICByZXR1cm4gJ25vbmUnO1xuICAgIH1cbiAgICBjb25zdCBpc0F0U3RhcnQgPSB0aGlzLnNjcm9sbExlZnQgPT09IDA7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB0aGUgY29tYmluZWQgdmFsdWUgb2Ygc2Nyb2xsTGVmdCBhbmQgb2Zmc2V0V2lkdGggaXMgb2ZmIGJ5XG4gICAgLy8gMSBwaXhlbCBmcm9tIHRoZSBzY3JvbGxXaWR0aC5cbiAgICBjb25zdCBpc0F0RW5kID0gdGhpcy5zY3JvbGxXaWR0aCAtIHRoaXMuc2Nyb2xsTGVmdCAtIHRoaXMub2Zmc2V0V2lkdGggPD0gMTtcblxuICAgIGlmIChpc0F0U3RhcnQpIHtcbiAgICAgIHJldHVybiBpc0F0RW5kID8gJ25vbmUnIDogJ3JpZ2h0JztcbiAgICB9XG4gICAgcmV0dXJuIGlzQXRFbmQgPyAnbGVmdCcgOiAnYm90aCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRhYmxlLXdyYXBwZXInOiBTYmJUYWJsZVdyYXBwZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCTSwwQkFBc0IsTUFBQTs7MEJBRDNCLGNBQWMsbUJBQW1CLENBQUM7Ozs7QUFDRSxNQUFBLGNBQUEsaUJBQWlCLHlCQUF5QixVQUFVLENBQUM7Ozs7QUFBN0QsRUFBQSxtQkFBUSxZQUFzRDtBQUFBLElBU3pGLGNBQUE7OztBQUZBLHNEQUFBLGtCQUFBLE1BQUEseUJBQXFDLEtBQUs7O0FBSW5DLFdBQUEsY0FDSCxJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDekIsYUFBYTtBQUFBLFFBQ2IsVUFBVSxNQUFNLEtBQUssZ0NBQWlDO0FBQUEsTUFBQSxDQUN2RCxDQUFDO0FBR0osT0FBQUEsTUFBQSxLQUFLLHFCQUFMLGdCQUFBQSxJQUFBLFdBQXdCLFVBQVUsTUFBTSxLQUFLLG1DQUFtQztBQUFBLFFBQzlFLFNBQVM7QUFBQSxNQUFB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
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90YWJsZS90YWJsZS13cmFwcGVyL3RhYmxlLXdyYXBwZXIuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYmxlLXdyYXBwZXIuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBXcmFwcyBhIHRhYmxlIHRvIGVuaGFuY2UgaXRzIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgdGhlIHRhYmxlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdGFibGUtd3JhcHBlcicpXG5jbGFzcyBTYmJUYWJsZVdyYXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3NlY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFibGUgd3JhcHBlciBpcyBmb2N1c2FibGUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2N1c2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5fY2hlY2tIb3Jpem9udGFsU2Nyb2xsYmFyT2Zmc2V0KCksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3Njcm9sbCcsICgpID0+IHRoaXMuX2NoZWNrSG9yaXpvbnRhbFNjcm9sbGJhck9mZnNldCgpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAvLyBBcyB3ZSBjYW4ndCBpbmNsdWRlIHRoZSBzY3JvbGxiYXIgbWl4aW4gb24gdGhlIGhvc3QgYW5kIHRvIG1pbmltaXplXG4gICAgLy8gcGF5bG9hZCwgd2UgZGVjaWRlZCB0byBhZGQgdGhlIHNjcm9sbGJhciBjbGFzcyBoZXJlLlxuICAgIC8vIFRoaXMgaXMgYW4gZXhjZXB0aW9uIGFzIHdlIG5vcm1hbGx5IGRvbid0IGFsdGVyIHRoZSBjbGFzc0xpc3Qgb2YgdGhlIGhvc3QuXG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyQ2xhc3MoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZm9jdXNhYmxlJykpIHtcbiAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpKSB7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyQ2xhc3MoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTY3JvbGxiYXJDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUpIHtcbiAgICAgIHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgnc2JiLXNjcm9sbGJhci10aGljay10cmFjay12aXNpYmxlJyk7XG4gICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NiYi1zY3JvbGxiYXItdGhpY2stbmVnYXRpdmUtdHJhY2stdmlzaWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoJ3NiYi1zY3JvbGxiYXItdGhpY2stbmVnYXRpdmUtdHJhY2stdmlzaWJsZScpO1xuICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdzYmItc2Nyb2xsYmFyLXRoaWNrLXRyYWNrLXZpc2libGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIENhbGN1bGF0ZXMgd2hldGhlciB0aGUgdGFibGUgaXMgaG9yaXpvbnRhbGx5IHNjcm9sbGVkIGFuZCBhZGRzIHRoZVxuICAgKiAgY29ycmVzcG9uZGluZyBjbGFzcyBgc2JiLXRhYmxlLXdyYXBwZXItb2Zmc2V0LSR7bm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGh9YFxuICAgKi9cbiAgcHJpdmF0ZSBfY2hlY2tIb3Jpem9udGFsU2Nyb2xsYmFyT2Zmc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fY2FsY3VsYXRlU2Nyb2xsT2Zmc2V0KCk7XG4gICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgYHNiYi10YWJsZS13cmFwcGVyLW9mZnNldC1ub25lYCxcbiAgICAgIGBzYmItdGFibGUtd3JhcHBlci1vZmZzZXQtbGVmdGAsXG4gICAgICBgc2JiLXRhYmxlLXdyYXBwZXItb2Zmc2V0LXJpZ2h0YCxcbiAgICAgIGBzYmItdGFibGUtd3JhcHBlci1vZmZzZXQtYm90aGAsXG4gICAgKTtcbiAgICB0aGlzLmNsYXNzTGlzdC5hZGQoYHNiYi10YWJsZS13cmFwcGVyLW9mZnNldC0ke3N0YXRlfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlU2Nyb2xsT2Zmc2V0KCk6ICdub25lJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90aCcge1xuICAgIGlmICh0aGlzLnNjcm9sbFdpZHRoID09PSB0aGlzLm9mZnNldFdpZHRoKSB7XG4gICAgICByZXR1cm4gJ25vbmUnO1xuICAgIH1cbiAgICBjb25zdCBpc0F0U3RhcnQgPSB0aGlzLnNjcm9sbExlZnQgPT09IDA7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB0aGUgY29tYmluZWQgdmFsdWUgb2Ygc2Nyb2xsTGVmdCBhbmQgb2Zmc2V0V2lkdGggaXMgb2ZmIGJ5XG4gICAgLy8gMSBwaXhlbCBmcm9tIHRoZSBzY3JvbGxXaWR0aC5cbiAgICBjb25zdCBpc0F0RW5kID0gdGhpcy5zY3JvbGxXaWR0aCAtIHRoaXMuc2Nyb2xsTGVmdCAtIHRoaXMub2Zmc2V0V2lkdGggPD0gMTtcblxuICAgIGlmIChpc0F0U3RhcnQpIHtcbiAgICAgIHJldHVybiBpc0F0RW5kID8gJ25vbmUnIDogJ3JpZ2h0JztcbiAgICB9XG4gICAgcmV0dXJuIGlzQXRFbmQgPyAnbGVmdCcgOiAnYm90aCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRhYmxlLXdyYXBwZXInOiBTYmJUYWJsZVdyYXBwZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1Qk0sMEJBQXNCLE1BQUE7OzBCQUQzQixjQUFjLG1CQUFtQixDQUFDOzs7O0FBQ0UsTUFBQSxjQUFBLGlCQUFpQix5QkFBeUIsVUFBVSxDQUFDOzs7O0FBQTdELEVBQUEsbUJBQVEsWUFBc0Q7QUFBQSxJQVN6RixjQUFBO0FBQ0UsWUFBQTtBQUhGLHNEQUFBLGtCQUFBLE1BQUEseUJBQXFDLEtBQUs7O0FBSXhDLFdBQUssY0FDSCxJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDekIsYUFBYTtBQUFBLFFBQ2IsVUFBVSxNQUFNLEtBQUssZ0NBQUE7QUFBQSxNQUErQixDQUNyRCxDQUFDO0FBR0osV0FBSyxtQkFBbUIsVUFBVSxNQUFNLEtBQUssbUNBQW1DO0FBQUEsUUFDOUUsU0FBUztBQUFBLE1BQUEsQ0FDVjtBQUFBLElBQUE7QUFBQTtBQUFBLElB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
@@ -64,4 +64,4 @@ let SbbTabElement = (() => {
64
64
  export {
65
65
  SbbTabElement
66
66
  };
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiL3RhYi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRhYkxhYmVsRWxlbWVudCB9IGZyb20gJy4uL3RhYi1sYWJlbC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLXRhYi1ncm91cGAsIGl0IGRpc3BsYXlzIGEgdGFiJ3MgY29udGVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgY29udGVudC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYicpXG5jbGFzcyBTYmJUYWJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByb2xlID0gJ3RhYnBhbmVsJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFRoZSBgc2JiLXRhYi1sYWJlbGAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWIuICovXG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogU2JiVGFiTGFiZWxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICB9XG4gIHByaXZhdGUgX2xhYmVsOiBTYmJUYWJMYWJlbEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9nZXRUYWJMYWJlbCgpOiBTYmJUYWJMYWJlbEVsZW1lbnQgfCBudWxsIHtcbiAgICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGhpcy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIHdoaWxlIChwcmV2aW91c1NpYmxpbmcgJiYgcHJldmlvdXNTaWJsaW5nLmxvY2FsTmFtZSAhPT0gJ3NiYi10YWItbGFiZWwnKSB7XG4gICAgICBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICB9XG4gICAgcmV0dXJuIHByZXZpb3VzU2libGluZyBhcyBTYmJUYWJMYWJlbEVsZW1lbnQ7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBjb25maWd1cmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbGFiZWwgPSB0aGlzLl9nZXRUYWJMYWJlbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRhYlwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGFiJzogU2JiVGFiRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWdCTSxpQkFBYSxNQUFBOzswQkFEbEIsY0FBYyxTQUFTLENBQUM7Ozs7b0JBQ0cseUJBQXlCLFVBQVU7QUFBM0MsRUFBQSxtQkFBUSxZQUFvQztBQUFBOztBQVF0RCxXQUFNLFNBQThCO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFINUMsSUFBVyxRQUFLO0FBQ2QsYUFBTyxLQUFLO0FBQUEsSUFBQTtBQUFBLElBSU4sZUFBWTtBQUNsQixVQUFJLGtCQUFrQixLQUFLO0FBQ3BCLGFBQUEsbUJBQW1CLGdCQUFnQixjQUFjLGlCQUFpQjtBQUN2RSwwQkFBa0IsZ0JBQWdCO0FBQUEsTUFBQTtBQUU3QixhQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJRixZQUFTO0FBQ1QsV0FBQSxTQUFTLEtBQUs7O0lBR0YsU0FBTTtBQUNoQixhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUE7O0FBeEJYLGlCQThCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBN0J3QixHQUFJLE9BQUcsWUFDUCxHQUFNLFNBQW1CLE9BRjVDLGtCQUFhLFlBQUEsdUJBQUEsR0FBQzs7OyJ9
67
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RhYnMvdGFiL3RhYi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRhYkxhYmVsRWxlbWVudCB9IGZyb20gJy4uL3RhYi1sYWJlbC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLXRhYi1ncm91cGAsIGl0IGRpc3BsYXlzIGEgdGFiJ3MgY29udGVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIHByb3ZpZGUgY29udGVudC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYicpXG5jbGFzcyBTYmJUYWJFbGVtZW50IGV4dGVuZHMgU2JiRWxlbWVudEludGVybmFsc01peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByb2xlID0gJ3RhYnBhbmVsJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFRoZSBgc2JiLXRhYi1sYWJlbGAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWIuICovXG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogU2JiVGFiTGFiZWxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICB9XG4gIHByaXZhdGUgX2xhYmVsOiBTYmJUYWJMYWJlbEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9nZXRUYWJMYWJlbCgpOiBTYmJUYWJMYWJlbEVsZW1lbnQgfCBudWxsIHtcbiAgICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGhpcy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIHdoaWxlIChwcmV2aW91c1NpYmxpbmcgJiYgcHJldmlvdXNTaWJsaW5nLmxvY2FsTmFtZSAhPT0gJ3NiYi10YWItbGFiZWwnKSB7XG4gICAgICBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICB9XG4gICAgcmV0dXJuIHByZXZpb3VzU2libGluZyBhcyBTYmJUYWJMYWJlbEVsZW1lbnQ7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBjb25maWd1cmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbGFiZWwgPSB0aGlzLl9nZXRUYWJMYWJlbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRhYlwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItdGFiJzogU2JiVGFiRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWdCTSxpQkFBYSxNQUFBOzswQkFEbEIsY0FBYyxTQUFTLENBQUM7Ozs7b0JBQ0cseUJBQXlCLFVBQVU7QUFBM0MsRUFBQSxtQkFBUSxZQUFvQztBQUFBOztBQVF0RCxXQUFBLFNBQW9DO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFINUMsSUFBVyxRQUFLO0FBQ2QsYUFBTyxLQUFLO0FBQUEsSUFBQTtBQUFBLElBSU4sZUFBWTtBQUNsQixVQUFJLGtCQUFrQixLQUFLO0FBQzNCLGFBQU8sbUJBQW1CLGdCQUFnQixjQUFjLGlCQUFpQjtBQUN2RSwwQkFBa0IsZ0JBQWdCO0FBQUEsTUFBQTtBQUVwQyxhQUFPO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFJRixZQUFTO0FBQ2QsV0FBSyxTQUFTLEtBQUssYUFBQTtBQUFBO0lBR0YsU0FBTTtBQUN2QixhQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUE7O0FBeEJYLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDeUIsR0FBQSxPQUFPLFlBQ1AsR0FBQSxTQUF5QixPQUY1QyxrQkFBQSxZQUFBLHVCQUFBLEdBQWM7OzsifQ==