@sbb-esta/lyne-elements-dev 5.0.0-next.3-dev.1779265349 → 5.0.0-next.3-dev.1779268556

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 (651) hide show
  1. package/_index.scss +6 -2
  2. package/autocomplete/autocomplete-base-element.js +1 -1
  3. package/autocomplete/autocomplete.component.js +1 -1
  4. package/{autocomplete-base-element-6leI6UF4.js → autocomplete-base-element-jaXVQcA7.js} +11 -9
  5. package/autocomplete.js +1 -1
  6. package/autocomplete.pure.js +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/{breadcrumb-group.component-XPdnV6-a.js → breadcrumb-group.component-a49dItu9.js} +23 -19
  9. package/breadcrumb.js +1 -1
  10. package/breadcrumb.pure.js +1 -1
  11. package/button/mini-button-group/mini-button-group.component.js +1 -1
  12. package/button.js +1 -1
  13. package/button.pure.js +1 -1
  14. package/calendar/calendar/calendar.component.js +1 -1
  15. package/{calendar.component-CiT0mE7S.js → calendar.component-DKgkIocz.js} +37 -33
  16. package/calendar.js +1 -1
  17. package/calendar.pure.js +1 -1
  18. package/container/sticky-bar/sticky-bar.component.js +1 -1
  19. package/container.js +1 -1
  20. package/container.pure.js +1 -1
  21. package/core/mixins/named-slot-list-mixin.js +14 -14
  22. package/core/styles/_index.scss +1 -12
  23. package/core/styles/_theme.scss +16 -0
  24. package/core/styles/core/functions.scss +0 -8
  25. package/core/styles/{a11y.scss → features/a11y.scss} +2 -2
  26. package/core/styles/{animation.scss → features/animation.scss} +1 -1
  27. package/core/styles/features/color-scheme.scss +11 -0
  28. package/core/styles/{core.scss → features/core.scss} +138 -171
  29. package/core/styles/{image.scss → features/image.scss} +29 -7
  30. package/core/styles/{layout.private.scss → features/layout.private.scss} +5 -4
  31. package/core/styles/{layout.scss → features/layout.scss} +1 -1
  32. package/core/styles/{lists.scss → features/lists.scss} +1 -1
  33. package/core/styles/{scrollbar.scss → features/scrollbar.scss} +1 -1
  34. package/core/styles/features/typography.private.scss +9 -0
  35. package/core/styles/{typography.scss → features/typography.scss} +2 -2
  36. package/core/styles/internals/button-reset.scss +5 -0
  37. package/core/styles/{host-scrollbar.scss → internals/host-scrollbar.scss} +1 -1
  38. package/core/styles/internals/list-reset.scss +6 -0
  39. package/core/styles/internals/popover-reset.scss +6 -0
  40. package/core/styles/{screen-reader-only.scss → internals/screen-reader-only.scss} +1 -1
  41. package/core/styles/mixins/{a11y.scss → _a11y.scss} +0 -21
  42. package/core/styles/mixins/{helpers.scss → _helpers.scss} +3 -14
  43. package/core/styles/mixins/{lists.scss → _lists.scss} +8 -12
  44. package/core/styles/mixins/{pearl-chain-bullet.scss → _pearl-chain-bullet.scss} +5 -5
  45. package/core/styles/mixins/_reset.scss +38 -0
  46. package/core/styles/mixins/{typo.scss → _typo.scss} +23 -75
  47. package/core/styles/styles.js +2 -2
  48. package/core.js +2 -2
  49. package/custom-elements.json +68 -22
  50. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  51. package/development/autocomplete/autocomplete-base-element.js +1 -1
  52. package/development/autocomplete/autocomplete.component.js +1 -1
  53. package/development/autocomplete-base-element-JxM7QbC4.js +697 -0
  54. package/development/autocomplete.js +1 -1
  55. package/development/autocomplete.pure.js +1 -1
  56. package/development/block-link-common-DNvRfeay.js +1 -1
  57. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  58. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  59. package/development/breadcrumb-group.component-DvY1hq51.js +197 -0
  60. package/development/breadcrumb.component-D6Cd2FPo.js +1 -1
  61. package/development/breadcrumb.js +1 -1
  62. package/development/breadcrumb.pure.js +1 -1
  63. package/development/button/mini-button-group/mini-button-group.component.js +1 -1
  64. package/development/button-common-C-A7Dulr.js +1 -1
  65. package/development/button.js +1 -1
  66. package/development/button.pure.js +1 -1
  67. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  68. package/development/calendar/calendar/calendar.component.js +1 -1
  69. package/development/calendar-cell-base-element-mWRSDeWc.js +1 -1
  70. package/development/calendar.component-CgEXjBeQ.js +1473 -0
  71. package/development/calendar.js +1 -1
  72. package/development/calendar.pure.js +1 -1
  73. package/development/card.component-CL2gHoyP.js +1 -1
  74. package/development/chip-label.component-DHHNtvTt.js +1 -1
  75. package/development/{compact-paginator.component-BgkpxaaD.js → compact-paginator.component-m8MASSB7.js} +1 -1
  76. package/development/container/sticky-bar/sticky-bar.component.js +1 -1
  77. package/development/container.js +1 -1
  78. package/development/container.pure.js +1 -1
  79. package/development/core/mixins/named-slot-list-mixin.js +3 -3
  80. package/development/core/styles/styles.d.ts +3 -1
  81. package/development/core/styles/styles.d.ts.map +1 -1
  82. package/development/core/styles/styles.js +2 -2
  83. package/development/core.js +2 -2
  84. package/development/date-input.component-HxRyCudr.js +1 -1
  85. package/development/dialog-actions.component-e0ZTTUin.js +1 -1
  86. package/development/dialog.component-D8B2dVck.js +1 -1
  87. package/development/error.component-WCkiwM7_.js +1 -1
  88. package/development/expansion-panel-header.component-gg5A_7Pz.js +1 -1
  89. package/development/expansion-panel.component-DcFrWkIt.js +1 -1
  90. package/development/file-selector/common/file-selector-common.js +1 -1
  91. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  92. package/development/file-selector-common-Dd0S0qE3.js +421 -0
  93. package/development/{file-selector-dropzone.component-B84OL4Xd.js → file-selector-dropzone.component-DWLdqMmI.js} +2 -2
  94. package/development/file-selector.js +2 -2
  95. package/development/file-selector.pure.js +2 -2
  96. package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
  97. package/development/flip-card/flip-card/flip-card.component.js +1 -1
  98. package/development/flip-card.component-MmiS-x-W.js +189 -0
  99. package/development/flip-card.js +1 -1
  100. package/development/flip-card.pure.js +1 -1
  101. package/development/footer.component-K2bWizjw.js +1 -1
  102. package/development/form-field.component-CPWBCHer.js +1 -1
  103. package/development/header/common/header-action-common.js +1 -1
  104. package/development/header-action-common-BYB-HYtn.js +86 -0
  105. package/development/header.component-C4e7CNql.js +1 -1
  106. package/development/header.js +1 -1
  107. package/development/header.pure.js +1 -1
  108. package/development/inline-link-common-BV6oAtAA.js +18 -0
  109. package/development/link/common/inline-link-common.js +1 -1
  110. package/development/link-common-2RGn9Qz_.js +1 -1
  111. package/development/link-list/link-list.component.js +1 -1
  112. package/development/link-list-anchor/link-list-anchor.component.js +1 -1
  113. package/development/{link-list-anchor.component-Csb-FOQL.js → link-list-anchor.component-BMtCbCRD.js} +2 -2
  114. package/development/link-list-anchor.js +1 -1
  115. package/development/link-list-anchor.pure.js +1 -1
  116. package/development/link-list.component-CLxhjWR7.js +97 -0
  117. package/development/link-list.js +1 -1
  118. package/development/link-list.pure.js +1 -1
  119. package/development/link.js +1 -1
  120. package/development/link.pure.js +1 -1
  121. package/development/loading-indicator-circle.component-Cfjw5vyz.js +1 -1
  122. package/development/logo.component-DYKgAgq0.js +1 -1
  123. package/development/menu/common/menu-action-common.js +1 -1
  124. package/development/menu/menu/menu.component.d.ts.map +1 -1
  125. package/development/menu/menu/menu.component.js +1 -1
  126. package/development/menu-action-common-DL4t4_-J.js +32 -0
  127. package/development/menu.component-3qEIFutc.js +369 -0
  128. package/development/menu.js +2 -2
  129. package/development/menu.pure.js +2 -2
  130. package/development/message/message.component.js +1 -1
  131. package/development/{message.component-CdO5GyE2.js → message.component-BJ-84a0B.js} +2 -2
  132. package/development/message.js +1 -1
  133. package/development/message.pure.js +1 -1
  134. package/development/{mini-button-group.component-VYKZf1rq.js → mini-button-group.component-C88pIaaL.js} +2 -2
  135. package/development/mini-button-link.component-kpRsi8I2.js +1 -1
  136. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  137. package/development/navigation/navigation/navigation.component.js +1 -1
  138. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  139. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  140. package/development/navigation-action-common-wrzPCkMT.js +1 -1
  141. package/development/navigation-list.component-CU-SGC8c.js +86 -0
  142. package/development/navigation-marker.component-CTk9U0kA.js +120 -0
  143. package/development/navigation-section.component-iaypc6yQ.js +1 -1
  144. package/development/navigation.component-Bu1wVUNx.js +319 -0
  145. package/development/navigation.js +3 -3
  146. package/development/navigation.pure.js +3 -3
  147. package/development/option/option/option.component.js +1 -1
  148. package/development/option/option-styles.d.ts +2 -0
  149. package/development/option/option-styles.d.ts.map +1 -0
  150. package/development/option/option-styles.js +2 -0
  151. package/development/option-styles-IEQgVpCe.js +8 -0
  152. package/development/option.component-BrTjDq6X.js +131 -0
  153. package/development/option.js +4 -3
  154. package/development/option.pure.d.ts +1 -0
  155. package/development/option.pure.d.ts.map +1 -1
  156. package/development/option.pure.js +3 -2
  157. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  158. package/development/overlay/overlay-base-element.js +3 -3
  159. package/development/overlay/overlay.component.js +1 -1
  160. package/development/{overlay.component-YSCuGeme.js → overlay.component-BH-aue7w.js} +1 -1
  161. package/development/overlay.js +1 -1
  162. package/development/overlay.pure.js +1 -1
  163. package/development/paginator/common/paginator-common.js +1 -1
  164. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  165. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  166. package/development/paginator/paginator/paginator.component.js +1 -1
  167. package/development/{paginator-common-B7iba0wQ.js → paginator-common-CRchtcXc.js} +1 -1
  168. package/development/paginator.component-B8y5tVCL.js +265 -0
  169. package/development/paginator.js +3 -3
  170. package/development/paginator.pure.js +3 -3
  171. package/development/panel-mixin-DPybe45K.js +1 -1
  172. package/development/popover/popover.component.d.ts.map +1 -1
  173. package/development/popover/popover.component.js +1 -1
  174. package/development/popover.component-Ds4fNNsq.js +578 -0
  175. package/development/popover.js +1 -1
  176. package/development/popover.pure.js +1 -1
  177. package/development/radio-button/common/radio-button-common.js +1 -1
  178. package/development/radio-button/radio-button.component.js +1 -1
  179. package/development/radio-button-common-Ckz2nMS7.js +129 -0
  180. package/development/{radio-button.component-DnErH-1J.js → radio-button.component-qsLFvciH.js} +2 -2
  181. package/development/radio-button.js +2 -2
  182. package/development/radio-button.pure.js +2 -2
  183. package/development/select/select.component.d.ts.map +1 -1
  184. package/development/select/select.component.js +1 -1
  185. package/development/select.component-BE7ZMrAc.js +809 -0
  186. package/development/select.js +1 -1
  187. package/development/select.pure.js +1 -1
  188. package/development/selection-action-panel/selection-action-panel.component.js +1 -1
  189. package/development/{selection-action-panel.component-BT0HmTja.js → selection-action-panel.component-C3UlmLkJ.js} +1 -1
  190. package/development/selection-action-panel.js +1 -1
  191. package/development/selection-action-panel.pure.js +1 -1
  192. package/development/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  193. package/development/selection-expansion-panel.component-4Ron8XNy.js +186 -0
  194. package/development/selection-expansion-panel.js +1 -1
  195. package/development/selection-expansion-panel.pure.js +1 -1
  196. package/development/sidebar/common/styles.js +1 -1
  197. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  198. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
  199. package/development/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  200. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  201. package/development/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  202. package/development/{sidebar-close-button.component-CXnf-P5H.js → sidebar-close-button.component-ByQtC65O.js} +1 -1
  203. package/development/sidebar-container.component-BmavabUg.js +100 -0
  204. package/development/{sidebar-content.component-DbcREBUa.js → sidebar-content.component-DcsIIWpz.js} +1 -1
  205. package/development/{sidebar-title.component-BW04otyD.js → sidebar-title.component-DgJdkoiE.js} +1 -1
  206. package/development/{sidebar.component-mfXnE6WQ.js → sidebar.component-BszwyJQa.js} +1 -1
  207. package/development/sidebar.js +5 -5
  208. package/development/sidebar.pure.js +5 -5
  209. package/development/signet/signet.component.js +1 -1
  210. package/development/{signet.component-k14RJ8FA.js → signet.component-DXLTVjJS.js} +1 -1
  211. package/development/signet.js +1 -1
  212. package/development/signet.pure.js +1 -1
  213. package/development/skiplink-list/skiplink-list.component.js +1 -1
  214. package/development/skiplink-list.component-BC8rpyf9.js +129 -0
  215. package/development/skiplink-list.js +1 -1
  216. package/development/skiplink-list.pure.js +1 -1
  217. package/development/slider/slider.component.js +1 -1
  218. package/development/slider.component-BLptxiZ4.js +346 -0
  219. package/development/slider.js +1 -1
  220. package/development/slider.pure.js +1 -1
  221. package/development/status/status.component.js +1 -1
  222. package/development/{status.component-B9en2l26.js → status.component-thSGiOrl.js} +1 -1
  223. package/development/status.js +1 -1
  224. package/development/status.pure.js +1 -1
  225. package/development/step-label.component-CpdXVv32.js +127 -0
  226. package/development/{step.component-B_YHm1tz.js → step.component-DpSJEkrK.js} +1 -1
  227. package/development/stepper/step/step.component.js +1 -1
  228. package/development/stepper/step-label/step-label.component.js +1 -1
  229. package/development/stepper/stepper/stepper.component.js +1 -1
  230. package/development/stepper.component-Bv6LCFU0.js +443 -0
  231. package/development/stepper.js +3 -3
  232. package/development/stepper.pure.js +3 -3
  233. package/development/{sticky-bar.component-BJLtRvcd.js → sticky-bar.component-DZpy1gBU.js} +2 -2
  234. package/development/{styles-WppEBrlW.js → styles-BmvNZZle.js} +1 -1
  235. package/development/styles-D8h0fqb5.js +30 -0
  236. package/development/{tab-group.component-CGMBihsQ.js → tab-group.component-DhcfjVxe.js} +1 -1
  237. package/development/{tab-label.component-CQOLO2t7.js → tab-label.component-B7YEhR1C.js} +1 -1
  238. package/development/tab-nav-bar.component-DrZ1U7lM.js +109 -0
  239. package/development/{tab.component-BVhYPy5Y.js → tab.component-COn1G0XA.js} +1 -1
  240. package/development/table/table-wrapper/table-wrapper.component.js +1 -1
  241. package/development/{table-wrapper.component-By59zmcU.js → table-wrapper.component-9Lst6dT2.js} +1 -1
  242. package/development/table.js +1 -1
  243. package/development/table.pure.js +1 -1
  244. package/development/tabs/common/styles.js +1 -1
  245. package/development/tabs/tab/tab.component.js +1 -1
  246. package/development/tabs/tab-group/tab-group.component.js +1 -1
  247. package/development/tabs/tab-label/tab-label.component.js +1 -1
  248. package/development/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
  249. package/development/tabs.js +5 -5
  250. package/development/tabs.pure.js +5 -5
  251. package/development/tag/tag/tag.component.js +1 -1
  252. package/development/tag/tag-group/tag-group.component.js +1 -1
  253. package/development/tag-group.component-OQ3sxhZI.js +194 -0
  254. package/development/tag.component-DWOPDWwe.js +238 -0
  255. package/development/tag.js +2 -2
  256. package/development/tag.pure.js +2 -2
  257. package/development/teaser/teaser.component.js +1 -1
  258. package/development/teaser-hero/teaser-hero.component.js +1 -1
  259. package/development/{teaser-hero.component-BHMcPmdh.js → teaser-hero.component-Cp42iJGt.js} +1 -1
  260. package/development/teaser-hero.js +1 -1
  261. package/development/teaser-hero.pure.js +1 -1
  262. package/development/teaser-panel/teaser-panel.component.js +1 -1
  263. package/development/{teaser-panel.component-BRfbvmkb.js → teaser-panel.component-ptDalUEe.js} +1 -1
  264. package/development/teaser-panel.js +1 -1
  265. package/development/teaser-panel.pure.js +1 -1
  266. package/development/teaser-product/common/teaser-product-common.js +1 -1
  267. package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
  268. package/development/{teaser-product-common-DOyLdTks.js → teaser-product-common-DxBw-__I.js} +1 -1
  269. package/development/teaser-product.component-CPj4vJ2V.js +37 -0
  270. package/development/teaser-product.js +2 -2
  271. package/development/teaser-product.pure.js +2 -2
  272. package/development/teaser.component-Dgrc2jh8.js +116 -0
  273. package/development/teaser.js +1 -1
  274. package/development/teaser.pure.js +1 -1
  275. package/development/time-input/time-input.component.js +1 -1
  276. package/development/time-input.component-BFjDAfbv.js +187 -0
  277. package/development/time-input.js +1 -1
  278. package/development/time-input.pure.js +1 -1
  279. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  280. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  281. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  282. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  283. package/development/{timetable-form-details.component-BeuAZUQe.js → timetable-form-details.component-BFmuJ8-6.js} +1 -1
  284. package/development/{timetable-form-field.component-DC2z1Cwf.js → timetable-form-field.component-DD04XyA0.js} +1 -1
  285. package/development/{timetable-form-swap-button.component-CnbVc8Ok.js → timetable-form-swap-button.component-DphGegO6.js} +1 -1
  286. package/development/{timetable-form.component-C8DfPePn.js → timetable-form.component-EIr4B4mA.js} +1 -1
  287. package/development/timetable-form.js +4 -4
  288. package/development/timetable-form.pure.js +4 -4
  289. package/development/timetable-occupancy/timetable-occupancy.component.d.ts.map +1 -1
  290. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  291. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  292. package/development/timetable-occupancy-icon.component-vsXoAiKz.js +95 -0
  293. package/development/timetable-occupancy-icon.js +1 -1
  294. package/development/timetable-occupancy-icon.pure.js +1 -1
  295. package/development/timetable-occupancy.component-B0zY0RnI.js +126 -0
  296. package/development/timetable-occupancy.js +1 -1
  297. package/development/timetable-occupancy.pure.js +1 -1
  298. package/development/title/title-base.js +1 -1
  299. package/development/title/title.component.d.ts +0 -2
  300. package/development/title/title.component.d.ts.map +1 -1
  301. package/development/title/title.component.js +1 -1
  302. package/development/title-base-CPAVrsQ9.js +102 -0
  303. package/development/title.component-DCg9U2CK.js +69 -0
  304. package/development/title.js +2 -2
  305. package/development/title.pure.js +2 -2
  306. package/development/toast/toast.component.d.ts.map +1 -1
  307. package/development/toast/toast.component.js +1 -1
  308. package/development/{toast.component-DonS3uQm.js → toast.component-TvSfu5nl.js} +3 -3
  309. package/development/toast.js +1 -1
  310. package/development/toast.pure.js +1 -1
  311. package/development/toggle/toggle/toggle.component.js +1 -1
  312. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  313. package/development/toggle-check/toggle-check.component.js +1 -1
  314. package/development/{toggle-check.component-BIV7jFIc.js → toggle-check.component-CbGa5-8I.js} +1 -1
  315. package/development/toggle-check.js +1 -1
  316. package/development/toggle-check.pure.js +1 -1
  317. package/development/{toggle-option.component-DRxwLSKU.js → toggle-option.component-BxGnhJFH.js} +1 -1
  318. package/development/toggle.component-Q68IDQWX.js +243 -0
  319. package/development/toggle.js +2 -2
  320. package/development/toggle.pure.js +2 -2
  321. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  322. package/development/tooltip/tooltip.component.js +1 -1
  323. package/development/tooltip.component-Baoh6M8V.js +369 -0
  324. package/development/tooltip.js +1 -1
  325. package/development/tooltip.pure.js +1 -1
  326. package/development/train/train/train.component.js +1 -1
  327. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  328. package/development/train/train-formation/train-formation.component.js +1 -1
  329. package/development/train/train-wagon-common.js +1 -1
  330. package/development/{train-blocked-passage.component-Cxd7dBDC.js → train-blocked-passage.component-C7ve-a1E.js} +1 -1
  331. package/development/{train-formation.component-BEg6OPib.js → train-formation.component-DQ_hLKNv.js} +2 -2
  332. package/development/train-wagon-common-CdckItEt.js +441 -0
  333. package/development/train.component-Bi74L6C7.js +239 -0
  334. package/development/train.js +4 -4
  335. package/development/train.pure.js +4 -4
  336. package/development/visual-checkbox/visual-checkbox.component.js +1 -1
  337. package/development/{visual-checkbox.component-Dm8DNhH2.js → visual-checkbox.component-B4_iHcsX.js} +1 -1
  338. package/development/visual-checkbox.js +1 -1
  339. package/development/visual-checkbox.pure.js +1 -1
  340. package/file-selector/common/file-selector-common.js +1 -1
  341. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  342. package/{file-selector-common-VNwWFEmM.js → file-selector-common-BNGnjK__.js} +1 -1
  343. package/{file-selector-dropzone.component-CGo6odhC.js → file-selector-dropzone.component-sE_fofSq.js} +1 -1
  344. package/file-selector.js +2 -2
  345. package/file-selector.pure.js +2 -2
  346. package/flip-card/flip-card/flip-card.component.js +1 -1
  347. package/{flip-card.component-CZ0v44Ym.js → flip-card.component-ZsA_kDPS.js} +22 -18
  348. package/flip-card.js +1 -1
  349. package/flip-card.pure.js +1 -1
  350. package/header/common/header-action-common.js +1 -1
  351. package/header-action-common-B-eRBjSz.js +64 -0
  352. package/header.js +1 -1
  353. package/header.pure.js +1 -1
  354. package/inline-link-common-O650N_pm.js +13 -0
  355. package/lean-off-brand-theme.css +415 -503
  356. package/lean-safety-theme.css +415 -503
  357. package/lean-theme.css +415 -503
  358. package/link/common/inline-link-common.js +1 -1
  359. package/link-list/link-list.component.js +1 -1
  360. package/link-list-anchor/link-list-anchor.component.js +1 -1
  361. package/{link-list-anchor.component-DG_HCtHH.js → link-list-anchor.component-Bjz_EKvE.js} +1 -1
  362. package/link-list-anchor.js +1 -1
  363. package/link-list-anchor.pure.js +1 -1
  364. package/{link-list.component-BNVd0a8U.js → link-list.component-Dg-7TBPC.js} +1 -1
  365. package/link-list.js +1 -1
  366. package/link-list.pure.js +1 -1
  367. package/link.js +1 -1
  368. package/link.pure.js +1 -1
  369. package/menu/common/menu-action-common.js +1 -1
  370. package/menu/menu/menu.component.js +1 -1
  371. package/{menu-action-common-Wy36tk18.js → menu-action-common-DakEXPg7.js} +1 -1
  372. package/{menu.component-DrrKSRmJ.js → menu.component-CqXsI5Cg.js} +25 -21
  373. package/menu.js +2 -2
  374. package/menu.pure.js +2 -2
  375. package/message/message.component.js +1 -1
  376. package/{message.component-CdfsCpnE.js → message.component-CORYX4KP.js} +1 -1
  377. package/message.js +1 -1
  378. package/message.pure.js +1 -1
  379. package/{mini-button-group.component-DQBU0BDm.js → mini-button-group.component-DWayyUpK.js} +1 -1
  380. package/navigation/navigation/navigation.component.js +1 -1
  381. package/navigation/navigation-list/navigation-list.component.js +1 -1
  382. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  383. package/{navigation-list.component-Cezo1tC-.js → navigation-list.component-C5y3ohH0.js} +1 -1
  384. package/{navigation-marker.component-CNsMaqpH.js → navigation-marker.component-VbvKu1TR.js} +1 -1
  385. package/{navigation.component-DLgmWh_c.js → navigation.component-DKJujMqj.js} +23 -19
  386. package/navigation.js +3 -3
  387. package/navigation.pure.js +3 -3
  388. package/off-brand-theme.css +415 -503
  389. package/option/option/option.component.js +1 -1
  390. package/option/option-styles.js +2 -0
  391. package/option-styles-DcD5grSB.js +6 -0
  392. package/option.js +5 -4
  393. package/option.pure.js +4 -3
  394. package/overlay/overlay-base-element.js +21 -21
  395. package/overlay/overlay.component.js +1 -1
  396. package/overlay.js +1 -1
  397. package/overlay.pure.js +1 -1
  398. package/package.json +5 -49
  399. package/paginator/common/paginator-common.js +1 -1
  400. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  401. package/paginator/paginator/paginator.component.js +1 -1
  402. package/paginator.component-Dk1xDHgW.js +212 -0
  403. package/paginator.js +3 -3
  404. package/paginator.pure.js +3 -3
  405. package/popover/popover.component.js +1 -1
  406. package/{popover.component-Dm_86bPY.js → popover.component-Bm-bx-Hs.js} +32 -32
  407. package/popover.js +1 -1
  408. package/popover.pure.js +1 -1
  409. package/radio-button/common/radio-button-common.js +1 -1
  410. package/radio-button/radio-button.component.js +1 -1
  411. package/{radio-button.component-CZ273yAb.js → radio-button.component-CGeTCfMq.js} +1 -1
  412. package/radio-button.js +2 -2
  413. package/radio-button.pure.js +2 -2
  414. package/safety-theme.css +415 -503
  415. package/select/select.component.js +1 -1
  416. package/{select.component-CLPLpFDz.js → select.component-UcWSndDu.js} +41 -39
  417. package/select.js +1 -1
  418. package/select.pure.js +1 -1
  419. package/selection-action-panel/selection-action-panel.component.js +1 -1
  420. package/selection-action-panel.js +1 -1
  421. package/selection-action-panel.pure.js +1 -1
  422. package/selection-expansion-panel/selection-expansion-panel.component.js +1 -1
  423. package/selection-expansion-panel.js +1 -1
  424. package/selection-expansion-panel.pure.js +1 -1
  425. package/sidebar/sidebar/sidebar.component.js +1 -1
  426. package/sidebar/sidebar-close-button/sidebar-close-button.component.js +1 -1
  427. package/sidebar/sidebar-container/sidebar-container.component.js +1 -1
  428. package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  429. package/sidebar/sidebar-title/sidebar-title.component.js +1 -1
  430. package/sidebar.js +5 -5
  431. package/sidebar.pure.js +5 -5
  432. package/signet/signet.component.js +1 -1
  433. package/signet.js +1 -1
  434. package/signet.pure.js +1 -1
  435. package/skiplink-list/skiplink-list.component.js +1 -1
  436. package/{skiplink-list.component-BXaqYpsI.js → skiplink-list.component-ClGb1J_H.js} +1 -1
  437. package/skiplink-list.js +1 -1
  438. package/skiplink-list.pure.js +1 -1
  439. package/slider/slider.component.js +1 -1
  440. package/slider.js +1 -1
  441. package/slider.pure.js +1 -1
  442. package/standard-theme.css +415 -503
  443. package/status/status.component.js +1 -1
  444. package/status.js +1 -1
  445. package/status.pure.js +1 -1
  446. package/stepper/step/step.component.js +1 -1
  447. package/stepper/step-label/step-label.component.js +1 -1
  448. package/stepper/stepper/stepper.component.js +1 -1
  449. package/stepper.js +3 -3
  450. package/stepper.pure.js +3 -3
  451. package/{sticky-bar.component-dmlGAZLW.js → sticky-bar.component-DtXeRUqi.js} +1 -1
  452. package/styles-DV41ClRb.js +5 -0
  453. package/{tab-nav-bar.component-FT2W0urU.js → tab-nav-bar.component-CRC6xnaX.js} +1 -1
  454. package/table/table-wrapper/table-wrapper.component.js +1 -1
  455. package/table.js +1 -1
  456. package/table.pure.js +1 -1
  457. package/tabs/common/styles.js +1 -1
  458. package/tabs/tab/tab.component.js +1 -1
  459. package/tabs/tab-group/tab-group.component.js +1 -1
  460. package/tabs/tab-label/tab-label.component.js +1 -1
  461. package/tabs/tab-nav-bar/tab-nav-bar.component.js +1 -1
  462. package/tabs.js +5 -5
  463. package/tabs.pure.js +5 -5
  464. package/tag/tag/tag.component.js +1 -1
  465. package/tag/tag-group/tag-group.component.js +1 -1
  466. package/{tag-group.component-9UfHHJ79.js → tag-group.component-wnzXwLPf.js} +1 -1
  467. package/tag.js +2 -2
  468. package/tag.pure.js +2 -2
  469. package/teaser/teaser.component.js +1 -1
  470. package/teaser-hero/teaser-hero.component.js +1 -1
  471. package/teaser-hero.js +1 -1
  472. package/teaser-hero.pure.js +1 -1
  473. package/teaser-panel/teaser-panel.component.js +1 -1
  474. package/teaser-panel.js +1 -1
  475. package/teaser-panel.pure.js +1 -1
  476. package/teaser-product/common/teaser-product-common.js +1 -1
  477. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  478. package/teaser-product.js +2 -2
  479. package/teaser-product.pure.js +2 -2
  480. package/teaser.js +1 -1
  481. package/teaser.pure.js +1 -1
  482. package/time-input/time-input.component.js +1 -1
  483. package/time-input.js +1 -1
  484. package/time-input.pure.js +1 -1
  485. package/timetable-form/timetable-form/timetable-form.component.js +1 -1
  486. package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  487. package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  488. package/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  489. package/timetable-form.js +4 -4
  490. package/timetable-form.pure.js +4 -4
  491. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  492. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  493. package/timetable-occupancy-icon.js +1 -1
  494. package/timetable-occupancy-icon.pure.js +1 -1
  495. package/{timetable-occupancy.component-DGQ20zH1.js → timetable-occupancy.component-CIkq1cT7.js} +17 -13
  496. package/timetable-occupancy.js +1 -1
  497. package/timetable-occupancy.pure.js +1 -1
  498. package/title/title-base.js +1 -1
  499. package/title/title.component.js +1 -1
  500. package/{title-base-JBhKD3ur.js → title-base-B1xzk7Zb.js} +1 -1
  501. package/{title.component-VnTeqomb.js → title.component-DTnG8op9.js} +2 -2
  502. package/title.js +2 -2
  503. package/title.pure.js +2 -2
  504. package/toast/toast.component.js +1 -1
  505. package/{toast.component-BMN90Ouu.js → toast.component-Ew5vuGXf.js} +19 -19
  506. package/toast.js +1 -1
  507. package/toast.pure.js +1 -1
  508. package/toggle/toggle/toggle.component.js +1 -1
  509. package/toggle/toggle-option/toggle-option.component.js +1 -1
  510. package/toggle-check/toggle-check.component.js +1 -1
  511. package/toggle-check.js +1 -1
  512. package/toggle-check.pure.js +1 -1
  513. package/toggle.js +2 -2
  514. package/toggle.pure.js +2 -2
  515. package/tooltip/tooltip.component.js +1 -1
  516. package/{tooltip.component-NfyDxfw7.js → tooltip.component-ihyNBI7f.js} +25 -25
  517. package/tooltip.js +1 -1
  518. package/tooltip.pure.js +1 -1
  519. package/train/train/train.component.js +1 -1
  520. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  521. package/train/train-formation/train-formation.component.js +1 -1
  522. package/train/train-wagon-common.js +1 -1
  523. package/{train-formation.component-DVxNBPIB.js → train-formation.component-CYqdWnkL.js} +1 -1
  524. package/{train-wagon-common-CDCsWVgi.js → train-wagon-common-C1Py1D01.js} +1 -1
  525. package/{train.component-DxadS7O8.js → train.component-DRLUjuXY.js} +1 -1
  526. package/train.js +4 -4
  527. package/train.pure.js +4 -4
  528. package/visual-checkbox/visual-checkbox.component.js +1 -1
  529. package/visual-checkbox.js +1 -1
  530. package/visual-checkbox.pure.js +1 -1
  531. package/a11y.css +0 -20
  532. package/animation.css +0 -14
  533. package/badge.css +0 -32
  534. package/core/styles/badge.scss +0 -3
  535. package/core/styles/mixins/badge.scss +0 -42
  536. package/core/styles/mixins/buttons.scss +0 -12
  537. package/core/styles/mixins/card.scss +0 -205
  538. package/core/styles/mixins/dev_and_debug.scss +0 -8
  539. package/core/styles/mixins/image.scss +0 -43
  540. package/core/styles/mixins/inputs.scss +0 -11
  541. package/core/styles/mixins/link.scss +0 -125
  542. package/core/styles/mixins/panel.scss +0 -80
  543. package/core/styles/mixins/popover.scss +0 -14
  544. package/core/styles/mixins/table.scss +0 -185
  545. package/core/styles/mixins/timetable-form.scss +0 -63
  546. package/core/styles/option-panel-common.global.scss +0 -11
  547. package/core/styles/option-panel-common.scss +0 -157
  548. package/core/styles/theme.scss +0 -20
  549. package/core/styles/timetable-form.scss +0 -27
  550. package/core/styles/typography.private.scss +0 -9
  551. package/core.css +0 -2713
  552. package/development/autocomplete-base-element-qnPoRLvM.js +0 -695
  553. package/development/breadcrumb-group.component-BUBfl6LV.js +0 -193
  554. package/development/calendar.component-CG96KGTg.js +0 -1469
  555. package/development/file-selector-common-mZ5UYxOF.js +0 -421
  556. package/development/flip-card.component-DujrPKzU.js +0 -185
  557. package/development/header-action-common-Be0XQge2.js +0 -86
  558. package/development/inline-link-common-gmt6yz3v.js +0 -18
  559. package/development/link-list.component-B90qHOUD.js +0 -97
  560. package/development/menu-action-common-DRXQc85Y.js +0 -32
  561. package/development/menu.component-Cv9wRj4H.js +0 -365
  562. package/development/navigation-list.component-Dvv-bZ2V.js +0 -86
  563. package/development/navigation-marker.component-DMqe-VlY.js +0 -120
  564. package/development/navigation.component-CqNkBvEs.js +0 -315
  565. package/development/option.component-CV6cZnJe.js +0 -131
  566. package/development/paginator.component-BwLUSpDj.js +0 -261
  567. package/development/popover.component-CKUZbWbV.js +0 -578
  568. package/development/radio-button-common-G0jLFo41.js +0 -129
  569. package/development/select.component-CUjF11sq.js +0 -807
  570. package/development/selection-expansion-panel.component-BT78Qhbf.js +0 -186
  571. package/development/sidebar-container.component-CxwDKxv9.js +0 -100
  572. package/development/skiplink-list.component-m7xm-pns.js +0 -129
  573. package/development/slider.component-D_nLTlRF.js +0 -346
  574. package/development/step-label.component-Bo7Z0w7N.js +0 -127
  575. package/development/stepper.component-BeqeUIRN.js +0 -443
  576. package/development/styles-Cctez2BS.js +0 -22
  577. package/development/tab-nav-bar.component-B_mi8GGR.js +0 -109
  578. package/development/tag-group.component-Db8prSBL.js +0 -194
  579. package/development/tag.component-DG1uxD28.js +0 -238
  580. package/development/teaser-product.component-DMyuB-cH.js +0 -37
  581. package/development/teaser.component-CF_NUbwJ.js +0 -116
  582. package/development/time-input.component-XxzRoupm.js +0 -187
  583. package/development/timetable-occupancy-icon.component-UBmyZsTO.js +0 -95
  584. package/development/timetable-occupancy.component-DMm242Fr.js +0 -122
  585. package/development/title-base-D_Rjyk_j.js +0 -102
  586. package/development/title.component-CMxYhTfw.js +0 -71
  587. package/development/toggle.component-B03k5qc1.js +0 -243
  588. package/development/tooltip.component-D8zik3p4.js +0 -369
  589. package/development/train-wagon-common-Dg-BjUtC.js +0 -441
  590. package/development/train.component-dECIGw2x.js +0 -239
  591. package/header-action-common-DuPx0U2o.js +0 -64
  592. package/inline-link-common-BqqH1ExY.js +0 -13
  593. package/layout.css +0 -30
  594. package/lists.css +0 -194
  595. package/normalize.css +0 -95
  596. package/paginator.component-DB8l-B6J.js +0 -208
  597. package/scrollbar.css +0 -124
  598. package/styles-DAMaYe4p.js +0 -5
  599. package/table.css +0 -261
  600. package/timetable-form.css +0 -73
  601. package/typography.css +0 -67
  602. /package/{compact-paginator.component-BAuShgQE.js → compact-paginator.component-B-8gf_qD.js} +0 -0
  603. /package/core/styles/{disable-animation.scss → disable-animation-extension.scss} +0 -0
  604. /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss} +0 -0
  605. /package/core/styles/{node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss → features/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss} +0 -0
  606. /package/core/styles/{normalize.scss → features/normalize.scss} +0 -0
  607. /package/core/styles/{scrollbar.private.scss → features/scrollbar.private.scss} +0 -0
  608. /package/core/styles/mixins/{animation.scss → _animation.scss} +0 -0
  609. /package/core/styles/mixins/{font-face.scss → _font-face.scss} +0 -0
  610. /package/core/styles/mixins/{layout.scss → _layout.scss} +0 -0
  611. /package/core/styles/mixins/{scrollbar.scss → _scrollbar.scss} +0 -0
  612. /package/{disable-animation.css → disable-animation-extension.css} +0 -0
  613. /package/{option.component-BeorlZT0.js → option.component-DiH8AMlV.js} +0 -0
  614. /package/{overlay.component-myJflfLY.js → overlay.component-D7Z_vx1A.js} +0 -0
  615. /package/{paginator-common-BWewgXga.js → paginator-common-C0Kn9ibe.js} +0 -0
  616. /package/{radio-button-common-CrIRn10q.js → radio-button-common-BDNSqXg-.js} +0 -0
  617. /package/{selection-action-panel.component-DCGJQ3Mx.js → selection-action-panel.component-Ba7N1Hgt.js} +0 -0
  618. /package/{selection-expansion-panel.component-Cu1egfTY.js → selection-expansion-panel.component-BL1FPfPM.js} +0 -0
  619. /package/{sidebar-close-button.component-8owwjvk3.js → sidebar-close-button.component-CLjOpBM2.js} +0 -0
  620. /package/{sidebar-container.component-Dcke-Uhr.js → sidebar-container.component-8filIF5E.js} +0 -0
  621. /package/{sidebar-content.component-CYupfsq_.js → sidebar-content.component-DMdjHDdq.js} +0 -0
  622. /package/{sidebar-title.component-Cf64lCJx.js → sidebar-title.component-DaIkBNY9.js} +0 -0
  623. /package/{sidebar.component-LaqQzMo2.js → sidebar.component-D_HLDNnq.js} +0 -0
  624. /package/{signet.component-3Xfke8uk.js → signet.component-6q3GxORI.js} +0 -0
  625. /package/{slider.component-BlUWAWJU.js → slider.component-C8LKcM11.js} +0 -0
  626. /package/{status.component-mel7wA1j.js → status.component-DMfZTgzz.js} +0 -0
  627. /package/{step-label.component-BGSaHafq.js → step-label.component-CjNZYk5b.js} +0 -0
  628. /package/{step.component-tJh-Pb_E.js → step.component-BCkwsZdk.js} +0 -0
  629. /package/{stepper.component-BCl77LVa.js → stepper.component-mq66fR06.js} +0 -0
  630. /package/{styles-DisU4TWi.js → styles-DWm_OYpV.js} +0 -0
  631. /package/{tab-group.component-CDhggNpe.js → tab-group.component-MEm2W7QR.js} +0 -0
  632. /package/{tab-label.component-BuF2qt1T.js → tab-label.component-BqznCfW8.js} +0 -0
  633. /package/{tab.component-D6hfhlZw.js → tab.component-DPwbvqp4.js} +0 -0
  634. /package/{table-wrapper.component-C83EYuZP.js → table-wrapper.component-LzYuAVPb.js} +0 -0
  635. /package/{tag.component-BKuxfdDi.js → tag.component-zGPaopTo.js} +0 -0
  636. /package/{teaser-hero.component-mv6HL4vm.js → teaser-hero.component-BlhffYux.js} +0 -0
  637. /package/{teaser-panel.component-qRmy2lbz.js → teaser-panel.component-BCbKgXVt.js} +0 -0
  638. /package/{teaser-product-common-J1KZ2Hlw.js → teaser-product-common-C_lgMbyC.js} +0 -0
  639. /package/{teaser-product.component-BcleFVcu.js → teaser-product.component-CQIXu7sq.js} +0 -0
  640. /package/{teaser.component-BOqCERR7.js → teaser.component-D9z78Eny.js} +0 -0
  641. /package/{time-input.component-Dw8pPYDK.js → time-input.component-CLHEoWze.js} +0 -0
  642. /package/{timetable-form-details.component-0c6h6shd.js → timetable-form-details.component-DJ3oPkQP.js} +0 -0
  643. /package/{timetable-form-field.component-Cya8n2Ms.js → timetable-form-field.component-6s8_sz9h.js} +0 -0
  644. /package/{timetable-form-swap-button.component-rI_0UYJw.js → timetable-form-swap-button.component-BY2m2_k9.js} +0 -0
  645. /package/{timetable-form.component-DVps6baq.js → timetable-form.component-Swe8BX7g.js} +0 -0
  646. /package/{timetable-occupancy-icon.component-ABh1bz-X.js → timetable-occupancy-icon.component-C44eSFOM.js} +0 -0
  647. /package/{toggle-check.component-BcQ5ht0O.js → toggle-check.component-Ce-klZJB.js} +0 -0
  648. /package/{toggle-option.component-DQcPDXyl.js → toggle-option.component-BdMfGuA-.js} +0 -0
  649. /package/{toggle.component-DARkqJol.js → toggle.component-ySmrXvjA.js} +0 -0
  650. /package/{train-blocked-passage.component-B601YYJl.js → train-blocked-passage.component-UnNCmspZ.js} +0 -0
  651. /package/{visual-checkbox.component-YhX5Qk3j.js → visual-checkbox.component-JmGORoDU.js} +0 -0
@@ -0,0 +1,369 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbDisabledMixin, SbbEscapableOverlayController, SbbOpenCloseBaseElement, SbbOverlayPositionController, appendAriaElements, idReference, isAndroid, isIOS, isZeroAnimationDuration, popoverResetStyles, queueDomContentLoaded, readConfig, removeAriaElements, sbbOverlayOutsidePointerEventListener } from "./core.js";
5
+ //#region src/elements/tooltip/tooltip.scss?inline
6
+ var tooltip_default = ":host {\n --sbb-tooltip-max-width: min(\n 25rem,\n calc(100vw - var(--sbb-spacing-fixed-2x))\n );\n --sbb-tooltip-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-4x)\n );\n position-area: var(--sbb-overlay-position-area);\n position-try-fallbacks: var(--sbb-overlay-position-try-fallbacks);\n display: none;\n position: fixed;\n pointer-events: var(--sbb-tooltip-pointer-events, all);\n z-index: var(--sbb-tooltip-z-index, var(--sbb-overlay-default-z-index));\n animation-name: var(--sbb-tooltip-animation-name);\n animation-duration: var(--sbb-tooltip-animation-duration);\n animation-timing-function: var(--sbb-tooltip-animation-easing);\n font-size: var(--sbb-tooltip-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {\n --sbb-tooltip-animation-name: open;\n display: block;\n}\n\n:host(:is(:state(state-closing),[state--state-closing])) {\n --sbb-tooltip-animation-name: close;\n --sbb-tooltip-pointer-events: none;\n}\n\n:host(:is([data-position~=block-end], [data-position~=bottom], [data-position^=end])) {\n padding-block-start: var(--sbb-tooltip-gap);\n}\n\n:host(:is([data-position~=block-start], [data-position~=top], [data-position^=start])) {\n padding-block-end: var(--sbb-tooltip-gap);\n}\n\n:host(:is([data-position~=inline-start],\n[data-position~=inline-end],\n[data-position~=left],\n[data-position~=right],\n[data-position$=\" start\"],\n[data-position$=\" end\"])) {\n padding-inline: var(--sbb-tooltip-gap);\n}\n\n.sbb-tooltip {\n box-shadow: var(--sbb-box-shadow-level-5-soft);\n border: var(--sbb-border-width-1x) solid var(--sbb-tooltip-border-color);\n border-radius: var(--sbb-tooltip-border-radius);\n padding: var(--sbb-tooltip-padding);\n color: var(--sbb-tooltip-color);\n background-color: var(--sbb-tooltip-background-color);\n min-width: var(--sbb-tooltip-min-width);\n max-width: var(--sbb-tooltip-max-width);\n}\n\n@keyframes open {\n from {\n opacity: 0;\n translate: var(--sbb-tooltip-animation-translate);\n }\n to {\n opacity: 1;\n translate: 0;\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n translate: 0;\n }\n to {\n opacity: 0;\n translate: var(--sbb-tooltip-animation-translate);\n }\n}";
7
+ //#endregion
8
+ //#region src/elements/tooltip/tooltip.component.ts
9
+ /**
10
+ * Time between the user putting the pointer on a tooltip
11
+ * trigger and the long press event being fired.
12
+ */
13
+ var LONGPRESS_DELAY = 500;
14
+ var isMobile = isAndroid || isIOS;
15
+ var tooltipTriggers = /* @__PURE__ */ new WeakMap();
16
+ /**
17
+ * It displays text content within a tooltip.
18
+ *
19
+ * @slot - Use the unnamed slot to add the text into the tooltip.
20
+ * @cssprop [--sbb-overlay-position-area=block-end] - The primary position for the tooltip.
21
+ * @cssprop [--sbb-overlay-position-try-fallbacks=block-end span-inline-end, block-end span-inline-start, block-start, block-start span-inline-end, block-start span-inline-start] -
22
+ * The list of fallback positions, separated by ',', for the tooltip
23
+ * @cssprop [--sbb-tooltip-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
24
+ * the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
25
+ * component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
26
+ */
27
+ var SbbTooltipElement = (() => {
28
+ let _classSuper = SbbDisabledMixin(SbbOpenCloseBaseElement);
29
+ let _instanceExtraInitializers = [];
30
+ let _trigger_decorators;
31
+ let _trigger_initializers = [];
32
+ let _trigger_extraInitializers = [];
33
+ let _set_openDelay_decorators;
34
+ let _set_closeDelay_decorators;
35
+ let _set_longPressCloseDelay_decorators;
36
+ return class SbbTooltipElement extends _classSuper {
37
+ static {
38
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
39
+ _trigger_decorators = [idReference(), property()];
40
+ _set_openDelay_decorators = [property({
41
+ attribute: "open-delay",
42
+ type: Number
43
+ })];
44
+ _set_closeDelay_decorators = [property({
45
+ attribute: "close-delay",
46
+ type: Number
47
+ })];
48
+ _set_longPressCloseDelay_decorators = [property({
49
+ attribute: "long-press-close-delay",
50
+ type: Number
51
+ })];
52
+ __esDecorate(this, null, _trigger_decorators, {
53
+ kind: "accessor",
54
+ name: "trigger",
55
+ static: false,
56
+ private: false,
57
+ access: {
58
+ has: (obj) => "trigger" in obj,
59
+ get: (obj) => obj.trigger,
60
+ set: (obj, value) => {
61
+ obj.trigger = value;
62
+ }
63
+ },
64
+ metadata: _metadata
65
+ }, _trigger_initializers, _trigger_extraInitializers);
66
+ __esDecorate(this, null, _set_openDelay_decorators, {
67
+ kind: "setter",
68
+ name: "openDelay",
69
+ static: false,
70
+ private: false,
71
+ access: {
72
+ has: (obj) => "openDelay" in obj,
73
+ set: (obj, value) => {
74
+ obj.openDelay = value;
75
+ }
76
+ },
77
+ metadata: _metadata
78
+ }, null, _instanceExtraInitializers);
79
+ __esDecorate(this, null, _set_closeDelay_decorators, {
80
+ kind: "setter",
81
+ name: "closeDelay",
82
+ static: false,
83
+ private: false,
84
+ access: {
85
+ has: (obj) => "closeDelay" in obj,
86
+ set: (obj, value) => {
87
+ obj.closeDelay = value;
88
+ }
89
+ },
90
+ metadata: _metadata
91
+ }, null, _instanceExtraInitializers);
92
+ __esDecorate(this, null, _set_longPressCloseDelay_decorators, {
93
+ kind: "setter",
94
+ name: "longPressCloseDelay",
95
+ static: false,
96
+ private: false,
97
+ access: {
98
+ has: (obj) => "longPressCloseDelay" in obj,
99
+ set: (obj, value) => {
100
+ obj.longPressCloseDelay = value;
101
+ }
102
+ },
103
+ metadata: _metadata
104
+ }, null, _instanceExtraInitializers);
105
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
106
+ enumerable: true,
107
+ configurable: true,
108
+ writable: true,
109
+ value: _metadata
110
+ });
111
+ }
112
+ static {
113
+ this.elementName = "sbb-tooltip";
114
+ }
115
+ static {
116
+ this.role = "tooltip";
117
+ }
118
+ static {
119
+ this.styles = [popoverResetStyles, unsafeCSS(tooltip_default)];
120
+ }
121
+ static {
122
+ if (!isServer) queueDomContentLoaded(() => this._initializeTooltipOutlet());
123
+ }
124
+ #trigger_accessor_storage;
125
+ /**
126
+ * The element that will trigger the tooltip overlay.
127
+ *
128
+ * For attribute usage, provide an id reference.
129
+ */
130
+ get trigger() {
131
+ return this.#trigger_accessor_storage;
132
+ }
133
+ set trigger(value) {
134
+ this.#trigger_accessor_storage = value;
135
+ }
136
+ /**
137
+ * Open the tooltip after a given delay in milliseconds.
138
+ * Global configuration is used as default, if not set.
139
+ *
140
+ * @default null
141
+ */
142
+ set openDelay(value) {
143
+ this._openDelay = value;
144
+ }
145
+ get openDelay() {
146
+ return this._openDelay ?? readConfig().tooltip?.openDelay ?? 0;
147
+ }
148
+ /**
149
+ * Close the tooltip after a given delay in milliseconds.
150
+ * Global configuration is used as default, if not set.
151
+ *
152
+ * @default null
153
+ */
154
+ set closeDelay(value) {
155
+ this._closeDelay = value;
156
+ }
157
+ get closeDelay() {
158
+ return this._closeDelay ?? readConfig().tooltip?.closeDelay ?? 0;
159
+ }
160
+ /**
161
+ * Automatically close the tooltip after it has been open by long press.
162
+ * Global configuration is used as default, if not set.
163
+ *
164
+ * @default 1500
165
+ */
166
+ set longPressCloseDelay(value) {
167
+ this._longPressCloseDelay = +value;
168
+ }
169
+ get longPressCloseDelay() {
170
+ return this._longPressCloseDelay ?? readConfig().tooltip?.longPressCloseDelay ?? 1500;
171
+ }
172
+ constructor() {
173
+ super();
174
+ this.#trigger_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _trigger_initializers, null));
175
+ this._openDelay = (__runInitializers(this, _trigger_extraInitializers), null);
176
+ this._closeDelay = null;
177
+ this._triggerElement = null;
178
+ this._escapableOverlayController = new SbbEscapableOverlayController(this);
179
+ this._overlayController = new SbbOverlayPositionController(this);
180
+ this.addEventListener("mouseleave", (event) => {
181
+ if ((this.state === "opened" || this.state === "opening") && (!event.relatedTarget || !this._triggerElement?.contains(event.relatedTarget))) this._delayedClose();
182
+ }, { passive: true });
183
+ this.addEventListener("overlayOutsidePointer", () => this.close(), { passive: true });
184
+ this.addEventListener("animationend", (e) => this._onTooltipAnimationEnd(e), { passive: true });
185
+ }
186
+ static _initializeTooltipOutlet() {
187
+ this._tooltipOutlet = document.createElement("div");
188
+ this._tooltipOutlet.classList.add("sbb-overlay-outlet");
189
+ document.body.appendChild(this._tooltipOutlet);
190
+ new MutationObserver((mutations) => {
191
+ for (const mutation of mutations) if (mutation.type === "attributes") this._handleTooltipTrigger(mutation.target);
192
+ else if (mutation.type === "childList") for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
193
+ this._handleTooltipTrigger(node);
194
+ this._findAndHandleTooltipTriggers(node);
195
+ }
196
+ }).observe(document.documentElement, {
197
+ attributeFilter: [
198
+ "sbb-tooltip",
199
+ "sbb-tooltip-open-delay",
200
+ "sbb-tooltip-close-delay",
201
+ "sbb-tooltip-position"
202
+ ],
203
+ childList: true,
204
+ subtree: true
205
+ });
206
+ this._findAndHandleTooltipTriggers(document.body);
207
+ }
208
+ static _findAndHandleTooltipTriggers(root) {
209
+ root.querySelectorAll("[sbb-tooltip]").forEach((e) => this._handleTooltipTrigger(e));
210
+ }
211
+ static _handleTooltipTrigger(triggerElement) {
212
+ const tooltipMessage = triggerElement.getAttribute("sbb-tooltip");
213
+ let tooltip = tooltipTriggers.get(triggerElement);
214
+ if (tooltipMessage && triggerElement.isConnected) {
215
+ if (!tooltip) {
216
+ tooltip = document.createElement("sbb-tooltip");
217
+ tooltipTriggers.set(triggerElement, tooltip);
218
+ this._tooltipOutlet.appendChild(tooltip);
219
+ tooltip.trigger = triggerElement;
220
+ }
221
+ tooltip.textContent = tooltipMessage;
222
+ tooltip.openDelay = triggerElement.hasAttribute("sbb-tooltip-open-delay") ? +triggerElement.getAttribute("sbb-tooltip-open-delay") : null;
223
+ tooltip.closeDelay = triggerElement.hasAttribute("sbb-tooltip-close-delay") ? +triggerElement.getAttribute("sbb-tooltip-close-delay") : null;
224
+ const positions = triggerElement.hasAttribute("sbb-tooltip-position") ? triggerElement.getAttribute("sbb-tooltip-position").split(",").map((p) => p.trim()) : triggerElement.tooltipPositions;
225
+ if (positions && positions.length > 0) {
226
+ tooltip.style.setProperty("--sbb-overlay-position-area", positions[0]);
227
+ tooltip.style.setProperty("--sbb-overlay-position-try-fallbacks", positions.slice(1).join(", "));
228
+ } else {
229
+ tooltip.style.removeProperty("--sbb-overlay-position-area");
230
+ tooltip.style.removeProperty("--sbb-overlay-position-try-fallbacks");
231
+ }
232
+ } else if (tooltip) {
233
+ tooltipTriggers.delete(triggerElement);
234
+ tooltip._destroy?.();
235
+ }
236
+ }
237
+ connectedCallback() {
238
+ super.connectedCallback();
239
+ this.popover = "manual";
240
+ this.state = "closed";
241
+ sbbOverlayOutsidePointerEventListener.connect(this);
242
+ if (this.hasUpdated && this.trigger) this._attach(this.trigger);
243
+ }
244
+ disconnectedCallback() {
245
+ super.disconnectedCallback();
246
+ sbbOverlayOutsidePointerEventListener.disconnect(this);
247
+ this._detach();
248
+ }
249
+ requestUpdate(name, oldValue, options) {
250
+ super.requestUpdate(name, oldValue, options);
251
+ if (isServer) return;
252
+ if ((!name || name === "trigger") && this.hasUpdated) this._attach(this.trigger);
253
+ }
254
+ firstUpdated(changedProperties) {
255
+ super.firstUpdated(changedProperties);
256
+ this._attach(this.trigger);
257
+ }
258
+ open() {
259
+ this._resetOpenCloseTimeout();
260
+ if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.trigger || !this.dispatchBeforeOpenEvent()) return;
261
+ this.showPopover?.();
262
+ this.state = "opening";
263
+ this._overlayController.connect(this.trigger);
264
+ if (this._isZeroAnimationDuration()) this._handleOpening();
265
+ }
266
+ close() {
267
+ this._resetOpenCloseTimeout();
268
+ if (this.state !== "opened" && this.state !== "opening") return;
269
+ this.dispatchBeforeCloseEvent();
270
+ this.state = "closing";
271
+ if (this._isZeroAnimationDuration()) this._handleClosing();
272
+ }
273
+ _delayedOpen() {
274
+ this._resetOpenCloseTimeout();
275
+ this._openTimeout = setTimeout(() => this.open(), this.openDelay);
276
+ }
277
+ _handleOpening() {
278
+ this.state = "opened";
279
+ this._escapableOverlayController.connect();
280
+ this.dispatchOpenEvent();
281
+ }
282
+ _delayedClose() {
283
+ this._resetOpenCloseTimeout();
284
+ this._closeTimeout = setTimeout(() => this.close(), this.closeDelay);
285
+ }
286
+ _handleClosing() {
287
+ this.state = "closed";
288
+ this.hidePopover?.();
289
+ this._overlayController.disconnect();
290
+ this._escapableOverlayController.disconnect();
291
+ this.dispatchCloseEvent();
292
+ this._openStateController?.abort();
293
+ }
294
+ _onTooltipAnimationEnd(event) {
295
+ if (event.animationName === "open" && this.state === "opening") this._handleOpening();
296
+ else if (event.animationName === "close" && this.state === "closing") this._handleClosing();
297
+ }
298
+ _attach(trigger) {
299
+ if (this._triggerElement) this._detach();
300
+ this._triggerElement = trigger;
301
+ if (!this._triggerElement) return;
302
+ this._triggerElement.ariaDescribedByElements = appendAriaElements(this._triggerElement.ariaDescribedByElements, this);
303
+ this._addTriggerEventHandlers();
304
+ }
305
+ _detach() {
306
+ this._triggerAbortController?.abort();
307
+ this._openStateController?.abort();
308
+ this._resetOpenCloseTimeout();
309
+ clearTimeout(this._longPressOpenTimeout);
310
+ clearTimeout(this._longPressCloseTimeout);
311
+ if (!this._triggerElement) return;
312
+ this._triggerElement.ariaDescribedByElements = removeAriaElements(this._triggerElement.ariaDescribedByElements, this);
313
+ this._triggerElement = null;
314
+ }
315
+ _destroy() {
316
+ this._detach();
317
+ this.remove();
318
+ }
319
+ _addTriggerEventHandlers() {
320
+ const trigger = this._triggerElement;
321
+ if (!trigger) return;
322
+ this._triggerAbortController?.abort();
323
+ this._triggerAbortController = new AbortController();
324
+ const options = {
325
+ signal: this._triggerAbortController.signal,
326
+ passive: true
327
+ };
328
+ if (!isMobile) {
329
+ trigger.addEventListener("mouseenter", () => this._delayedOpen(), options);
330
+ trigger.addEventListener("mouseleave", (event) => {
331
+ const newTarget = event.relatedTarget;
332
+ if (!newTarget || newTarget !== this) this._delayedClose();
333
+ }, options);
334
+ trigger.addEventListener("blur", () => this.close(), options);
335
+ trigger.addEventListener("focus", () => this._delayedOpen(), options);
336
+ }
337
+ trigger.addEventListener("touchstart", () => {
338
+ clearTimeout(this._longPressOpenTimeout);
339
+ clearTimeout(this._longPressCloseTimeout);
340
+ this._longPressOpenTimeout = setTimeout(() => this.open(), LONGPRESS_DELAY);
341
+ }, options);
342
+ trigger.addEventListener("touchend", () => {
343
+ clearTimeout(this._longPressOpenTimeout);
344
+ this._longPressCloseTimeout = setTimeout(() => this.close(), this.longPressCloseDelay);
345
+ }, options);
346
+ trigger.addEventListener("touchcancel", () => {
347
+ clearTimeout(this._longPressOpenTimeout);
348
+ }, options);
349
+ }
350
+ _isZeroAnimationDuration() {
351
+ return isZeroAnimationDuration(this, "--sbb-tooltip-animation-duration");
352
+ }
353
+ _resetOpenCloseTimeout() {
354
+ clearTimeout(this._openTimeout);
355
+ clearTimeout(this._closeTimeout);
356
+ }
357
+ render() {
358
+ return html`
359
+ <div class="sbb-tooltip">
360
+ <slot></slot>
361
+ </div>
362
+ `;
363
+ }
364
+ };
365
+ })();
366
+ //#endregion
367
+ export { SbbTooltipElement as t };
368
+
369
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQtQmFvaDZNOFYuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3Rvb2x0aXAvdG9vbHRpcC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1zYmItdG9vbHRpcC1tYXgtd2lkdGg6IG1pbihcbiAgICAje3NiYi5weC10by1yZW0tYnVpbGQoNDAwKX0sXG4gICAgY2FsYygxMDB2dyAtIHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTJ4KSlcbiAgKTtcbiAgLS1zYmItdG9vbHRpcC1hbmltYXRpb24tZHVyYXRpb246IHZhcihcbiAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICB2YXIoLS1zYmItYW5pbWF0aW9uLWR1cmF0aW9uLTR4KVxuICApO1xuXG4gIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBwb2ludGVyLWV2ZW50czogdmFyKC0tc2JiLXRvb2x0aXAtcG9pbnRlci1ldmVudHMsIGFsbCk7XG4gIHotaW5kZXg6IHZhcigtLXNiYi10b29sdGlwLXotaW5kZXgsIHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCkpO1xuICBhbmltYXRpb24tbmFtZTogdmFyKC0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLW5hbWUpO1xuICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXNiYi10b29sdGlwLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi10b29sdGlwLWFuaW1hdGlvbi1lYXNpbmcpO1xuICBmb250LXNpemU6IHZhcigtLXNiYi10b29sdGlwLWZvbnQtc2l6ZSk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zYmItdHlwby1sZXR0ZXItc3BhY2luZy10ZXh0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpO1xufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtb3BlbmVkKSwgOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSkge1xuICAtLXNiYi10b29sdGlwLWFuaW1hdGlvbi1uYW1lOiBvcGVuO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG46aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpIHtcbiAgLS1zYmItdG9vbHRpcC1hbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIC0tc2JiLXRvb2x0aXAtcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbjpob3N0KDppcyhbZGF0YS1wb3NpdGlvbn49J2Jsb2NrLWVuZCddLCBbZGF0YS1wb3NpdGlvbn49J2JvdHRvbSddLCBbZGF0YS1wb3NpdGlvbl49J2VuZCddKSkge1xuICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItdG9vbHRpcC1nYXApO1xufVxuXG46aG9zdCg6aXMoW2RhdGEtcG9zaXRpb25+PSdibG9jay1zdGFydCddLCBbZGF0YS1wb3NpdGlvbn49J3RvcCddLCBbZGF0YS1wb3NpdGlvbl49J3N0YXJ0J10pKSB7XG4gIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1zYmItdG9vbHRpcC1nYXApO1xufVxuXG46aG9zdChcbiAgOmlzKFxuICAgIFtkYXRhLXBvc2l0aW9ufj0naW5saW5lLXN0YXJ0J10sXG4gICAgW2RhdGEtcG9zaXRpb25+PSdpbmxpbmUtZW5kJ10sXG4gICAgW2RhdGEtcG9zaXRpb25+PSdsZWZ0J10sXG4gICAgW2RhdGEtcG9zaXRpb25+PSdyaWdodCddLFxuICAgIFtkYXRhLXBvc2l0aW9uJD0nIHN0YXJ0J10sXG4gICAgW2RhdGEtcG9zaXRpb24kPScgZW5kJ11cbiAgKVxuKSB7XG4gIC8vIEFkZCBhIGdhcCBvbiBib3RoIHNpZGVzIHRvIGRpc3RhbmNlIHRoZSB0b29sdGlwIGZyb20gdGhlIHRyaWdnZXIgYW5kIHRoZSBlZGdlIG9mIHRoZSB2aWV3cG9ydC5cbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10b29sdGlwLWdhcCk7XG59XG5cbi5zYmItdG9vbHRpcCB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNiYi1ib3gtc2hhZG93LWxldmVsLTUtc29mdCk7XG4gIGJvcmRlcjogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgdmFyKC0tc2JiLXRvb2x0aXAtYm9yZGVyLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXRvb2x0aXAtYm9yZGVyLXJhZGl1cyk7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi10b29sdGlwLXBhZGRpbmcpO1xuICBjb2xvcjogdmFyKC0tc2JiLXRvb2x0aXAtY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgbWluLXdpZHRoOiB2YXIoLS1zYmItdG9vbHRpcC1taW4td2lkdGgpO1xuICBtYXgtd2lkdGg6IHZhcigtLXNiYi10b29sdGlwLW1heC13aWR0aCk7XG59XG5cbkBrZXlmcmFtZXMgb3BlbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNsYXRlOiB2YXIoLS1zYmItdG9vbHRpcC1hbmltYXRpb24tdHJhbnNsYXRlKTtcbiAgfVxuXG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zbGF0ZTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2xhdGU6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2xhdGU6IHZhcigtLXNiYi10b29sdGlwLWFuaW1hdGlvbi10cmFuc2xhdGUpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgYXBwZW5kQXJpYUVsZW1lbnRzLFxuICBpZFJlZmVyZW5jZSxcbiAgaXNBbmRyb2lkLFxuICBpc0lPUyxcbiAgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24sXG4gIHBvcG92ZXJSZXNldFN0eWxlcyxcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICByZWFkQ29uZmlnLFxuICByZW1vdmVBcmlhRWxlbWVudHMsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lcixcbiAgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlcixcbn0gZnJvbSAnLi4vY29yZS50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3Rvb2x0aXAuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIERlZmluZXMgdGhlIGRlZmF1bHQgcG9zaXRpb24gZm9yIHRoZSB0b29sdGlwIGlmIHRoaXMgZWxlbWVudCBpcyB1c2VkIGFzIGEgdHJpZ2dlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYmJUb29sdGlwRGVmYXVsdFBvc2l0aW9ucyB7XG4gIHJlYWRvbmx5IHRvb2x0aXBQb3NpdGlvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRpbWUgYmV0d2VlbiB0aGUgdXNlciBwdXR0aW5nIHRoZSBwb2ludGVyIG9uIGEgdG9vbHRpcFxuICogdHJpZ2dlciBhbmQgdGhlIGxvbmcgcHJlc3MgZXZlbnQgYmVpbmcgZmlyZWQuXG4gKi9cbmNvbnN0IExPTkdQUkVTU19ERUxBWSA9IDUwMDtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgdGV4dCBjb250ZW50IHdpdGhpbiBhIHRvb2x0aXAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgdGhlIHRleHQgaW50byB0aGUgdG9vbHRpcC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWE9YmxvY2stZW5kXSAtIFRoZSBwcmltYXJ5IHBvc2l0aW9uIGZvciB0aGUgdG9vbHRpcC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3M9YmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCwgYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0LCBibG9jay1zdGFydCwgYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kLCBibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydF0gLVxuICogVGhlIGxpc3Qgb2YgZmFsbGJhY2sgcG9zaXRpb25zLCBzZXBhcmF0ZWQgYnkgJywnLCBmb3IgdGhlIHRvb2x0aXBcbiAqIEBjc3Nwcm9wIFstLXNiYi10b29sdGlwLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlRvb2x0aXBFbGVtZW50IGV4dGVuZHMgU2JiRGlzYWJsZWRNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLXRvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAndG9vbHRpcCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtwb3BvdmVyUmVzZXRTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIHByaXZhdGUgc3RhdGljIF90b29sdGlwT3V0bGV0OiBFbGVtZW50O1xuXG4gIHN0YXRpYyB7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBibG9jayBleGVjdXRpb24gZm9yIGluaXRpYWxpemF0aW9uLFxuICAgICAgLy8gc28gd2UgZGVmZXIgaXQgdW50aWwgdGhlIERPTSBjb250ZW50IGlzIGxvYWRlZC5cbiAgICAgIHF1ZXVlRG9tQ29udGVudExvYWRlZCgoKSA9PiB0aGlzLl9pbml0aWFsaXplVG9vbHRpcE91dGxldCgpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIHRvb2x0aXAgb3ZlcmxheS5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogT3BlbiB0aGUgdG9vbHRpcCBhZnRlciBhIGdpdmVuIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdvcGVuLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgb3BlbkRlbGF5KHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdGhpcy5fb3BlbkRlbGF5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBvcGVuRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbkRlbGF5ID8/IHJlYWRDb25maWcoKS50b29sdGlwPy5vcGVuRGVsYXkgPz8gMDtcbiAgfVxuICBwcml2YXRlIF9vcGVuRGVsYXk6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgdG9vbHRpcCBhZnRlciBhIGdpdmVuIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjbG9zZS1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IGNsb3NlRGVsYXkodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLl9jbG9zZURlbGF5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBjbG9zZURlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlRGVsYXkgPz8gcmVhZENvbmZpZygpLnRvb2x0aXA/LmNsb3NlRGVsYXkgPz8gMDtcbiAgfVxuICBwcml2YXRlIF9jbG9zZURlbGF5OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBjbG9zZSB0aGUgdG9vbHRpcCBhZnRlciBpdCBoYXMgYmVlbiBvcGVuIGJ5IGxvbmcgcHJlc3MuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTUwMFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnbG9uZy1wcmVzcy1jbG9zZS1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IGxvbmdQcmVzc0Nsb3NlRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2xvbmdQcmVzc0Nsb3NlRGVsYXkgPSArdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBsb25nUHJlc3NDbG9zZURlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2xvbmdQcmVzc0Nsb3NlRGVsYXkgPz8gcmVhZENvbmZpZygpLnRvb2x0aXA/LmxvbmdQcmVzc0Nsb3NlRGVsYXkgPz8gMTUwMDtcbiAgfVxuICBwcml2YXRlIF9sb25nUHJlc3NDbG9zZURlbGF5PzogbnVtYmVyO1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9vcGVuU3RhdGVDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3BlblRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgcHJpdmF0ZSBfY2xvc2VUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc09wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2xvbmdQcmVzc0Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgLy8gVW50aWwgdGhlIG1vdXNlIGhvdmVycyB0aGUgdG9vbHRpcCwgaXQgc3RheXMgb3Blbi5cbiAgICAvLyBPbiAnbW91c2VsZWF2ZScgKGlmIHRoZSBtb3VzZSBpcyBub3QgbW92ZWQgb250byB0aGUgdHJpZ2dlciBhZ2FpbiksIGNsb3NlIGl0LlxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykgJiZcbiAgICAgICAgICAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50Py5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICAvLyBBbnkgdXNlciBpbnRlcmFjdGlvbiBvdXRzaWRlIHRoZSB0b29sdGlwIGNsb3NlcyBpdCBpbW1lZGlhdGVseVxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignb3ZlcmxheU91dHNpZGVQb2ludGVyJywgKCkgPT4gdGhpcy5jbG9zZSgpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIChlKSA9PiB0aGlzLl9vblRvb2x0aXBBbmltYXRpb25FbmQoZSksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9pbml0aWFsaXplVG9vbHRpcE91dGxldCgpOiB2b2lkIHtcbiAgICB0aGlzLl90b29sdGlwT3V0bGV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fdG9vbHRpcE91dGxldC5jbGFzc0xpc3QuYWRkKCdzYmItb3ZlcmxheS1vdXRsZXQnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX3Rvb2x0aXBPdXRsZXQpO1xuXG4gICAgLy8gV2UgYXJlIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZXIgZGlyZWN0bHkgaGVyZSwgYXMgaXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbiBjbGllbnQgc2lkZSxcbiAgICAvLyBhbmQgd2UgZG8gbm90IG5lZWQgdG8gZGlzY29ubmVjdCBpdCwgYXMgd2Ugd2FudCBpdCB0byB3b3JrIGR1cmluZyB0aGUgZnVsbCBsaWZldGltZVxuICAgIC8vIG9mIHRoZSBwYWdlLlxuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycpIHtcbiAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIFsuLi5tdXRhdGlvbi5hZGRlZE5vZGVzLCAuLi5tdXRhdGlvbi5yZW1vdmVkTm9kZXNdLmZpbHRlcihcbiAgICAgICAgICAgIChuKTogbiBpcyBIVE1MRWxlbWVudCA9PiBuLm5vZGVUeXBlID09PSBuLkVMRU1FTlRfTk9ERSxcbiAgICAgICAgICApKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVUb29sdGlwVHJpZ2dlcihub2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogW1xuICAgICAgICAnc2JiLXRvb2x0aXAnLFxuICAgICAgICAnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScsXG4gICAgICAgICdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScsXG4gICAgICAgICdzYmItdG9vbHRpcC1wb3NpdGlvbicsXG4gICAgICBdLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLl9maW5kQW5kSGFuZGxlVG9vbHRpcFRyaWdnZXJzKGRvY3VtZW50LmJvZHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMocm9vdDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICByb290XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ1tzYmItdG9vbHRpcF0nKVxuICAgICAgLmZvckVhY2goKGUpID0+IHRoaXMuX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9oYW5kbGVUb29sdGlwVHJpZ2dlcih0cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0b29sdGlwTWVzc2FnZSA9IHRyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAnKTtcbiAgICBsZXQgdG9vbHRpcCA9IHRvb2x0aXBUcmlnZ2Vycy5nZXQodHJpZ2dlckVsZW1lbnQpO1xuXG4gICAgaWYgKHRvb2x0aXBNZXNzYWdlICYmIHRyaWdnZXJFbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICBpZiAoIXRvb2x0aXApIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHNiYi10b29sdGlwIGluIHRoZSBvdXRsZXQgYW5kIGF0dGFjaCBpdCB0byB0aGUgdHJpZ2dlclxuICAgICAgICB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLXRvb2x0aXAnKTtcbiAgICAgICAgdG9vbHRpcFRyaWdnZXJzLnNldCh0cmlnZ2VyRWxlbWVudCwgdG9vbHRpcCk7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBPdXRsZXQuYXBwZW5kQ2hpbGQodG9vbHRpcCk7XG4gICAgICAgIHRvb2x0aXAudHJpZ2dlciA9IHRyaWdnZXJFbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB0b29sdGlwLnRleHRDb250ZW50ID0gdG9vbHRpcE1lc3NhZ2U7XG4gICAgICB0b29sdGlwLm9wZW5EZWxheSA9IHRyaWdnZXJFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpXG4gICAgICAgID8gK3RyaWdnZXJFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtb3Blbi1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG4gICAgICB0b29sdGlwLmNsb3NlRGVsYXkgPSB0cmlnZ2VyRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3NiYi10b29sdGlwLWNsb3NlLWRlbGF5JylcbiAgICAgICAgPyArdHJpZ2dlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzYmItdG9vbHRpcC1jbG9zZS1kZWxheScpIVxuICAgICAgICA6IG51bGw7XG5cbiAgICAgIC8vIFJlYWQgdGhlIHBvc2l0aW9ucyBmcm9tIHRoZSB0cmlnZ2VyIChlaXRoZXIgZnJvbSB0aGUgYXR0cmlidXRlIG9yIHRoZSBwcm9wZXJ0eSlcbiAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRyaWdnZXJFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnc2JiLXRvb2x0aXAtcG9zaXRpb24nKVxuICAgICAgICA/IHRyaWdnZXJFbGVtZW50XG4gICAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdzYmItdG9vbHRpcC1wb3NpdGlvbicpIVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoKHApID0+IHAudHJpbSgpKVxuICAgICAgICA6ICh0cmlnZ2VyRWxlbWVudCBhcyB1bmtub3duIGFzIFNiYlRvb2x0aXBEZWZhdWx0UG9zaXRpb25zKS50b29sdGlwUG9zaXRpb25zO1xuXG4gICAgICBpZiAocG9zaXRpb25zICYmIHBvc2l0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRvb2x0aXAuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tYXJlYScsIHBvc2l0aW9uc1swXSk7XG4gICAgICAgIHRvb2x0aXAuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgJy0tc2JiLW92ZXJsYXktcG9zaXRpb24tdHJ5LWZhbGxiYWNrcycsXG4gICAgICAgICAgcG9zaXRpb25zLnNsaWNlKDEpLmpvaW4oJywgJyksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b29sdGlwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEnKTtcbiAgICAgICAgdG9vbHRpcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b29sdGlwKSB7XG4gICAgICAvLyBUaGUgdHJpZ2dlciBvciB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIGRlbGV0ZWQgPT4gZGVsZXRlIHRoZSBjb25uZWN0ZWQgdG9vbHRpcFxuICAgICAgdG9vbHRpcFRyaWdnZXJzLmRlbGV0ZSh0cmlnZ2VyRWxlbWVudCk7XG4gICAgICAvLyBJZiBhIGNvbnN1bWVyIG92ZXJyaWRlcyB0aGUgYHNiYi10b29sdGlwYCwgdGhlIGZvbGxvd2luZyBjb2RlIHNob3VsZCBub3QgYmVcbiAgICAgIC8vIGV4ZWN1dGVkIGFzIHdlIGNhbid0IGV4cGVjdCB0aGF0IHByaXZhdGUgbWV0aG9kcyBhcmUgbW9ja2VkLlxuICAgICAgdG9vbHRpcC5fZGVzdHJveT8uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuY29ubmVjdCh0aGlzKTtcblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgdGhpcy50cmlnZ2VyKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBzYmJPdmVybGF5T3V0c2lkZVBvaW50ZXJFdmVudExpc3RlbmVyLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgdGhpcy5fZGV0YWNoKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fYXR0YWNoKHRoaXMudHJpZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBpZiAoXG4gICAgICAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NpbmcnKSB8fFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgIXRoaXMudHJpZ2dlciB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCh0aGlzLnRyaWdnZXIpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnICYmIHRoaXMuc3RhdGUgIT09ICdvcGVuaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZE9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgdGhpcy5fb3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCB0aGlzLm9wZW5EZWxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsYXllZENsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX2Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmNsb3NlRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSBhcHBlbmRBcmlhRWxlbWVudHMoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgICB0aGlzLl9hZGRUcmlnZ2VyRXZlbnRIYW5kbGVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGV0YWNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcblxuICAgIC8vIGNsZWFyIHRpbWVvdXRzXG4gICAgdGhpcy5fcmVzZXRPcGVuQ2xvc2VUaW1lb3V0KCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xvbmdQcmVzc09wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzQ2xvc2VUaW1lb3V0KTtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5hcmlhRGVzY3JpYmVkQnlFbGVtZW50cyxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hZGRUcmlnZ2VyRXZlbnRIYW5kbGVycygpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyID0gdGhpcy5fdHJpZ2dlckVsZW1lbnQ7XG4gICAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0ge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfTtcblxuICAgIGlmICghaXNNb2JpbGUpIHtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHRoaXMuX2RlbGF5ZWRPcGVuKCksIG9wdGlvbnMpO1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1RhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgICAgICAgaWYgKCFuZXdUYXJnZXQgfHwgbmV3VGFyZ2V0ICE9PSB0aGlzKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWxheWVkQ2xvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApO1xuXG4gICAgICAvLyAnYmx1cnMnIGltbWVkaWF0ZWx5IGNsb3NlIHRoZSB0b29sdGlwIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCBhbiAnaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBlbGVtZW50cydcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuY2xvc2UoKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gTG9uZy1wcmVzcyBldmVudCBoYW5kbGluZyAobWFpbmx5IGZvciBtb2JpbGUgdXNlcnMpXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoc3RhcnQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzQ2xvc2VUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMub3BlbigpLCBMT05HUFJFU1NfREVMQVkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hlbmQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5sb25nUHJlc3NDbG9zZURlbGF5KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNoY2FuY2VsJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xvbmdQcmVzc09wZW5UaW1lb3V0KTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi10b29sdGlwXCI+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FDeUNBLElBQU0sa0JBQWtCO0FBRXhCLElBQU0sV0FBVyxhQUFhO0FBQzlCLElBQU0sa0NBQWtCLElBQUksUUFBTzs7Ozs7Ozs7Ozs7O0lBYXRCLDJCQUFpQjttQkFBUyxpQkFBaUIsdUJBQXVCOzs7Ozs7OztjQUFsRSwwQkFBMEIsWUFBeUM7OzswQkFvQjdFLFlBQVcsR0FDWCxTQUFRLENBQUU7Z0NBU1YsU0FBUztJQUFFLFdBQVc7SUFBYyxNQUFNO0dBQU0sQ0FBRSxDQUFDO2lDQWVuRCxTQUFTO0lBQUUsV0FBVztJQUFlLE1BQU07R0FBTSxDQUFFLENBQUM7MENBZXBELFNBQVM7SUFBRSxXQUFXO0lBQTBCLE1BQU07R0FBTSxDQUFFLENBQUM7R0F0Q2hFLGFBQUEsTUFBQSxNQUFBLHFCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsYUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFPLE1BQUEsS0FBQSxVQUFBO01B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
@@ -1,4 +1,4 @@
1
- import { t as SbbTooltipElement } from "./tooltip.component-D8zik3p4.js";
1
+ import { t as SbbTooltipElement } from "./tooltip.component-Baoh6M8V.js";
2
2
  import "./tooltip.pure.js";
3
3
  //#region src/elements/tooltip.ts
4
4
  /** @entrypoint */
@@ -1,2 +1,2 @@
1
- import { t as SbbTooltipElement } from "./tooltip.component-D8zik3p4.js";
1
+ import { t as SbbTooltipElement } from "./tooltip.component-Baoh6M8V.js";
2
2
  export { SbbTooltipElement };
@@ -1,2 +1,2 @@
1
- import { t as SbbTrainElement } from "../../train.component-dECIGw2x.js";
1
+ import { t as SbbTrainElement } from "../../train.component-Bi74L6C7.js";
2
2
  export { SbbTrainElement };
@@ -1,2 +1,2 @@
1
- import { t as SbbTrainBlockedPassageElement } from "../../train-blocked-passage.component-Cxd7dBDC.js";
1
+ import { t as SbbTrainBlockedPassageElement } from "../../train-blocked-passage.component-C7ve-a1E.js";
2
2
  export { SbbTrainBlockedPassageElement };
@@ -1,2 +1,2 @@
1
- import { t as SbbTrainFormationElement } from "../../train-formation.component-BEg6OPib.js";
1
+ import { t as SbbTrainFormationElement } from "../../train-formation.component-DQ_hLKNv.js";
2
2
  export { SbbTrainFormationElement };
@@ -1,2 +1,2 @@
1
- import { t as SbbTrainWagonMixin } from "../train-wagon-common-Dg-BjUtC.js";
1
+ import { t as SbbTrainWagonMixin } from "../train-wagon-common-CdckItEt.js";
2
2
  export { SbbTrainWagonMixin };
@@ -19,4 +19,4 @@ var SbbTrainBlockedPassageElement = class extends SbbTrainFormationOrientationMi
19
19
  //#endregion
20
20
  export { SbbTrainBlockedPassageElement as t };
21
21
 
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tYmxvY2tlZC1wYXNzYWdlLmNvbXBvbmVudC1DeGQ3ZEJEQy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdHJhaW4vdHJhaW4tYmxvY2tlZC1wYXNzYWdlL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi1ibG9ja2VkLXBhc3NhZ2UvdHJhaW4tYmxvY2tlZC1wYXNzYWdlLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdpY29uJztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIGhlaWdodDogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0KTtcbn1cblxuOmhvc3QoOnN0YXRlKG9yaWVudGF0aW9uLXZlcnRpY2FsKSkge1xuICB3aWR0aDogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24td2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG59XG5cbjpob3N0OjpiZWZvcmUsXG46aG9zdDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZ3JpZC1hcmVhOiBpY29uO1xuICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbn1cblxuLy8gQ2lyY2xlXG46aG9zdDo6YmVmb3JlIHtcbiAgd2lkdGg6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIGhlaWdodDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1ibG9ja2VkLXBhc3NhZ2UtZGltZW5zaW9uKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWJhY2tncm91bmQtY29sb3IpO1xufVxuXG4vLyBCYXJcbjpob3N0OjphZnRlciB7XG4gIHdpZHRoOiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWljb24tYmFyLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWljb24tYmFyLWhlaWdodCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10cmFpbi1ibG9ja2VkLXBhc3NhZ2UtaWNvbi1iYXItYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi10cmFpbi1ibG9ja2VkLXBhc3NhZ2UtYmFyLWNvbG9yKTtcbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYlRyYWluRm9ybWF0aW9uT3JpZW50YXRpb25NaXhpbiB9IGZyb20gJy4uL3RyYWluLWZvcm1hdGlvbi1vcmllbnRhdGlvbi1taXhpbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5zY3NzP2lubGluZSc7XG5cbi8qKlxuICogSXQgdmlzdWFsbHkgZGlzcGxheXMgYSBibG9ja2VkIHBhc3NhZ2UgYmV0d2VlbiB0cmFpbiB3YWdvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUcmFpbkJsb2NrZWRQYXNzYWdlRWxlbWVudCBleHRlbmRzIFNiYlRyYWluRm9ybWF0aW9uT3JpZW50YXRpb25NaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZSc6IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUNVQSxJQUFhLGdDQUFiLGNBQW1ELGtDQUFrQyxVQUFVLEVBQUM7O0VBQzlELEtBQUEsY0FBc0I7Q0FBNEI7O0VBQzNELEtBQUEsU0FBeUIsQ0FBQyxVQUFVLDZCQUFLLENBQUM7Q0FBRSJ9
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tYmxvY2tlZC1wYXNzYWdlLmNvbXBvbmVudC1DN3ZlLWExRS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdHJhaW4vdHJhaW4tYmxvY2tlZC1wYXNzYWdlL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi1ibG9ja2VkLXBhc3NhZ2UvdHJhaW4tYmxvY2tlZC1wYXNzYWdlLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdpY29uJztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIGhlaWdodDogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0KTtcbn1cblxuOmhvc3QoOnN0YXRlKG9yaWVudGF0aW9uLXZlcnRpY2FsKSkge1xuICB3aWR0aDogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24td2lkdGgpO1xuICBoZWlnaHQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG59XG5cbjpob3N0OjpiZWZvcmUsXG46aG9zdDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZ3JpZC1hcmVhOiBpY29uO1xuICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbn1cblxuLy8gQ2lyY2xlXG46aG9zdDo6YmVmb3JlIHtcbiAgd2lkdGg6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIGhlaWdodDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1ibG9ja2VkLXBhc3NhZ2UtZGltZW5zaW9uKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWJhY2tncm91bmQtY29sb3IpO1xufVxuXG4vLyBCYXJcbjpob3N0OjphZnRlciB7XG4gIHdpZHRoOiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWljb24tYmFyLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlLWljb24tYmFyLWhlaWdodCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi10cmFpbi1ibG9ja2VkLXBhc3NhZ2UtaWNvbi1iYXItYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi10cmFpbi1ibG9ja2VkLXBhc3NhZ2UtYmFyLWNvbG9yKTtcbn1cbiIsImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHVuc2FmZUNTUyB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlLnRzJztcbmltcG9ydCB7IFNiYlRyYWluRm9ybWF0aW9uT3JpZW50YXRpb25NaXhpbiB9IGZyb20gJy4uL3RyYWluLWZvcm1hdGlvbi1vcmllbnRhdGlvbi1taXhpbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5zY3NzP2lubGluZSc7XG5cbi8qKlxuICogSXQgdmlzdWFsbHkgZGlzcGxheXMgYSBibG9ja2VkIHBhc3NhZ2UgYmV0d2VlbiB0cmFpbiB3YWdvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJUcmFpbkJsb2NrZWRQYXNzYWdlRWxlbWVudCBleHRlbmRzIFNiYlRyYWluRm9ybWF0aW9uT3JpZW50YXRpb25NaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3Vuc2FmZUNTUyhzdHlsZSldO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZSc6IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUNVQSxJQUFhLGdDQUFiLGNBQW1ELGtDQUFrQyxVQUFVLEVBQUM7O0VBQzlELEtBQUEsY0FBc0I7Q0FBNEI7O0VBQzNELEtBQUEsU0FBeUIsQ0FBQyxVQUFVLDZCQUFLLENBQUM7Q0FBRSJ9
@@ -4,7 +4,7 @@ import { property, state } from "lit/decorators.js";
4
4
  import { SbbElement, SbbLanguageController, SbbNamedSlotListMixin, hostScrollbarStyles, i18nSector, i18nSectorShort, i18nTrains } from "./core.js";
5
5
  import { styleMap } from "lit/directives/style-map.js";
6
6
  //#region src/elements/train/train-formation/train-formation.scss?inline
7
- var train_formation_default = ":host {\n --sbb-train-formation-scroll-padding: var(--sbb-train-formation-padding);\n --_sbb-train-formation-wagon-width: var(--sbb-train-formation-wagon-dimension-long);\n --_sbb-train-formation-wagon-height: var(--sbb-train-formation-wagon-dimension-short);\n display: grid;\n grid-template: \"start sectors end\" auto \"start trains end\" auto/auto 1fr auto;\n position: relative;\n overflow: auto visible;\n gap: var(--_sbb-train-formation-sectors-to-train-gap, 0) 0;\n padding-block: var(--sbb-train-formation-padding);\n color: var(--sbb-train-formation-text-color);\n font-size: var(--sbb-text-font-size-xs);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n}\n:host::before, :host::after {\n content: \"\";\n display: block;\n width: var(--sbb-train-formation-scroll-padding);\n}\n:host::before {\n grid-area: start;\n}\n:host::after {\n grid-area: end;\n}\n\n:host(:focus-visible) {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n}\n\n:host(:is(:state(has-sectors),[state--has-sectors])) {\n --_sbb-train-formation-sectors-to-train-gap: var(--sbb-train-formation-gap);\n}\n\n:host(:is(:state(has-direction-label),[state--has-direction-label])) {\n --_sbb-train-formation-reserve-spacing-display: block;\n}\n\n:host([orientation=vertical]) {\n --_sbb-train-formation-wagon-width: var(--sbb-train-formation-wagon-dimension-short);\n --_sbb-train-formation-wagon-height: var(--sbb-train-formation-wagon-dimension-long);\n --_sbb-train-formation-flex-direction: column;\n --_sbb-train-formation-flex-direction-inverted: row;\n grid-template: \"start start\" auto \"sectors trains\" 1fr \"end end\" auto;\n overflow: visible auto;\n padding-block: unset;\n padding-inline: var(--sbb-train-formation-padding);\n gap: 0 var(--_sbb-train-formation-sectors-to-train-gap, 0);\n width: fit-content;\n}\n:host([orientation=vertical])::before, :host([orientation=vertical])::after {\n width: auto;\n height: var(--sbb-train-formation-scroll-padding);\n}\n\n.sbb-train-formation__sectors {\n display: flex;\n grid-area: sectors;\n gap: var(--sbb-train-formation-wagon-gap);\n flex-direction: var(--_sbb-train-formation-flex-direction);\n}\n\n.sbb-train-formation__sector {\n --_wagon-sum: var(--sbb-train-formation-wagon-count) *\n var(--sbb-train-formation-wagon-dimension-long);\n --_blocked-passage-sum: var(--sbb-train-formation-wagon-blocked-passage-count) *\n var(--sbb-train-formation-blocked-passage-dimension);\n --_total-count: calc(\n var(--sbb-train-formation-wagon-count) + var(--sbb-train-formation-wagon-blocked-passage-count)\n );\n --_gap-sum: calc((var(--_total-count) - 1) * var(--sbb-train-formation-wagon-gap));\n --_sector-width: calc(var(--_wagon-sum) + var(--_blocked-passage-sum) + var(--_gap-sum));\n --_sector-line-length: calc(0.5 * var(--_sector-width));\n flex: 0 0 var(--_sector-width);\n display: flex;\n flex-direction: var(--_sbb-train-formation-flex-direction);\n justify-content: center;\n overflow: clip visible;\n}\n:host([orientation=vertical]) .sbb-train-formation__sector {\n overflow: visible clip;\n}\n\n.sbb-train-formation__sector-sticky-wrapper {\n position: sticky;\n inset: auto 0;\n padding: 0 var(--sbb-train-formation-sector-padding);\n margin: 0 var(--sbb-train-formation-sector-margin);\n white-space: nowrap;\n}\n:host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper {\n writing-mode: sideways-lr;\n inset: 0 auto;\n padding: var(--sbb-train-formation-sector-padding) 0;\n margin: var(--sbb-train-formation-sector-margin) 0;\n}\n.sbb-train-formation__sector-sticky-wrapper::before, .sbb-train-formation__sector-sticky-wrapper::after {\n content: \"\";\n position: absolute;\n inset-block: calc(50% - var(--sbb-train-formation-sector-line-width) / 2);\n border-block-end: var(--sbb-train-formation-sector-line-width) solid var(--sbb-train-formation-sector-line-color);\n width: var(--_sector-line-length);\n}\n:host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper::before, :host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper::after {\n width: auto;\n height: var(--_sector-line-length);\n}\n.sbb-train-formation__sector-sticky-wrapper::before {\n inset-inline-end: 100%;\n}\n.sbb-train-formation__sector-sticky-wrapper::after {\n inset-inline-start: 100%;\n}\n\n.sbb-train-formation__trains {\n grid-area: trains;\n}\n\n.sbb-train-formation__train-list {\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: inherit;\n display: flex;\n flex-direction: var(--_sbb-train-formation-flex-direction);\n gap: var(--sbb-train-formation-wagon-gap);\n}\n\n.sbb-train-formation__train-list > :is(li, span) {\n display: inline-flex;\n}";
7
+ var train_formation_default = ":host {\n --sbb-train-formation-scroll-padding: var(--sbb-train-formation-padding);\n --_sbb-train-formation-wagon-width: var(--sbb-train-formation-wagon-dimension-long);\n --_sbb-train-formation-wagon-height: var(--sbb-train-formation-wagon-dimension-short);\n display: grid;\n grid-template: \"start sectors end\" auto \"start trains end\" auto/auto 1fr auto;\n position: relative;\n overflow: auto visible;\n gap: var(--_sbb-train-formation-sectors-to-train-gap, 0) 0;\n padding-block: var(--sbb-train-formation-padding);\n color: var(--sbb-train-formation-text-color);\n font-size: var(--sbb-text-font-size-xs);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n}\n:host::before, :host::after {\n content: \"\";\n display: block;\n width: var(--sbb-train-formation-scroll-padding);\n}\n:host::before {\n grid-area: start;\n}\n:host::after {\n grid-area: end;\n}\n\n:host(:focus-visible) {\n outline-offset: var(--sbb-focus-outline-offset);\n outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);\n}\n\n:host(:is(:state(has-sectors),[state--has-sectors])) {\n --_sbb-train-formation-sectors-to-train-gap: var(--sbb-train-formation-gap);\n}\n\n:host(:is(:state(has-direction-label),[state--has-direction-label])) {\n --_sbb-train-formation-reserve-spacing-display: block;\n}\n\n:host([orientation=vertical]) {\n --_sbb-train-formation-wagon-width: var(--sbb-train-formation-wagon-dimension-short);\n --_sbb-train-formation-wagon-height: var(--sbb-train-formation-wagon-dimension-long);\n --_sbb-train-formation-flex-direction: column;\n --_sbb-train-formation-flex-direction-inverted: row;\n grid-template: \"start start\" auto \"sectors trains\" 1fr \"end end\" auto;\n overflow: visible auto;\n padding-block: unset;\n padding-inline: var(--sbb-train-formation-padding);\n gap: 0 var(--_sbb-train-formation-sectors-to-train-gap, 0);\n width: fit-content;\n}\n:host([orientation=vertical])::before, :host([orientation=vertical])::after {\n width: auto;\n height: var(--sbb-train-formation-scroll-padding);\n}\n\n.sbb-train-formation__sectors {\n display: flex;\n grid-area: sectors;\n gap: var(--sbb-train-formation-wagon-gap);\n flex-direction: var(--_sbb-train-formation-flex-direction);\n}\n\n.sbb-train-formation__sector {\n --_wagon-sum: var(--sbb-train-formation-wagon-count) *\n var(--sbb-train-formation-wagon-dimension-long);\n --_blocked-passage-sum: var(--sbb-train-formation-wagon-blocked-passage-count) *\n var(--sbb-train-formation-blocked-passage-dimension);\n --_total-count: calc(\n var(--sbb-train-formation-wagon-count) + var(--sbb-train-formation-wagon-blocked-passage-count)\n );\n --_gap-sum: calc((var(--_total-count) - 1) * var(--sbb-train-formation-wagon-gap));\n --_sector-width: calc(var(--_wagon-sum) + var(--_blocked-passage-sum) + var(--_gap-sum));\n --_sector-line-length: calc(0.5 * var(--_sector-width));\n flex: 0 0 var(--_sector-width);\n display: flex;\n flex-direction: var(--_sbb-train-formation-flex-direction);\n justify-content: center;\n overflow: clip visible;\n}\n:host([orientation=vertical]) .sbb-train-formation__sector {\n overflow: visible clip;\n}\n\n.sbb-train-formation__sector-sticky-wrapper {\n position: sticky;\n inset: auto 0;\n padding: 0 var(--sbb-train-formation-sector-padding);\n margin: 0 var(--sbb-train-formation-sector-margin);\n white-space: nowrap;\n}\n:host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper {\n writing-mode: sideways-lr;\n inset: 0 auto;\n padding: var(--sbb-train-formation-sector-padding) 0;\n margin: var(--sbb-train-formation-sector-margin) 0;\n}\n.sbb-train-formation__sector-sticky-wrapper::before, .sbb-train-formation__sector-sticky-wrapper::after {\n content: \"\";\n position: absolute;\n inset-block: calc(50% - var(--sbb-train-formation-sector-line-width) / 2);\n border-block-end: var(--sbb-train-formation-sector-line-width) solid var(--sbb-train-formation-sector-line-color);\n width: var(--_sector-line-length);\n}\n:host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper::before, :host([orientation=vertical]) .sbb-train-formation__sector-sticky-wrapper::after {\n width: auto;\n height: var(--_sector-line-length);\n}\n.sbb-train-formation__sector-sticky-wrapper::before {\n inset-inline-end: 100%;\n}\n.sbb-train-formation__sector-sticky-wrapper::after {\n inset-inline-start: 100%;\n}\n\n.sbb-train-formation__trains {\n grid-area: trains;\n}\n\n.sbb-train-formation__train-list {\n display: flex;\n flex-direction: var(--_sbb-train-formation-flex-direction);\n gap: var(--sbb-train-formation-wagon-gap);\n}\n\n.sbb-train-formation__train-list > :is(li, span) {\n display: inline-flex;\n}";
8
8
  //#endregion
9
9
  //#region src/elements/train/train-formation/train-formation.component.ts
10
10
  /**
@@ -187,4 +187,4 @@ var SbbTrainFormationElement = (() => {
187
187
  //#endregion
188
188
  export { SbbTrainFormationElement as t };
189
189
 
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC1CRWc2T1BpYi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdHJhaW4vdHJhaW4tZm9ybWF0aW9uL3RyYWluLWZvcm1hdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi1mb3JtYXRpb24vdHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXRyYWluLWZvcm1hdGlvbi1zY3JvbGwtcGFkZGluZzogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1wYWRkaW5nKTtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi13aWR0aDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1kaW1lbnNpb24tbG9uZyk7XG4gIC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1zaG9ydCk7XG5cbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZTpcbiAgICAnc3RhcnQgc2VjdG9ycyBlbmQnIGF1dG9cbiAgICAnc3RhcnQgdHJhaW5zIGVuZCcgYXV0byAvIGF1dG8gMWZyIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGF1dG8gdmlzaWJsZTtcbiAgZ2FwOiB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcCwgMCkgMDtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1wYWRkaW5nKTtcbiAgY29sb3I6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tdGV4dC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXhzKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG5cbiAgLy8gRW5hYmxlIGlubGluZSBwYWRkaW5nXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNjcm9sbC1wYWRkaW5nKTtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgZ3JpZC1hcmVhOiBzdGFydDtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBncmlkLWFyZWE6IGVuZDtcbiAgfVxufVxuXG4vLyBXaXRoIHNjcm9sbGFibGUgY29udGVudCwgdGhlIHRyYWluIGZvcm1hdGlvbiBjYW4gZ2V0IGZvY3VzLlxuOmhvc3QoOmZvY3VzLXZpc2libGUpIHtcbiAgQGluY2x1ZGUgc2JiLmZvY3VzLW91dGxpbmU7XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtc2VjdG9ycykpIHtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1nYXApO1xufVxuXG46aG9zdCg6c3RhdGUoaGFzLWRpcmVjdGlvbi1sYWJlbCkpIHtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1yZXNlcnZlLXNwYWNpbmctZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkge1xuICAtLV9zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLXdpZHRoOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1zaG9ydCk7XG4gIC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1sb25nKTtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAtLV9zYmItdHJhaW4tZm9ybWF0aW9uLWZsZXgtZGlyZWN0aW9uLWludmVydGVkOiByb3c7XG5cbiAgZ3JpZC10ZW1wbGF0ZTpcbiAgICAnc3RhcnQgc3RhcnQnIGF1dG9cbiAgICAnc2VjdG9ycyB0cmFpbnMnIDFmclxuICAgICdlbmQgZW5kJyBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZSBhdXRvO1xuICBwYWRkaW5nLWJsb2NrOiB1bnNldDtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tcGFkZGluZyk7XG4gIGdhcDogMCB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcCwgMCk7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2Nyb2xsLXBhZGRpbmcpO1xuICB9XG59XG5cbi5zYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3JzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ3JpZC1hcmVhOiBzZWN0b3JzO1xuICBnYXA6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZ2FwKTtcbiAgZmxleC1kaXJlY3Rpb246IHZhcigtLV9zYmItdHJhaW4tZm9ybWF0aW9uLWZsZXgtZGlyZWN0aW9uKTtcbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvciB7XG4gIC0tX3dhZ29uLXN1bTogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1jb3VudCkgKlxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZGltZW5zaW9uLWxvbmcpO1xuICAtLV9ibG9ja2VkLXBhc3NhZ2Utc3VtOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWJsb2NrZWQtcGFzc2FnZS1jb3VudCkgKlxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIC0tX3RvdGFsLWNvdW50OiBjYWxjKFxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tY291bnQpICsgdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQpXG4gICk7XG4gIC0tX2dhcC1zdW06IGNhbGMoKHZhcigtLV90b3RhbC1jb3VudCkgLSAxKSAqIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZ2FwKSk7XG4gIC0tX3NlY3Rvci13aWR0aDogY2FsYyh2YXIoLS1fd2Fnb24tc3VtKSArIHZhcigtLV9ibG9ja2VkLXBhc3NhZ2Utc3VtKSArIHZhcigtLV9nYXAtc3VtKSk7XG4gIC0tX3NlY3Rvci1saW5lLWxlbmd0aDogY2FsYygwLjUgKiB2YXIoLS1fc2VjdG9yLXdpZHRoKSk7XG5cbiAgZmxleDogMCAwIHZhcigtLV9zZWN0b3Itd2lkdGgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24tZmxleC1kaXJlY3Rpb24pO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGNsaXAgdmlzaWJsZTtcblxuICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pICYge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlIGNsaXA7XG4gIH1cbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3Rvci1zdGlja3ktd3JhcHBlciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIGluc2V0OiBhdXRvIDA7XG4gIHBhZGRpbmc6IDAgdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3ItcGFkZGluZyk7XG4gIG1hcmdpbjogMCB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1tYXJnaW4pO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgJiB7XG4gICAgd3JpdGluZy1tb2RlOiBzaWRld2F5cy1scjtcbiAgICBpbnNldDogMCBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2VjdG9yLXBhZGRpbmcpIDA7XG4gICAgbWFyZ2luOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1tYXJnaW4pIDA7XG4gIH1cblxuICAvLyBMaW5lcyBiZXNpZGUgdGhlIHNlY3Rvci1sYWJlbFxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAvLyBFeGFjdGx5IGNlbnRlciB0aGUgbGluZSBieSBzdWJ0cmFjdGluZyBoYWxmIG9mIHRoZSBib3JkZXIgd2lkdGhcbiAgICBpbnNldC1ibG9jazogY2FsYyg1MCUgLSB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1saW5lLXdpZHRoKSAvIDIpO1xuICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2VjdG9yLWxpbmUtd2lkdGgpIHNvbGlkXG4gICAgICB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1saW5lLWNvbG9yKTtcbiAgICB3aWR0aDogdmFyKC0tX3NlY3Rvci1saW5lLWxlbmd0aCk7XG5cbiAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pICYge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBoZWlnaHQ6IHZhcigtLV9zZWN0b3ItbGluZS1sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgaW5zZXQtaW5saW5lLWVuZDogMTAwJTtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XG4gIH1cbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3RyYWlucyB7XG4gIGdyaWQtYXJlYTogdHJhaW5zO1xufVxuXG4uc2JiLXRyYWluLWZvcm1hdGlvbl9fdHJhaW4tbGlzdCB7XG4gIEBpbmNsdWRlIHNiYi5saXN0LXJlc2V0O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1mbGV4LWRpcmVjdGlvbik7XG4gIGdhcDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1nYXApO1xufVxuXG4vLyBVc2luZyAuLi4gbGkgc2VsZWN0b3IsIGJlY2F1c2UgdGhlIGxpIGdlbmVyYXRpb25cbi8vIGlzIGhhbmRsZWQgaW4gdGhlIGNvbXBvbmVudCBiYXNlIGNsYXNzLlxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3RyYWluLWxpc3QgPiA6aXMobGksIHNwYW4pIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7XG4gIGhvc3RTY3JvbGxiYXJTdHlsZXMsXG4gIGkxOG5TZWN0b3IsXG4gIGkxOG5TZWN0b3JTaG9ydCxcbiAgaTE4blRyYWlucyxcbiAgU2JiRWxlbWVudCxcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOYW1lZFNsb3RMaXN0TWl4aW4sXG4gIHR5cGUgV2l0aExpc3RDaGlsZHJlbixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluRWxlbWVudCB9IGZyb20gJy4uL3RyYWluL3RyYWluLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50IH0gZnJvbSAnLi4vdHJhaW4tYmxvY2tlZC1wYXNzYWdlL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbldhZ29uTWl4aW5UeXBlIH0gZnJvbSAnLi4vdHJhaW4td2Fnb24tY29tbW9uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdHJhaW4tZm9ybWF0aW9uLnNjc3M/aW5saW5lJztcblxuaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRTZWN0b3Ige1xuICBsYWJlbDogc3RyaW5nO1xuICB3YWdvbkNvdW50OiBudW1iZXI7XG4gIGJsb2NrZWRQYXNzYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHRyYWluIGNvbXBvc2l0aW9uLCBhY3RpbmcgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItdHJhaW5gIGNvbXBvbmVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCAnc2JiLXRyYWluJyBlbGVtZW50cyB0byB0aGUgYHNiYi10cmFpbi1mb3JtYXRpb25gLlxuICogQGNzc3Byb3AgWy0tc2JiLXRyYWluLWZvcm1hdGlvbi1zY3JvbGwtcGFkZGluZz12YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCldIC0gRGVmaW5lcyB0aGUgaW5saW5lIG9yIGJsb2NrIHBhZGRpbmcgaW5zaWRlIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNjcm9sbGluZyBhcmVhLlxuICovXG5leHBvcnQgY2xhc3MgU2JiVHJhaW5Gb3JtYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluPFxuICBTYmJUcmFpbkVsZW1lbnQsXG4gIHR5cGVvZiBTYmJFbGVtZW50XG4+KFNiYkVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi10cmFpbi1mb3JtYXRpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbaG9zdFNjcm9sbGJhclN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItdHJhaW4nXTtcblxuICAvKiogV2hldGhlciB0aGUgdmlldyBvZiB0aGUgd2Fnb25zIGlzIGZyb20gc2lkZSBvciB0b3AgcGVyc3BlY3RpdmUuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHZpZXc6ICdzaWRlJyB8ICd0b3AnID0gJ3NpZGUnO1xuXG4gIC8qKiBPcmllbnRhdGlvbiwgZWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID1cbiAgICAnaG9yaXpvbnRhbCc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfc2VjdG9yczogQWdncmVnYXRlZFNlY3RvcltdID0gW107XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0cmFpbnNsb3RjaGFuZ2UnLCAoZSkgPT4ge1xuICAgICAgdGhpcy5fcmVhZFNlY3RvcnMoZSk7XG4gICAgICB0aGlzLl9yZWFkRGlyZWN0aW9uTGFiZWwoZSk7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3NlY3RvcmNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2RpcmVjdGlvbmxhYmVsY2hhbmdlJywgKGUpID0+IHRoaXMuX3JlYWREaXJlY3Rpb25MYWJlbChlKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIC8vIFdoZW4gaW5jbHVkaW5nIHRoZSBzY3JvbGxiYXIgc3R5bGVzIG9uIHRoZSBob3N0LCB0aGVyZSBpcyBubyBob3ZlciBlZmZlY3Qgb2YgdGhlIHNjcm9sbGJhciBwb3NzaWJsZS5cbiAgICAvLyBJbiBtb3N0IGNhc2VzLCB0aGUgY29tcG9uZW50IHdpbGwgYmUgdXNlZCBpbiBMaWdodCBET00uIFRvIGFsc28gc3VwcG9ydCB0aGUgaG92ZXIgZWZmZWN0LFxuICAgIC8vIHdlIGFkZGl0aW9uYWxseSBhZGQgdGhlIGBzYmItc2Nyb2xsYmFyYCBDU1MgY2xhc3MgdG8gdGhlIGhvc3QuXG4gICAgLy8gVGhpcyBpcyBhbiBleGNlcHRpb24gYXMgd2Ugbm9ybWFsbHkgZG9uJ3QgYWx0ZXIgdGhlIGNsYXNzTGlzdCBvZiB0aGUgaG9zdC5cbiAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NiYi1zY3JvbGxiYXInKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWREaXJlY3Rpb25MYWJlbChldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdoYXMtZGlyZWN0aW9uLWxhYmVsJyxcbiAgICAgIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi10cmFpbicpID8/IFtdKS5zb21lKFxuICAgICAgICAodHJhaW4pID0+ICEhdHJhaW4uZGlyZWN0aW9uTGFiZWwsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkU2VjdG9ycyhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5fc2VjdG9ycyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUcmFpbldhZ29uTWl4aW5UeXBlIHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQ+KFxuICAgICAgICAnc2JiLXRyYWluLXdhZ29uLHNiYi10cmFpbi13YWdvbi1idXR0b24sc2JiLXRyYWluLXdhZ29uLWxpbmssc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZScsXG4gICAgICApID8/IFtdLFxuICAgICkucmVkdWNlKFxuICAgICAgKFxuICAgICAgICBhZ2dyZWdhdGVkU2VjdG9yczogQWdncmVnYXRlZFNlY3RvcltdLFxuICAgICAgICBpdGVtOiBTYmJUcmFpbldhZ29uTWl4aW5UeXBlIHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IgPSBhZ2dyZWdhdGVkU2VjdG9yc1thZ2dyZWdhdGVkU2VjdG9ycy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoaXRlbS5sb2NhbE5hbWUuc3RhcnRzV2l0aCgnc2JiLXRyYWluLXdhZ29uJykpIHtcbiAgICAgICAgICBjb25zdCBzZWN0b3JBdHRyaWJ1dGUgPVxuICAgICAgICAgICAgKGl0ZW0gYXMgU2JiVHJhaW5XYWdvbk1peGluVHlwZSkuc2VjdG9yID8/IGl0ZW0uZ2V0QXR0cmlidXRlKCdzZWN0b3InKTtcblxuICAgICAgICAgIGlmICghY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgJiYgc2VjdG9yQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCA9IHNlY3RvckF0dHJpYnV0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXNlY3RvckF0dHJpYnV0ZSB8fCBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCA9PT0gc2VjdG9yQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3JzLnB1c2goe1xuICAgICAgICAgICAgICBsYWJlbDogc2VjdG9yQXR0cmlidXRlLFxuICAgICAgICAgICAgICB3YWdvbkNvdW50OiAxLFxuICAgICAgICAgICAgICBibG9ja2VkUGFzc2FnZUNvdW50OiAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubG9jYWxOYW1lID09PSAnc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZScpIHtcbiAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5ibG9ja2VkUGFzc2FnZUNvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWdncmVnYXRlZFNlY3RvcnM7XG4gICAgICB9LFxuICAgICAgW3sgd2Fnb25Db3VudDogMCwgYmxvY2tlZFBhc3NhZ2VDb3VudDogMCB9IGFzIEFnZ3JlZ2F0ZWRTZWN0b3JdLFxuICAgICk7XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKFxuICAgICAgJ2hhcy1zZWN0b3JzJyxcbiAgICAgIHRoaXMuX3NlY3RvcnMuc29tZSgocykgPT4gISFzLmxhYmVsKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICAgICAgdGhpcy5fcmVhZFNlY3RvcnMoKTtcbiAgICAgIHRoaXMuX3JlYWREaXJlY3Rpb25MYWJlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLl9zZWN0b3JzLmxlbmd0aCAmJiB0aGlzLl9zZWN0b3JzWzBdLmxhYmVsICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3JzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAke3RoaXMuX3NlY3RvcnMubWFwKFxuICAgICAgICAgICAgICAoYWdncmVnYXRlZFNlY3RvcikgPT5cbiAgICAgICAgICAgICAgICBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvclwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1jb3VudCc6IGFnZ3JlZ2F0ZWRTZWN0b3Iud2Fnb25Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQnOlxuICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3IuYmxvY2tlZFBhc3NhZ2VDb3VudCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvbl9fc2VjdG9yLXN0aWNreS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7XG4gICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50ID09PSAxICYmIGFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaTE4blNlY3RvclNob3J0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGkxOG5TZWN0b3JbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgfSAke2FnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgPyBhZ2dyZWdhdGVkU2VjdG9yLmxhYmVsIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+YFxuICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX190cmFpbnNcIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckxpc3Qoe1xuICAgICAgICAgIGNsYXNzOiAnc2JiLXRyYWluLWZvcm1hdGlvbl9fdHJhaW4tbGlzdCcsXG4gICAgICAgICAgYXJpYUxhYmVsOiBpMThuVHJhaW5zW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10cmFpbi1mb3JtYXRpb24nOiBTYmJUcmFpbkZvcm1hdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7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
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC1EUV9oTEtOdi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvdHJhaW4vdHJhaW4tZm9ybWF0aW9uL3RyYWluLWZvcm1hdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy90cmFpbi90cmFpbi1mb3JtYXRpb24vdHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIC0tc2JiLXRyYWluLWZvcm1hdGlvbi1zY3JvbGwtcGFkZGluZzogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1wYWRkaW5nKTtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi13aWR0aDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1kaW1lbnNpb24tbG9uZyk7XG4gIC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1zaG9ydCk7XG5cbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZTpcbiAgICAnc3RhcnQgc2VjdG9ycyBlbmQnIGF1dG9cbiAgICAnc3RhcnQgdHJhaW5zIGVuZCcgYXV0byAvIGF1dG8gMWZyIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGF1dG8gdmlzaWJsZTtcbiAgZ2FwOiB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcCwgMCkgMDtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1wYWRkaW5nKTtcbiAgY29sb3I6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tdGV4dC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXhzKTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXNiYi10eXBvLWxldHRlci1zcGFjaW5nLXRleHQpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG5cbiAgLy8gRW5hYmxlIGlubGluZSBwYWRkaW5nXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNjcm9sbC1wYWRkaW5nKTtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgZ3JpZC1hcmVhOiBzdGFydDtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBncmlkLWFyZWE6IGVuZDtcbiAgfVxufVxuXG4vLyBXaXRoIHNjcm9sbGFibGUgY29udGVudCwgdGhlIHRyYWluIGZvcm1hdGlvbiBjYW4gZ2V0IGZvY3VzLlxuOmhvc3QoOmZvY3VzLXZpc2libGUpIHtcbiAgQGluY2x1ZGUgc2JiLmZvY3VzLW91dGxpbmU7XG59XG5cbjpob3N0KDpzdGF0ZShoYXMtc2VjdG9ycykpIHtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1nYXApO1xufVxuXG46aG9zdCg6c3RhdGUoaGFzLWRpcmVjdGlvbi1sYWJlbCkpIHtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1yZXNlcnZlLXNwYWNpbmctZGlzcGxheTogYmxvY2s7XG59XG5cbjpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkge1xuICAtLV9zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLXdpZHRoOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1zaG9ydCk7XG4gIC0tX3NiYi10cmFpbi1mb3JtYXRpb24td2Fnb24taGVpZ2h0OiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWRpbWVuc2lvbi1sb25nKTtcbiAgLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAtLV9zYmItdHJhaW4tZm9ybWF0aW9uLWZsZXgtZGlyZWN0aW9uLWludmVydGVkOiByb3c7XG5cbiAgZ3JpZC10ZW1wbGF0ZTpcbiAgICAnc3RhcnQgc3RhcnQnIGF1dG9cbiAgICAnc2VjdG9ycyB0cmFpbnMnIDFmclxuICAgICdlbmQgZW5kJyBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZSBhdXRvO1xuICBwYWRkaW5nLWJsb2NrOiB1bnNldDtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tcGFkZGluZyk7XG4gIGdhcDogMCB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3JzLXRvLXRyYWluLWdhcCwgMCk7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2Nyb2xsLXBhZGRpbmcpO1xuICB9XG59XG5cbi5zYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3JzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ3JpZC1hcmVhOiBzZWN0b3JzO1xuICBnYXA6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZ2FwKTtcbiAgZmxleC1kaXJlY3Rpb246IHZhcigtLV9zYmItdHJhaW4tZm9ybWF0aW9uLWZsZXgtZGlyZWN0aW9uKTtcbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvciB7XG4gIC0tX3dhZ29uLXN1bTogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1jb3VudCkgKlxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZGltZW5zaW9uLWxvbmcpO1xuICAtLV9ibG9ja2VkLXBhc3NhZ2Utc3VtOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXdhZ29uLWJsb2NrZWQtcGFzc2FnZS1jb3VudCkgKlxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tYmxvY2tlZC1wYXNzYWdlLWRpbWVuc2lvbik7XG4gIC0tX3RvdGFsLWNvdW50OiBjYWxjKFxuICAgIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tY291bnQpICsgdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQpXG4gICk7XG4gIC0tX2dhcC1zdW06IGNhbGMoKHZhcigtLV90b3RhbC1jb3VudCkgLSAxKSAqIHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tZ2FwKSk7XG4gIC0tX3NlY3Rvci13aWR0aDogY2FsYyh2YXIoLS1fd2Fnb24tc3VtKSArIHZhcigtLV9ibG9ja2VkLXBhc3NhZ2Utc3VtKSArIHZhcigtLV9nYXAtc3VtKSk7XG4gIC0tX3NlY3Rvci1saW5lLWxlbmd0aDogY2FsYygwLjUgKiB2YXIoLS1fc2VjdG9yLXdpZHRoKSk7XG5cbiAgZmxleDogMCAwIHZhcigtLV9zZWN0b3Itd2lkdGgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogdmFyKC0tX3NiYi10cmFpbi1mb3JtYXRpb24tZmxleC1kaXJlY3Rpb24pO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGNsaXAgdmlzaWJsZTtcblxuICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pICYge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlIGNsaXA7XG4gIH1cbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3Rvci1zdGlja3ktd3JhcHBlciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIGluc2V0OiBhdXRvIDA7XG4gIHBhZGRpbmc6IDAgdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi1zZWN0b3ItcGFkZGluZyk7XG4gIG1hcmdpbjogMCB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1tYXJnaW4pO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgJiB7XG4gICAgd3JpdGluZy1tb2RlOiBzaWRld2F5cy1scjtcbiAgICBpbnNldDogMCBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2VjdG9yLXBhZGRpbmcpIDA7XG4gICAgbWFyZ2luOiB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1tYXJnaW4pIDA7XG4gIH1cblxuICAvLyBMaW5lcyBiZXNpZGUgdGhlIHNlY3Rvci1sYWJlbFxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAvLyBFeGFjdGx5IGNlbnRlciB0aGUgbGluZSBieSBzdWJ0cmFjdGluZyBoYWxmIG9mIHRoZSBib3JkZXIgd2lkdGhcbiAgICBpbnNldC1ibG9jazogY2FsYyg1MCUgLSB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1saW5lLXdpZHRoKSAvIDIpO1xuICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLXNiYi10cmFpbi1mb3JtYXRpb24tc2VjdG9yLWxpbmUtd2lkdGgpIHNvbGlkXG4gICAgICB2YXIoLS1zYmItdHJhaW4tZm9ybWF0aW9uLXNlY3Rvci1saW5lLWNvbG9yKTtcbiAgICB3aWR0aDogdmFyKC0tX3NlY3Rvci1saW5lLWxlbmd0aCk7XG5cbiAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pICYge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBoZWlnaHQ6IHZhcigtLV9zZWN0b3ItbGluZS1sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgaW5zZXQtaW5saW5lLWVuZDogMTAwJTtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XG4gIH1cbn1cblxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3RyYWlucyB7XG4gIGdyaWQtYXJlYTogdHJhaW5zO1xufVxuXG4uc2JiLXRyYWluLWZvcm1hdGlvbl9fdHJhaW4tbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiB2YXIoLS1fc2JiLXRyYWluLWZvcm1hdGlvbi1mbGV4LWRpcmVjdGlvbik7XG4gIGdhcDogdmFyKC0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1nYXApO1xufVxuXG4vLyBVc2luZyAuLi4gbGkgc2VsZWN0b3IsIGJlY2F1c2UgdGhlIGxpIGdlbmVyYXRpb25cbi8vIGlzIGhhbmRsZWQgaW4gdGhlIGNvbXBvbmVudCBiYXNlIGNsYXNzLlxuLnNiYi10cmFpbi1mb3JtYXRpb25fX3RyYWluLWxpc3QgPiA6aXMobGksIHNwYW4pIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7XG4gIGhvc3RTY3JvbGxiYXJTdHlsZXMsXG4gIGkxOG5TZWN0b3IsXG4gIGkxOG5TZWN0b3JTaG9ydCxcbiAgaTE4blRyYWlucyxcbiAgU2JiRWxlbWVudCxcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJOYW1lZFNsb3RMaXN0TWl4aW4sXG4gIHR5cGUgV2l0aExpc3RDaGlsZHJlbixcbn0gZnJvbSAnLi4vLi4vY29yZS50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluRWxlbWVudCB9IGZyb20gJy4uL3RyYWluL3RyYWluLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50IH0gZnJvbSAnLi4vdHJhaW4tYmxvY2tlZC1wYXNzYWdlL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbldhZ29uTWl4aW5UeXBlIH0gZnJvbSAnLi4vdHJhaW4td2Fnb24tY29tbW9uLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vdHJhaW4tZm9ybWF0aW9uLnNjc3M/aW5saW5lJztcblxuaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRTZWN0b3Ige1xuICBsYWJlbDogc3RyaW5nO1xuICB3YWdvbkNvdW50OiBudW1iZXI7XG4gIGJsb2NrZWRQYXNzYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHRyYWluIGNvbXBvc2l0aW9uLCBhY3RpbmcgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItdHJhaW5gIGNvbXBvbmVudC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCAnc2JiLXRyYWluJyBlbGVtZW50cyB0byB0aGUgYHNiYi10cmFpbi1mb3JtYXRpb25gLlxuICogQGNzc3Byb3AgWy0tc2JiLXRyYWluLWZvcm1hdGlvbi1zY3JvbGwtcGFkZGluZz12YXIoLS1zYmItc3BhY2luZy1maXhlZC0xeCldIC0gRGVmaW5lcyB0aGUgaW5saW5lIG9yIGJsb2NrIHBhZGRpbmcgaW5zaWRlIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNjcm9sbGluZyBhcmVhLlxuICovXG5leHBvcnQgY2xhc3MgU2JiVHJhaW5Gb3JtYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluPFxuICBTYmJUcmFpbkVsZW1lbnQsXG4gIHR5cGVvZiBTYmJFbGVtZW50XG4+KFNiYkVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi10cmFpbi1mb3JtYXRpb24nO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbaG9zdFNjcm9sbGJhclN0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBsaXN0Q2hpbGRMb2NhbE5hbWVzID0gWydzYmItdHJhaW4nXTtcblxuICAvKiogV2hldGhlciB0aGUgdmlldyBvZiB0aGUgd2Fnb25zIGlzIGZyb20gc2lkZSBvciB0b3AgcGVyc3BlY3RpdmUuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHZpZXc6ICdzaWRlJyB8ICd0b3AnID0gJ3NpZGUnO1xuXG4gIC8qKiBPcmllbnRhdGlvbiwgZWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIG9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID1cbiAgICAnaG9yaXpvbnRhbCc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfc2VjdG9yczogQWdncmVnYXRlZFNlY3RvcltdID0gW107XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCd0cmFpbnNsb3RjaGFuZ2UnLCAoZSkgPT4ge1xuICAgICAgdGhpcy5fcmVhZFNlY3RvcnMoZSk7XG4gICAgICB0aGlzLl9yZWFkRGlyZWN0aW9uTGFiZWwoZSk7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3NlY3RvcmNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2RpcmVjdGlvbmxhYmVsY2hhbmdlJywgKGUpID0+IHRoaXMuX3JlYWREaXJlY3Rpb25MYWJlbChlKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgIC8vIFdoZW4gaW5jbHVkaW5nIHRoZSBzY3JvbGxiYXIgc3R5bGVzIG9uIHRoZSBob3N0LCB0aGVyZSBpcyBubyBob3ZlciBlZmZlY3Qgb2YgdGhlIHNjcm9sbGJhciBwb3NzaWJsZS5cbiAgICAvLyBJbiBtb3N0IGNhc2VzLCB0aGUgY29tcG9uZW50IHdpbGwgYmUgdXNlZCBpbiBMaWdodCBET00uIFRvIGFsc28gc3VwcG9ydCB0aGUgaG92ZXIgZWZmZWN0LFxuICAgIC8vIHdlIGFkZGl0aW9uYWxseSBhZGQgdGhlIGBzYmItc2Nyb2xsYmFyYCBDU1MgY2xhc3MgdG8gdGhlIGhvc3QuXG4gICAgLy8gVGhpcyBpcyBhbiBleGNlcHRpb24gYXMgd2Ugbm9ybWFsbHkgZG9uJ3QgYWx0ZXIgdGhlIGNsYXNzTGlzdCBvZiB0aGUgaG9zdC5cbiAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NiYi1zY3JvbGxiYXInKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWREaXJlY3Rpb25MYWJlbChldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy50b2dnbGVTdGF0ZShcbiAgICAgICdoYXMtZGlyZWN0aW9uLWxhYmVsJyxcbiAgICAgIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi10cmFpbicpID8/IFtdKS5zb21lKFxuICAgICAgICAodHJhaW4pID0+ICEhdHJhaW4uZGlyZWN0aW9uTGFiZWwsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkU2VjdG9ycyhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5fc2VjdG9ycyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUcmFpbldhZ29uTWl4aW5UeXBlIHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQ+KFxuICAgICAgICAnc2JiLXRyYWluLXdhZ29uLHNiYi10cmFpbi13YWdvbi1idXR0b24sc2JiLXRyYWluLXdhZ29uLWxpbmssc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZScsXG4gICAgICApID8/IFtdLFxuICAgICkucmVkdWNlKFxuICAgICAgKFxuICAgICAgICBhZ2dyZWdhdGVkU2VjdG9yczogQWdncmVnYXRlZFNlY3RvcltdLFxuICAgICAgICBpdGVtOiBTYmJUcmFpbldhZ29uTWl4aW5UeXBlIHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IgPSBhZ2dyZWdhdGVkU2VjdG9yc1thZ2dyZWdhdGVkU2VjdG9ycy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoaXRlbS5sb2NhbE5hbWUuc3RhcnRzV2l0aCgnc2JiLXRyYWluLXdhZ29uJykpIHtcbiAgICAgICAgICBjb25zdCBzZWN0b3JBdHRyaWJ1dGUgPVxuICAgICAgICAgICAgKGl0ZW0gYXMgU2JiVHJhaW5XYWdvbk1peGluVHlwZSkuc2VjdG9yID8/IGl0ZW0uZ2V0QXR0cmlidXRlKCdzZWN0b3InKTtcblxuICAgICAgICAgIGlmICghY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgJiYgc2VjdG9yQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCA9IHNlY3RvckF0dHJpYnV0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXNlY3RvckF0dHJpYnV0ZSB8fCBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCA9PT0gc2VjdG9yQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3JzLnB1c2goe1xuICAgICAgICAgICAgICBsYWJlbDogc2VjdG9yQXR0cmlidXRlLFxuICAgICAgICAgICAgICB3YWdvbkNvdW50OiAxLFxuICAgICAgICAgICAgICBibG9ja2VkUGFzc2FnZUNvdW50OiAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubG9jYWxOYW1lID09PSAnc2JiLXRyYWluLWJsb2NrZWQtcGFzc2FnZScpIHtcbiAgICAgICAgICBjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5ibG9ja2VkUGFzc2FnZUNvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWdncmVnYXRlZFNlY3RvcnM7XG4gICAgICB9LFxuICAgICAgW3sgd2Fnb25Db3VudDogMCwgYmxvY2tlZFBhc3NhZ2VDb3VudDogMCB9IGFzIEFnZ3JlZ2F0ZWRTZWN0b3JdLFxuICAgICk7XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKFxuICAgICAgJ2hhcy1zZWN0b3JzJyxcbiAgICAgIHRoaXMuX3NlY3RvcnMuc29tZSgocykgPT4gISFzLmxhYmVsKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICAgICAgdGhpcy5fcmVhZFNlY3RvcnMoKTtcbiAgICAgIHRoaXMuX3JlYWREaXJlY3Rpb25MYWJlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLl9zZWN0b3JzLmxlbmd0aCAmJiB0aGlzLl9zZWN0b3JzWzBdLmxhYmVsICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3JzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAke3RoaXMuX3NlY3RvcnMubWFwKFxuICAgICAgICAgICAgICAoYWdncmVnYXRlZFNlY3RvcikgPT5cbiAgICAgICAgICAgICAgICBodG1sYDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvclwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1jb3VudCc6IGFnZ3JlZ2F0ZWRTZWN0b3Iud2Fnb25Db3VudCxcbiAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQnOlxuICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3IuYmxvY2tlZFBhc3NhZ2VDb3VudCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvbl9fc2VjdG9yLXN0aWNreS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICR7YCR7XG4gICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50ID09PSAxICYmIGFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaTE4blNlY3RvclNob3J0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGkxOG5TZWN0b3JbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgfSAke2FnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgPyBhZ2dyZWdhdGVkU2VjdG9yLmxhYmVsIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+YCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+YFxuICAgICAgICA6IG5vdGhpbmd9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX190cmFpbnNcIj5cbiAgICAgICAgJHt0aGlzLnJlbmRlckxpc3Qoe1xuICAgICAgICAgIGNsYXNzOiAnc2JiLXRyYWluLWZvcm1hdGlvbl9fdHJhaW4tbGlzdCcsXG4gICAgICAgICAgYXJpYUxhYmVsOiBpMThuVHJhaW5zW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10cmFpbi1mb3JtYXRpb24nOiBTYmJUcmFpbkZvcm1hdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lDdUNhLGtDQUF3QjttQkFBUyxzQkFH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