@sbb-esta/lyne-elements 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (887) hide show
  1. package/accordion/accordion.d.ts +4 -8
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/accordion.js +90 -81
  4. package/action-group/action-group.d.ts +5 -5
  5. package/action-group/action-group.d.ts.map +1 -1
  6. package/action-group.js +100 -50
  7. package/alert/alert/alert.d.ts +11 -11
  8. package/alert/alert/alert.d.ts.map +1 -1
  9. package/alert/alert-group/alert-group.d.ts +4 -4
  10. package/alert/alert-group/alert-group.d.ts.map +1 -1
  11. package/alert/alert-group.js +101 -69
  12. package/alert/alert.js +191 -104
  13. package/autocomplete/autocomplete-base-element.d.ts +3 -7
  14. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  15. package/autocomplete/autocomplete.d.ts.map +1 -1
  16. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  17. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  18. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  19. package/autocomplete-grid/autocomplete-grid-button.js +53 -60
  20. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  21. package/autocomplete-grid/autocomplete-grid-cell.js +20 -22
  22. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  23. package/autocomplete-grid/autocomplete-grid-optgroup.js +31 -35
  24. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  25. package/autocomplete-grid/autocomplete-grid-option.js +45 -63
  26. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  27. package/autocomplete-grid/autocomplete-grid-row.js +23 -25
  28. package/autocomplete-grid/autocomplete-grid.js +112 -133
  29. package/autocomplete.js +283 -295
  30. package/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  31. package/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  32. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  33. package/breadcrumb/breadcrumb-group.js +107 -114
  34. package/breadcrumb/breadcrumb.js +44 -35
  35. package/button/button/button.d.ts.map +1 -1
  36. package/button/button-link/button-link.d.ts.map +1 -1
  37. package/button/button-link.js +15 -18
  38. package/button/button-static/button-static.d.ts.map +1 -1
  39. package/button/button-static.js +15 -18
  40. package/button/button.js +15 -18
  41. package/button/common/button-common.d.ts +4 -4
  42. package/button/common/button-common.d.ts.map +1 -1
  43. package/button/common.js +41 -30
  44. package/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  45. package/button/mini-button/mini-button.d.ts.map +1 -1
  46. package/button/mini-button-group/mini-button-group.d.ts +2 -2
  47. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  48. package/button/mini-button-group.js +55 -43
  49. package/button/mini-button.js +30 -34
  50. package/button/secondary-button/secondary-button.d.ts.map +1 -1
  51. package/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  52. package/button/secondary-button-link.js +15 -18
  53. package/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  54. package/button/secondary-button-static.js +15 -18
  55. package/button/secondary-button.js +15 -18
  56. package/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  57. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  58. package/button/tertiary-button-link.js +15 -18
  59. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  60. package/button/tertiary-button-static.js +15 -18
  61. package/button/tertiary-button.js +15 -18
  62. package/button/transparent-button/transparent-button.d.ts.map +1 -1
  63. package/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  64. package/button/transparent-button-link.js +15 -18
  65. package/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  66. package/button/transparent-button-static.js +15 -18
  67. package/button/transparent-button.js +15 -18
  68. package/calendar/calendar.d.ts +7 -7
  69. package/calendar/calendar.d.ts.map +1 -1
  70. package/calendar.js +638 -692
  71. package/card/card/card.d.ts +2 -2
  72. package/card/card/card.d.ts.map +1 -1
  73. package/card/card-badge/card-badge.d.ts +1 -1
  74. package/card/card-badge/card-badge.d.ts.map +1 -1
  75. package/card/card-badge.js +45 -34
  76. package/card/card-button/card-button.d.ts.map +1 -1
  77. package/card/card-button.js +16 -16
  78. package/card/card-link/card-link.d.ts.map +1 -1
  79. package/card/card-link.js +17 -17
  80. package/card/card.js +55 -36
  81. package/card/common/card-action-common.d.ts +1 -1
  82. package/card/common/card-action-common.d.ts.map +1 -1
  83. package/card/common.js +27 -33
  84. package/checkbox/checkbox/checkbox.d.ts +3 -4
  85. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  86. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  87. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/checkbox/checkbox-group.js +99 -76
  89. package/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  90. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  91. package/checkbox/checkbox-panel.js +51 -50
  92. package/checkbox/checkbox.js +54 -43
  93. package/checkbox/common/checkbox-common.d.ts +1 -1
  94. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  95. package/checkbox/common.js +39 -24
  96. package/chip/chip.d.ts +2 -2
  97. package/chip/chip.d.ts.map +1 -1
  98. package/chip.js +45 -26
  99. package/clock/clock.d.ts +1 -1
  100. package/clock/clock.d.ts.map +1 -1
  101. package/clock.js +136 -144
  102. package/container/container/container.d.ts +3 -3
  103. package/container/container/container.d.ts.map +1 -1
  104. package/container/container.js +60 -35
  105. package/container/sticky-bar/sticky-bar.d.ts +1 -1
  106. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  107. package/container/sticky-bar.js +55 -47
  108. package/core/a11y.js +29 -51
  109. package/core/base-elements/action-base-element.d.ts.map +1 -1
  110. package/core/base-elements/button-base-element.d.ts +2 -2
  111. package/core/base-elements/button-base-element.d.ts.map +1 -1
  112. package/core/base-elements/link-base-element.d.ts +5 -5
  113. package/core/base-elements/link-base-element.d.ts.map +1 -1
  114. package/core/base-elements.js +243 -196
  115. package/core/controllers.js +8 -13
  116. package/core/decorators/base.d.ts +14 -0
  117. package/core/decorators/base.d.ts.map +1 -0
  118. package/core/decorators/force-type.d.ts +8 -0
  119. package/core/decorators/force-type.d.ts.map +1 -0
  120. package/core/decorators/get-override.d.ts +7 -0
  121. package/core/decorators/get-override.d.ts.map +1 -0
  122. package/core/decorators/handle-distinct-change.d.ts +8 -0
  123. package/core/decorators/handle-distinct-change.d.ts.map +1 -0
  124. package/core/decorators/omit-empty-converter.d.ts +8 -0
  125. package/core/decorators/omit-empty-converter.d.ts.map +1 -0
  126. package/core/decorators.d.ts +4 -0
  127. package/core/decorators.d.ts.map +1 -1
  128. package/core/decorators.js +59 -15
  129. package/core/dom.js +1 -5
  130. package/core/eventing.js +1 -4
  131. package/core/interfaces/paginator-page.d.ts +7 -0
  132. package/core/interfaces/paginator-page.d.ts.map +1 -0
  133. package/core/interfaces.d.ts +1 -0
  134. package/core/interfaces.d.ts.map +1 -1
  135. package/core/mixins/disabled-mixin.d.ts +2 -3
  136. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  137. package/core/mixins/named-slot-list-mixin.d.ts +1 -1
  138. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  139. package/core/mixins/negative-mixin.d.ts +1 -1
  140. package/core/mixins/negative-mixin.d.ts.map +1 -1
  141. package/core/mixins/panel-mixin.d.ts +3 -3
  142. package/core/mixins/panel-mixin.d.ts.map +1 -1
  143. package/core/mixins/required-mixin.d.ts +1 -2
  144. package/core/mixins/required-mixin.d.ts.map +1 -1
  145. package/core/mixins.js +290 -237
  146. package/core/testing/private.d.ts +1 -0
  147. package/core/testing/private.d.ts.map +1 -1
  148. package/core/testing.js +7 -13
  149. package/custom-elements.json +26385 -25594
  150. package/datepicker/common/datepicker-button.d.ts +2 -2
  151. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  152. package/datepicker/common.js +110 -116
  153. package/datepicker/datepicker/datepicker.d.ts +6 -6
  154. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  155. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  156. package/datepicker/datepicker-next-day.js +24 -26
  157. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  158. package/datepicker/datepicker-previous-day.js +25 -27
  159. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  160. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  161. package/datepicker/datepicker-toggle.js +154 -136
  162. package/datepicker/datepicker.js +248 -213
  163. package/development/accordion/accordion.d.ts +4 -8
  164. package/development/accordion/accordion.d.ts.map +1 -1
  165. package/development/accordion.js +118 -93
  166. package/development/action-group/action-group.d.ts +5 -5
  167. package/development/action-group/action-group.d.ts.map +1 -1
  168. package/development/action-group.js +138 -64
  169. package/development/alert/alert/alert.d.ts +11 -11
  170. package/development/alert/alert/alert.d.ts.map +1 -1
  171. package/development/alert/alert-group/alert-group.d.ts +4 -4
  172. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  173. package/development/alert/alert-group.js +135 -79
  174. package/development/alert/alert.js +259 -109
  175. package/development/autocomplete/autocomplete-base-element.d.ts +3 -7
  176. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  177. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  178. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  179. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +1 -0
  180. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  181. package/development/autocomplete-grid/autocomplete-grid-button.js +74 -75
  182. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -1
  183. package/development/autocomplete-grid/autocomplete-grid-cell.js +24 -24
  184. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  185. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +38 -39
  186. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  187. package/development/autocomplete-grid/autocomplete-grid-option.js +57 -73
  188. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -1
  189. package/development/autocomplete-grid/autocomplete-grid-row.js +28 -28
  190. package/development/autocomplete-grid/autocomplete-grid.js +142 -160
  191. package/development/autocomplete.js +394 -393
  192. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +1 -1
  193. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts.map +1 -1
  194. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  195. package/development/breadcrumb/breadcrumb-group.js +130 -130
  196. package/development/breadcrumb/breadcrumb.js +53 -36
  197. package/development/button/button/button.d.ts.map +1 -1
  198. package/development/button/button-link/button-link.d.ts.map +1 -1
  199. package/development/button/button-link.js +18 -19
  200. package/development/button/button-static/button-static.d.ts.map +1 -1
  201. package/development/button/button-static.js +18 -19
  202. package/development/button/button.js +18 -19
  203. package/development/button/common/button-common.d.ts +4 -4
  204. package/development/button/common/button-common.d.ts.map +1 -1
  205. package/development/button/common.js +50 -29
  206. package/development/button/mini-button/mini-button-base-element.d.ts.map +1 -1
  207. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  208. package/development/button/mini-button-group/mini-button-group.d.ts +2 -2
  209. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  210. package/development/button/mini-button-group.js +77 -50
  211. package/development/button/mini-button.js +38 -37
  212. package/development/button/secondary-button/secondary-button.d.ts.map +1 -1
  213. package/development/button/secondary-button-link/secondary-button-link.d.ts.map +1 -1
  214. package/development/button/secondary-button-link.js +18 -19
  215. package/development/button/secondary-button-static/secondary-button-static.d.ts.map +1 -1
  216. package/development/button/secondary-button-static.js +18 -19
  217. package/development/button/secondary-button.js +18 -19
  218. package/development/button/tertiary-button/tertiary-button.d.ts.map +1 -1
  219. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +1 -1
  220. package/development/button/tertiary-button-link.js +18 -19
  221. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +1 -1
  222. package/development/button/tertiary-button-static.js +18 -19
  223. package/development/button/tertiary-button.js +18 -19
  224. package/development/button/transparent-button/transparent-button.d.ts.map +1 -1
  225. package/development/button/transparent-button-link/transparent-button-link.d.ts.map +1 -1
  226. package/development/button/transparent-button-link.js +18 -19
  227. package/development/button/transparent-button-static/transparent-button-static.d.ts.map +1 -1
  228. package/development/button/transparent-button-static.js +18 -19
  229. package/development/button/transparent-button.js +18 -19
  230. package/development/calendar/calendar.d.ts +7 -7
  231. package/development/calendar/calendar.d.ts.map +1 -1
  232. package/development/calendar.js +768 -766
  233. package/development/card/card/card.d.ts +2 -2
  234. package/development/card/card/card.d.ts.map +1 -1
  235. package/development/card/card-badge/card-badge.d.ts +1 -1
  236. package/development/card/card-badge/card-badge.d.ts.map +1 -1
  237. package/development/card/card-badge.js +65 -45
  238. package/development/card/card-button/card-button.d.ts.map +1 -1
  239. package/development/card/card-button.js +23 -20
  240. package/development/card/card-link/card-link.d.ts.map +1 -1
  241. package/development/card/card-link.js +23 -20
  242. package/development/card/card.js +72 -41
  243. package/development/card/common/card-action-common.d.ts +1 -1
  244. package/development/card/common/card-action-common.d.ts.map +1 -1
  245. package/development/card/common.js +74 -73
  246. package/development/checkbox/checkbox/checkbox.d.ts +3 -4
  247. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  248. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -4
  249. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  250. package/development/checkbox/checkbox-group.js +139 -92
  251. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +2 -3
  252. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  253. package/development/checkbox/checkbox-panel.js +68 -60
  254. package/development/checkbox/checkbox.js +69 -46
  255. package/development/checkbox/common/checkbox-common.d.ts +1 -1
  256. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  257. package/development/checkbox/common.js +65 -46
  258. package/development/chip/chip.d.ts +2 -2
  259. package/development/chip/chip.d.ts.map +1 -1
  260. package/development/chip.js +64 -33
  261. package/development/clock/clock.d.ts +1 -1
  262. package/development/clock/clock.d.ts.map +1 -1
  263. package/development/clock.js +203 -201
  264. package/development/container/container/container.d.ts +3 -3
  265. package/development/container/container/container.d.ts.map +1 -1
  266. package/development/container/container.js +86 -45
  267. package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
  268. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  269. package/development/container/sticky-bar.js +76 -58
  270. package/development/core/a11y.js +40 -62
  271. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  272. package/development/core/base-elements/button-base-element.d.ts +2 -2
  273. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  274. package/development/core/base-elements/link-base-element.d.ts +5 -5
  275. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  276. package/development/core/base-elements.js +329 -226
  277. package/development/core/config.js +1 -1
  278. package/development/core/controllers.js +13 -21
  279. package/development/core/datetime.js +1 -1
  280. package/development/core/decorators/base.d.ts +14 -0
  281. package/development/core/decorators/base.d.ts.map +1 -0
  282. package/development/core/decorators/force-type.d.ts +8 -0
  283. package/development/core/decorators/force-type.d.ts.map +1 -0
  284. package/development/core/decorators/get-override.d.ts +7 -0
  285. package/development/core/decorators/get-override.d.ts.map +1 -0
  286. package/development/core/decorators/handle-distinct-change.d.ts +8 -0
  287. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -0
  288. package/development/core/decorators/omit-empty-converter.d.ts +8 -0
  289. package/development/core/decorators/omit-empty-converter.d.ts.map +1 -0
  290. package/development/core/decorators.d.ts +4 -0
  291. package/development/core/decorators.d.ts.map +1 -1
  292. package/development/core/decorators.js +69 -5
  293. package/development/core/dom.js +2 -6
  294. package/development/core/eventing.js +2 -5
  295. package/development/core/i18n.js +1 -1
  296. package/development/core/interfaces/paginator-page.d.ts +7 -0
  297. package/development/core/interfaces/paginator-page.d.ts.map +1 -0
  298. package/development/core/interfaces.d.ts +1 -0
  299. package/development/core/interfaces.d.ts.map +1 -1
  300. package/development/core/mixins/disabled-mixin.d.ts +2 -3
  301. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  302. package/development/core/mixins/named-slot-list-mixin.d.ts +1 -1
  303. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  304. package/development/core/mixins/negative-mixin.d.ts +1 -1
  305. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  306. package/development/core/mixins/panel-mixin.d.ts +3 -3
  307. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  308. package/development/core/mixins/required-mixin.d.ts +1 -2
  309. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  310. package/development/core/mixins.js +573 -475
  311. package/development/core/observers.js +1 -1
  312. package/development/core/overlay.js +1 -1
  313. package/development/core/testing/private.d.ts +1 -0
  314. package/development/core/testing/private.d.ts.map +1 -1
  315. package/development/core/testing.js +16 -22
  316. package/development/datepicker/common/datepicker-button.d.ts +2 -2
  317. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  318. package/development/datepicker/common.js +144 -142
  319. package/development/datepicker/datepicker/datepicker.d.ts +6 -6
  320. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  321. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  322. package/development/datepicker/datepicker-next-day.js +32 -32
  323. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  324. package/development/datepicker/datepicker-previous-day.js +32 -32
  325. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +6 -6
  326. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  327. package/development/datepicker/datepicker-toggle.js +227 -174
  328. package/development/datepicker/datepicker.js +327 -249
  329. package/development/dialog/dialog/dialog.d.ts +1 -1
  330. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  331. package/development/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  332. package/development/dialog/dialog-actions.js +21 -20
  333. package/development/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  334. package/development/dialog/dialog-content.js +22 -21
  335. package/development/dialog/dialog-title/dialog-title.d.ts +3 -3
  336. package/development/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  337. package/development/dialog/dialog-title.js +121 -66
  338. package/development/dialog/dialog.js +205 -191
  339. package/development/divider/divider.d.ts +1 -1
  340. package/development/divider/divider.d.ts.map +1 -1
  341. package/development/divider.js +55 -36
  342. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  343. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  344. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  345. package/development/expansion-panel/expansion-panel-content.js +25 -25
  346. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  347. package/development/expansion-panel/expansion-panel-header.js +56 -63
  348. package/development/expansion-panel/expansion-panel.js +227 -182
  349. package/development/file-selector/file-selector.d.ts +8 -7
  350. package/development/file-selector/file-selector.d.ts.map +1 -1
  351. package/development/file-selector.js +295 -198
  352. package/development/flip-card/flip-card/flip-card.d.ts +2 -2
  353. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  354. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  355. package/development/flip-card/flip-card-details.js +39 -39
  356. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  357. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  358. package/development/flip-card/flip-card-summary.js +57 -38
  359. package/development/flip-card/flip-card.js +110 -78
  360. package/development/footer/footer.d.ts +4 -4
  361. package/development/footer/footer.d.ts.map +1 -1
  362. package/development/footer.js +103 -41
  363. package/development/form-error/form-error.d.ts.map +1 -1
  364. package/development/form-error.js +29 -28
  365. package/development/form-field/form-field/form-field.d.ts +10 -10
  366. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  367. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  368. package/development/form-field/form-field-clear.js +50 -50
  369. package/development/form-field/form-field.js +439 -328
  370. package/development/header/common/header-action-common.d.ts +2 -2
  371. package/development/header/common/header-action-common.d.ts.map +1 -1
  372. package/development/header/common.js +44 -24
  373. package/development/header/header/header.d.ts +4 -4
  374. package/development/header/header/header.d.ts.map +1 -1
  375. package/development/header/header-button/header-button.d.ts.map +1 -1
  376. package/development/header/header-button.js +19 -18
  377. package/development/header/header-link/header-link.d.ts.map +1 -1
  378. package/development/header/header-link.js +19 -16
  379. package/development/header/header.js +198 -140
  380. package/development/icon/icon-base.d.ts +3 -4
  381. package/development/icon/icon-base.d.ts.map +1 -1
  382. package/development/icon/icon-name-mixin.d.ts +1 -1
  383. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  384. package/development/icon/icon.d.ts +2 -2
  385. package/development/icon/icon.d.ts.map +1 -1
  386. package/development/icon.js +258 -157
  387. package/development/image/image.d.ts +17 -17
  388. package/development/image/image.d.ts.map +1 -1
  389. package/development/image.js +584 -216
  390. package/development/journey-header/journey-header.d.ts +5 -5
  391. package/development/journey-header/journey-header.d.ts.map +1 -1
  392. package/development/journey-header.js +115 -43
  393. package/development/lead-container/lead-container.d.ts.map +1 -1
  394. package/development/lead-container.js +22 -21
  395. package/development/link/block-link/block-link.d.ts.map +1 -1
  396. package/development/link/block-link-button/block-link-button.d.ts.map +1 -1
  397. package/development/link/block-link-button.js +19 -18
  398. package/development/link/block-link-static/block-link-static.d.ts.map +1 -1
  399. package/development/link/block-link-static.js +19 -18
  400. package/development/link/block-link.js +19 -18
  401. package/development/link/common/block-link-common.d.ts +4 -3
  402. package/development/link/common/block-link-common.d.ts.map +1 -1
  403. package/development/link/common/link-common.d.ts +1 -1
  404. package/development/link/common/link-common.d.ts.map +1 -1
  405. package/development/link/common.js +81 -51
  406. package/development/link/link/link.d.ts.map +1 -1
  407. package/development/link/link-button/link-button.d.ts.map +1 -1
  408. package/development/link/link-button.js +19 -18
  409. package/development/link/link-static/link-static.d.ts.map +1 -1
  410. package/development/link/link-static.js +19 -18
  411. package/development/link/link.js +19 -18
  412. package/development/link-list/common/link-list-base.d.ts +3 -3
  413. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  414. package/development/link-list/common.js +97 -48
  415. package/development/link-list/link-list/link-list.d.ts +2 -2
  416. package/development/link-list/link-list/link-list.d.ts.map +1 -1
  417. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  418. package/development/link-list/link-list-anchor.js +18 -17
  419. package/development/link-list/link-list.js +60 -28
  420. package/development/loading-indicator/loading-indicator.d.ts +3 -3
  421. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  422. package/development/loading-indicator.js +82 -40
  423. package/development/logo/logo.d.ts +2 -2
  424. package/development/logo/logo.d.ts.map +1 -1
  425. package/development/logo.js +64 -32
  426. package/development/map-container/map-container.d.ts +2 -2
  427. package/development/map-container/map-container.d.ts.map +1 -1
  428. package/development/map-container.js +107 -75
  429. package/development/menu/common/menu-action-common.d.ts +2 -2
  430. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  431. package/development/menu/common.js +41 -20
  432. package/development/menu/menu/menu.d.ts +1 -1
  433. package/development/menu/menu/menu.d.ts.map +1 -1
  434. package/development/menu/menu-button/menu-button.d.ts.map +1 -1
  435. package/development/menu/menu-button.js +19 -18
  436. package/development/menu/menu-link/menu-link.d.ts.map +1 -1
  437. package/development/menu/menu-link.js +19 -18
  438. package/development/menu/menu.js +261 -241
  439. package/development/message/message.d.ts +2 -2
  440. package/development/message/message.d.ts.map +1 -1
  441. package/development/message.js +65 -32
  442. package/development/navigation/common/navigation-action-common.d.ts +1 -1
  443. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  444. package/development/navigation/common.js +63 -52
  445. package/development/navigation/navigation/navigation.d.ts +2 -2
  446. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  447. package/development/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  448. package/development/navigation/navigation-button.js +19 -18
  449. package/development/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  450. package/development/navigation/navigation-link.js +19 -18
  451. package/development/navigation/navigation-list/navigation-list.d.ts +1 -1
  452. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  453. package/development/navigation/navigation-list.js +64 -41
  454. package/development/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  455. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  456. package/development/navigation/navigation-marker.js +108 -91
  457. package/development/navigation/navigation-section/navigation-section.d.ts +3 -3
  458. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  459. package/development/navigation/navigation-section.js +282 -236
  460. package/development/navigation/navigation.js +278 -254
  461. package/development/notification/notification.d.ts +6 -6
  462. package/development/notification/notification.d.ts.map +1 -1
  463. package/development/notification.js +212 -146
  464. package/development/option/optgroup/optgroup-base-element.d.ts +3 -3
  465. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  466. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  467. package/development/option/optgroup.js +187 -142
  468. package/development/option/option/option-base-element.d.ts +7 -7
  469. package/development/option/option/option-base-element.d.ts.map +1 -1
  470. package/development/option/option/option.d.ts.map +1 -1
  471. package/development/option/option.js +392 -296
  472. package/development/overlay/overlay-base-element.d.ts +1 -1
  473. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  474. package/development/overlay/overlay.d.ts +4 -4
  475. package/development/overlay/overlay.d.ts.map +1 -1
  476. package/development/overlay.js +260 -207
  477. package/development/paginator/common/paginator-common.d.ts +26 -0
  478. package/development/paginator/common/paginator-common.d.ts.map +1 -0
  479. package/development/paginator/common.d.ts +2 -0
  480. package/development/paginator/common.d.ts.map +1 -0
  481. package/development/paginator/common.js +189 -0
  482. package/development/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  483. package/development/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  484. package/development/paginator/compact-paginator.d.ts +2 -0
  485. package/development/paginator/compact-paginator.d.ts.map +1 -0
  486. package/development/paginator/compact-paginator.js +96 -0
  487. package/development/paginator/paginator/paginator.d.ts +51 -0
  488. package/development/paginator/paginator/paginator.d.ts.map +1 -0
  489. package/development/paginator/paginator.d.ts +1 -90
  490. package/development/paginator/paginator.d.ts.map +1 -1
  491. package/development/paginator/paginator.js +449 -0
  492. package/development/paginator.d.ts +2 -0
  493. package/development/paginator.d.ts.map +1 -1
  494. package/development/paginator.js +4 -541
  495. package/development/popover/popover/popover.d.ts +6 -7
  496. package/development/popover/popover/popover.d.ts.map +1 -1
  497. package/development/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  498. package/development/popover/popover-trigger.js +28 -29
  499. package/development/popover/popover.js +358 -303
  500. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  501. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  502. package/development/radio-button/common.js +170 -127
  503. package/development/radio-button/radio-button/radio-button.d.ts +2 -6
  504. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  505. package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  506. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  507. package/development/radio-button/radio-button-group.js +269 -199
  508. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  509. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  510. package/development/radio-button/radio-button-panel.js +60 -48
  511. package/development/radio-button/radio-button.js +54 -40
  512. package/development/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  513. package/development/screen-reader-only.js +22 -21
  514. package/development/select/select.d.ts +5 -4
  515. package/development/select/select.d.ts.map +1 -1
  516. package/development/select.js +555 -555
  517. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  518. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  519. package/development/selection-expansion-panel.js +223 -193
  520. package/development/signet/signet.d.ts +2 -2
  521. package/development/signet/signet.d.ts.map +1 -1
  522. package/development/signet.js +65 -33
  523. package/development/skiplink-list/skiplink-list.d.ts +2 -2
  524. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  525. package/development/skiplink-list.js +74 -41
  526. package/development/slider/slider.d.ts +5 -4
  527. package/development/slider/slider.d.ts.map +1 -1
  528. package/development/slider.js +260 -184
  529. package/development/status/status.d.ts +3 -3
  530. package/development/status/status.d.ts.map +1 -1
  531. package/development/status.js +96 -51
  532. package/development/stepper/step/step.d.ts.map +1 -1
  533. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  534. package/development/stepper/step-label.js +86 -90
  535. package/development/stepper/step.js +122 -126
  536. package/development/stepper/stepper/stepper.d.ts +3 -3
  537. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  538. package/development/stepper/stepper.js +291 -241
  539. package/development/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  540. package/development/table/table-wrapper.js +37 -39
  541. package/development/tabs/tab/tab.d.ts.map +1 -1
  542. package/development/tabs/tab-group/tab-group.d.ts +2 -2
  543. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  544. package/development/tabs/tab-group.js +296 -279
  545. package/development/tabs/tab-label/tab-label.d.ts +3 -3
  546. package/development/tabs/tab-label/tab-label.d.ts.map +1 -1
  547. package/development/tabs/tab-label.js +83 -37
  548. package/development/tabs/tab.js +40 -39
  549. package/development/tag/tag/tag.d.ts +3 -5
  550. package/development/tag/tag/tag.d.ts.map +1 -1
  551. package/development/tag/tag-group/tag-group.d.ts +3 -3
  552. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  553. package/development/tag/tag-group.js +143 -88
  554. package/development/tag/tag.js +126 -89
  555. package/development/teaser/teaser.d.ts +4 -4
  556. package/development/teaser/teaser.d.ts.map +1 -1
  557. package/development/teaser-hero/teaser-hero.d.ts +3 -3
  558. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  559. package/development/teaser-hero.js +83 -36
  560. package/development/teaser-product/common/teaser-product-common.d.ts +1 -1
  561. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  562. package/development/teaser-product/common.js +51 -26
  563. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  564. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  565. package/development/teaser-product/teaser-product-static.js +18 -19
  566. package/development/teaser-product/teaser-product.js +18 -19
  567. package/development/teaser.js +94 -40
  568. package/development/time-input/time-input.d.ts +1 -1
  569. package/development/time-input/time-input.d.ts.map +1 -1
  570. package/development/time-input.js +225 -219
  571. package/development/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  572. package/development/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  573. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  574. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  575. package/development/timetable-occupancy-icon.js +78 -57
  576. package/development/timetable-occupancy.js +67 -35
  577. package/development/title/title-base.d.ts +3 -3
  578. package/development/title/title-base.d.ts.map +1 -1
  579. package/development/title/title.d.ts.map +1 -1
  580. package/development/title.js +106 -58
  581. package/development/toast/toast.d.ts +4 -4
  582. package/development/toast/toast.d.ts.map +1 -1
  583. package/development/toast.js +204 -146
  584. package/development/toggle/toggle/toggle.d.ts +3 -5
  585. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  586. package/development/toggle/toggle-option/toggle-option.d.ts +2 -2
  587. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  588. package/development/toggle/toggle-option.js +127 -93
  589. package/development/toggle/toggle.js +200 -163
  590. package/development/toggle-check/toggle-check.d.ts +4 -3
  591. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  592. package/development/toggle-check.js +87 -49
  593. package/development/train/train/train.d.ts +5 -5
  594. package/development/train/train/train.d.ts.map +1 -1
  595. package/development/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  596. package/development/train/train-blocked-passage.js +22 -21
  597. package/development/train/train-formation/train-formation.d.ts +2 -2
  598. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  599. package/development/train/train-formation.js +113 -90
  600. package/development/train/train-wagon/train-wagon.d.ts +7 -9
  601. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  602. package/development/train/train-wagon.js +166 -87
  603. package/development/train/train.js +142 -75
  604. package/development/visual-checkbox/visual-checkbox.d.ts +3 -3
  605. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  606. package/development/visual-checkbox.js +79 -36
  607. package/dialog/dialog/dialog.d.ts +1 -1
  608. package/dialog/dialog/dialog.d.ts.map +1 -1
  609. package/dialog/dialog-actions/dialog-actions.d.ts.map +1 -1
  610. package/dialog/dialog-actions.js +18 -19
  611. package/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  612. package/dialog/dialog-content.js +17 -18
  613. package/dialog/dialog-title/dialog-title.d.ts +3 -3
  614. package/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  615. package/dialog/dialog-title.js +98 -66
  616. package/dialog/dialog.js +120 -114
  617. package/divider/divider.d.ts +1 -1
  618. package/divider/divider.d.ts.map +1 -1
  619. package/divider.js +41 -30
  620. package/expansion-panel/expansion-panel/expansion-panel.d.ts +4 -4
  621. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  622. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts.map +1 -1
  623. package/expansion-panel/expansion-panel-content.js +20 -22
  624. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  625. package/expansion-panel/expansion-panel-header.js +53 -61
  626. package/expansion-panel/expansion-panel.js +145 -130
  627. package/file-selector/file-selector.d.ts +8 -7
  628. package/file-selector/file-selector.d.ts.map +1 -1
  629. package/file-selector.js +224 -174
  630. package/flip-card/flip-card/flip-card.d.ts +2 -2
  631. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  632. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  633. package/flip-card/flip-card-details.js +36 -38
  634. package/flip-card/flip-card-summary/flip-card-summary.d.ts +1 -1
  635. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -1
  636. package/flip-card/flip-card-summary.js +42 -31
  637. package/flip-card/flip-card.js +88 -69
  638. package/footer/footer.d.ts +4 -4
  639. package/footer/footer.d.ts.map +1 -1
  640. package/footer.js +78 -37
  641. package/form-error/form-error.d.ts.map +1 -1
  642. package/form-error.js +24 -25
  643. package/form-field/form-field/form-field.d.ts +10 -10
  644. package/form-field/form-field/form-field.d.ts.map +1 -1
  645. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  646. package/form-field/form-field-clear.js +39 -41
  647. package/form-field/form-field.js +295 -239
  648. package/header/common/header-action-common.d.ts +2 -2
  649. package/header/common/header-action-common.d.ts.map +1 -1
  650. package/header/common.js +36 -21
  651. package/header/header/header.d.ts +4 -4
  652. package/header/header/header.d.ts.map +1 -1
  653. package/header/header-button/header-button.d.ts.map +1 -1
  654. package/header/header-button.js +14 -16
  655. package/header/header-link/header-link.d.ts.map +1 -1
  656. package/header/header-link.js +14 -14
  657. package/header/header.js +138 -109
  658. package/icon/icon-base.d.ts +3 -4
  659. package/icon/icon-base.d.ts.map +1 -1
  660. package/icon/icon-name-mixin.d.ts +1 -1
  661. package/icon/icon-name-mixin.d.ts.map +1 -1
  662. package/icon/icon.d.ts +2 -2
  663. package/icon/icon.d.ts.map +1 -1
  664. package/icon.js +230 -165
  665. package/image/image.d.ts +17 -17
  666. package/image/image.d.ts.map +1 -1
  667. package/image.js +465 -195
  668. package/index.d.ts +3 -1
  669. package/index.js +3 -1
  670. package/journey-header/journey-header.d.ts +5 -5
  671. package/journey-header/journey-header.d.ts.map +1 -1
  672. package/journey-header.js +89 -49
  673. package/lead-container/lead-container.d.ts.map +1 -1
  674. package/lead-container.js +17 -18
  675. package/link/block-link/block-link.d.ts.map +1 -1
  676. package/link/block-link-button/block-link-button.d.ts.map +1 -1
  677. package/link/block-link-button.js +15 -17
  678. package/link/block-link-static/block-link-static.d.ts.map +1 -1
  679. package/link/block-link-static.js +14 -16
  680. package/link/block-link.js +15 -17
  681. package/link/common/block-link-common.d.ts +4 -3
  682. package/link/common/block-link-common.d.ts.map +1 -1
  683. package/link/common/link-common.d.ts +1 -1
  684. package/link/common/link-common.d.ts.map +1 -1
  685. package/link/common.js +64 -46
  686. package/link/link/link.d.ts.map +1 -1
  687. package/link/link-button/link-button.d.ts.map +1 -1
  688. package/link/link-button.js +15 -17
  689. package/link/link-static/link-static.d.ts.map +1 -1
  690. package/link/link-static.js +15 -17
  691. package/link/link.js +15 -17
  692. package/link-list/common/link-list-base.d.ts +3 -3
  693. package/link-list/common/link-list-base.d.ts.map +1 -1
  694. package/link-list/common.js +72 -44
  695. package/link-list/link-list/link-list.d.ts +2 -2
  696. package/link-list/link-list/link-list.d.ts.map +1 -1
  697. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -1
  698. package/link-list/link-list-anchor.js +15 -16
  699. package/link-list/link-list.js +43 -24
  700. package/loading-indicator/loading-indicator.d.ts +3 -3
  701. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  702. package/loading-indicator.js +61 -36
  703. package/logo/logo.d.ts +2 -2
  704. package/logo/logo.d.ts.map +1 -1
  705. package/logo.js +47 -27
  706. package/map-container/map-container.d.ts +2 -2
  707. package/map-container/map-container.d.ts.map +1 -1
  708. package/map-container.js +84 -65
  709. package/menu/common/menu-action-common.d.ts +2 -2
  710. package/menu/common/menu-action-common.d.ts.map +1 -1
  711. package/menu/common.js +37 -22
  712. package/menu/menu/menu.d.ts +1 -1
  713. package/menu/menu/menu.d.ts.map +1 -1
  714. package/menu/menu-button/menu-button.d.ts.map +1 -1
  715. package/menu/menu-button.js +14 -16
  716. package/menu/menu-link/menu-link.d.ts.map +1 -1
  717. package/menu/menu-link.js +15 -17
  718. package/menu/menu.js +175 -170
  719. package/message/message.d.ts +2 -2
  720. package/message/message.d.ts.map +1 -1
  721. package/message.js +47 -27
  722. package/navigation/common/navigation-action-common.d.ts +1 -1
  723. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  724. package/navigation/common.js +38 -33
  725. package/navigation/navigation/navigation.d.ts +2 -2
  726. package/navigation/navigation/navigation.d.ts.map +1 -1
  727. package/navigation/navigation-button/navigation-button.d.ts.map +1 -1
  728. package/navigation/navigation-button.js +14 -16
  729. package/navigation/navigation-link/navigation-link.d.ts.map +1 -1
  730. package/navigation/navigation-link.js +14 -16
  731. package/navigation/navigation-list/navigation-list.d.ts +1 -1
  732. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  733. package/navigation/navigation-list.js +48 -35
  734. package/navigation/navigation-marker/navigation-marker.d.ts +1 -1
  735. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  736. package/navigation/navigation-marker.js +77 -69
  737. package/navigation/navigation-section/navigation-section.d.ts +3 -3
  738. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  739. package/navigation/navigation-section.js +192 -171
  740. package/navigation/navigation.js +185 -181
  741. package/notification/notification.d.ts +6 -6
  742. package/notification/notification.d.ts.map +1 -1
  743. package/notification.js +147 -116
  744. package/option/optgroup/optgroup-base-element.d.ts +3 -3
  745. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  746. package/option/optgroup/optgroup.d.ts.map +1 -1
  747. package/option/optgroup.js +131 -112
  748. package/option/option/option-base-element.d.ts +7 -7
  749. package/option/option/option-base-element.d.ts.map +1 -1
  750. package/option/option/option.d.ts.map +1 -1
  751. package/option/option.js +295 -252
  752. package/overlay/overlay-base-element.d.ts +1 -1
  753. package/overlay/overlay-base-element.d.ts.map +1 -1
  754. package/overlay/overlay.d.ts +4 -4
  755. package/overlay/overlay.d.ts.map +1 -1
  756. package/overlay.js +194 -165
  757. package/package.json +18 -2
  758. package/paginator/common/paginator-common.d.ts +26 -0
  759. package/paginator/common/paginator-common.d.ts.map +1 -0
  760. package/paginator/common.d.ts +2 -0
  761. package/paginator/common.d.ts.map +1 -0
  762. package/paginator/common.js +145 -0
  763. package/paginator/compact-paginator/compact-paginator.d.ts +20 -0
  764. package/paginator/compact-paginator/compact-paginator.d.ts.map +1 -0
  765. package/paginator/compact-paginator.d.ts +2 -0
  766. package/paginator/compact-paginator.d.ts.map +1 -0
  767. package/paginator/compact-paginator.js +40 -0
  768. package/paginator/paginator/paginator.d.ts +51 -0
  769. package/paginator/paginator/paginator.d.ts.map +1 -0
  770. package/paginator/paginator.d.ts +1 -90
  771. package/paginator/paginator.d.ts.map +1 -1
  772. package/paginator/paginator.js +171 -0
  773. package/paginator.d.ts +2 -0
  774. package/paginator.d.ts.map +1 -1
  775. package/paginator.js +3 -265
  776. package/popover/popover/popover.d.ts +6 -7
  777. package/popover/popover/popover.d.ts.map +1 -1
  778. package/popover/popover-trigger/popover-trigger.d.ts.map +1 -1
  779. package/popover/popover-trigger.js +26 -29
  780. package/popover/popover.js +230 -208
  781. package/radio-button/common/radio-button-common.d.ts +1 -1
  782. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  783. package/radio-button/common.js +67 -43
  784. package/radio-button/radio-button/radio-button.d.ts +2 -6
  785. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  786. package/radio-button/radio-button-group/radio-button-group.d.ts +6 -6
  787. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  788. package/radio-button/radio-button-group.js +192 -156
  789. package/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -6
  790. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  791. package/radio-button/radio-button-panel.js +49 -45
  792. package/radio-button/radio-button.js +43 -37
  793. package/screen-reader-only/screen-reader-only.d.ts.map +1 -1
  794. package/screen-reader-only.js +17 -18
  795. package/select/select.d.ts +5 -4
  796. package/select/select.d.ts.map +1 -1
  797. package/select.js +377 -401
  798. package/selection-expansion-panel/selection-expansion-panel.d.ts +3 -3
  799. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  800. package/selection-expansion-panel.js +157 -148
  801. package/signet/signet.d.ts +2 -2
  802. package/signet/signet.d.ts.map +1 -1
  803. package/signet.js +48 -28
  804. package/skiplink-list/skiplink-list.d.ts +2 -2
  805. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  806. package/skiplink-list.js +54 -36
  807. package/slider/slider.d.ts +5 -4
  808. package/slider/slider.d.ts.map +1 -1
  809. package/slider.js +197 -158
  810. package/status/status.d.ts +3 -3
  811. package/status/status.d.ts.map +1 -1
  812. package/status.js +71 -46
  813. package/stepper/step/step.d.ts.map +1 -1
  814. package/stepper/step-label/step-label.d.ts.map +1 -1
  815. package/stepper/step-label.js +69 -75
  816. package/stepper/step.js +99 -104
  817. package/stepper/stepper/stepper.d.ts +3 -3
  818. package/stepper/stepper/stepper.d.ts.map +1 -1
  819. package/stepper/stepper.js +208 -188
  820. package/table/table-wrapper/table-wrapper.d.ts.map +1 -1
  821. package/table/table-wrapper.js +32 -36
  822. package/tabs/tab/tab.d.ts.map +1 -1
  823. package/tabs/tab-group/tab-group.d.ts +2 -2
  824. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  825. package/tabs/tab-group.js +200 -193
  826. package/tabs/tab-label/tab-label.d.ts +3 -3
  827. package/tabs/tab-label/tab-label.d.ts.map +1 -1
  828. package/tabs/tab-label.js +65 -37
  829. package/tabs/tab.js +34 -35
  830. package/tag/tag/tag.d.ts +3 -5
  831. package/tag/tag/tag.d.ts.map +1 -1
  832. package/tag/tag-group/tag-group.d.ts +3 -3
  833. package/tag/tag-group/tag-group.d.ts.map +1 -1
  834. package/tag/tag-group.js +107 -75
  835. package/tag/tag.js +92 -73
  836. package/teaser/teaser.d.ts +4 -4
  837. package/teaser/teaser.d.ts.map +1 -1
  838. package/teaser-hero/teaser-hero.d.ts +3 -3
  839. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  840. package/teaser-hero.js +66 -38
  841. package/teaser-product/common/teaser-product-common.d.ts +1 -1
  842. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  843. package/teaser-product/common.js +36 -21
  844. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -1
  845. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -1
  846. package/teaser-product/teaser-product-static.js +14 -17
  847. package/teaser-product/teaser-product.js +14 -17
  848. package/teaser.js +69 -37
  849. package/time-input/time-input.d.ts +1 -1
  850. package/time-input/time-input.d.ts.map +1 -1
  851. package/time-input.js +160 -166
  852. package/timetable-occupancy/timetable-occupancy.d.ts +2 -2
  853. package/timetable-occupancy/timetable-occupancy.d.ts.map +1 -1
  854. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +1 -1
  855. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  856. package/timetable-occupancy-icon.js +60 -48
  857. package/timetable-occupancy.js +55 -38
  858. package/title/title-base.d.ts +3 -3
  859. package/title/title-base.d.ts.map +1 -1
  860. package/title/title.d.ts.map +1 -1
  861. package/title.js +81 -53
  862. package/toast/toast.d.ts +4 -4
  863. package/toast/toast.d.ts.map +1 -1
  864. package/toast.js +156 -123
  865. package/toggle/toggle/toggle.d.ts +3 -5
  866. package/toggle/toggle/toggle.d.ts.map +1 -1
  867. package/toggle/toggle-option/toggle-option.d.ts +2 -2
  868. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  869. package/toggle/toggle-option.js +89 -72
  870. package/toggle/toggle.js +139 -122
  871. package/toggle-check/toggle-check.d.ts +4 -3
  872. package/toggle-check/toggle-check.d.ts.map +1 -1
  873. package/toggle-check.js +63 -41
  874. package/train/train/train.d.ts +5 -5
  875. package/train/train/train.d.ts.map +1 -1
  876. package/train/train-blocked-passage/train-blocked-passage.d.ts.map +1 -1
  877. package/train/train-blocked-passage.js +17 -18
  878. package/train/train-formation/train-formation.d.ts +2 -2
  879. package/train/train-formation/train-formation.d.ts.map +1 -1
  880. package/train/train-formation.js +96 -87
  881. package/train/train-wagon/train-wagon.d.ts +7 -9
  882. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  883. package/train/train-wagon.js +150 -110
  884. package/train/train.js +108 -71
  885. package/visual-checkbox/visual-checkbox.d.ts +3 -3
  886. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  887. package/visual-checkbox.js +59 -32
@@ -1,7 +1,16 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __runInitializers, __esDecorate } from "tslib";
1
9
  import { css, nothing } from "lit";
2
10
  import { property, customElement } from "lit/decorators.js";
3
11
  import { html, unsafeStatic } from "lit/static-html.js";
4
12
  import { SbbFocusHandler, setModalityOnNextFocus, getFirstFocusableElement } from "./core/a11y.js";
13
+ import { forceType } from "./core/decorators.js";
5
14
  import { EventEmitter } from "./core/eventing.js";
6
15
  import { i18nDialog, i18nCloseDialog, i18nGoBack } from "./core/i18n.js";
7
16
  import { SbbOpenCloseBaseElement } from "./core/base-elements.js";
@@ -12,116 +21,117 @@ import "./button/secondary-button.js";
12
21
  import "./button/transparent-button.js";
13
22
  import "./container.js";
14
23
  import "./screen-reader-only.js";
15
- var __defProp$1 = Object.defineProperty;
16
- var __decorateClass$1 = (decorators, target, key, kind) => {
17
- var result = void 0;
18
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
19
- if (decorator = decorators[i])
20
- result = decorator(target, key, result) || result;
21
- if (result) __defProp$1(target, key, result);
22
- return result;
23
- };
24
24
  const overlayRefs = [];
25
- const _SbbOverlayBaseElement = class _SbbOverlayBaseElement2 extends SbbNegativeMixin(SbbOpenCloseBaseElement) {
26
- constructor() {
27
- super(...arguments);
28
- this.didClose = new EventEmitter(
29
- this,
30
- _SbbOverlayBaseElement2.events.didClose
31
- );
32
- this.focusHandler = new SbbFocusHandler();
33
- this.scrollHandler = new SbbScrollHandler();
34
- this.ariaLiveRefToggle = false;
35
- this.language = new SbbLanguageController(this);
36
- this.inertController = new SbbInertController(this);
37
- }
38
- /** Closes the component. */
39
- close(result, target) {
40
- if (this.state !== "opened") {
41
- return;
25
+ let SbbOverlayBaseElement = (() => {
26
+ var _accessibilityLabel_accessor_storage, _a;
27
+ let _classSuper = SbbNegativeMixin(SbbOpenCloseBaseElement);
28
+ let _accessibilityLabel_decorators;
29
+ let _accessibilityLabel_initializers = [];
30
+ let _accessibilityLabel_extraInitializers = [];
31
+ return _a = class extends _classSuper {
32
+ constructor() {
33
+ super(...arguments);
34
+ __privateAdd(this, _accessibilityLabel_accessor_storage);
35
+ __privateSet(this, _accessibilityLabel_accessor_storage, __runInitializers(this, _accessibilityLabel_initializers, ""));
36
+ this.didClose = (__runInitializers(this, _accessibilityLabel_extraInitializers), new EventEmitter(this, _a.events.didClose));
37
+ this.focusHandler = new SbbFocusHandler();
38
+ this.scrollHandler = new SbbScrollHandler();
39
+ this.ariaLiveRefToggle = false;
40
+ this.language = new SbbLanguageController(this);
41
+ this.inertController = new SbbInertController(this);
42
42
  }
43
- this.returnValue = result;
44
- this.overlayCloseElement = target;
45
- const eventData = {
46
- returnValue: this.returnValue,
47
- closeTarget: this.overlayCloseElement
48
- };
49
- if (!this.willClose.emit(eventData)) {
50
- return;
43
+ /** This will be forwarded as aria-label to the relevant nested element to describe the purpose of the overlay. */
44
+ get accessibilityLabel() {
45
+ return __privateGet(this, _accessibilityLabel_accessor_storage);
51
46
  }
52
- this.state = "closing";
53
- this.removeAriaLiveRefContent();
54
- }
55
- connectedCallback() {
56
- var _a;
57
- super.connectedCallback();
58
- (_a = this.overlayController) == null ? void 0 : _a.abort();
59
- this.overlayController = new AbortController();
60
- }
61
- firstUpdated(changedProperties) {
62
- this.ariaLiveRef = this.shadowRoot.querySelector("sbb-screen-reader-only");
63
- super.firstUpdated(changedProperties);
64
- }
65
- disconnectedCallback() {
66
- var _a, _b;
67
- super.disconnectedCallback();
68
- (_a = this.overlayController) == null ? void 0 : _a.abort();
69
- (_b = this.openOverlayController) == null ? void 0 : _b.abort();
70
- this.focusHandler.disconnect();
71
- this.removeInstanceFromGlobalCollection();
72
- this.scrollHandler.enableScroll();
73
- }
74
- attachOpenOverlayEvents() {
75
- this.openOverlayController = new AbortController();
76
- window.addEventListener(
77
- "keydown",
78
- (event) => {
47
+ set accessibilityLabel(value) {
48
+ __privateSet(this, _accessibilityLabel_accessor_storage, value);
49
+ }
50
+ /** Closes the component. */
51
+ close(result, target) {
52
+ if (this.state !== "opened") {
53
+ return;
54
+ }
55
+ this.returnValue = result;
56
+ this.overlayCloseElement = target;
57
+ const eventData = {
58
+ returnValue: this.returnValue,
59
+ closeTarget: this.overlayCloseElement
60
+ };
61
+ if (!this.willClose.emit(eventData)) {
62
+ return;
63
+ }
64
+ this.state = "closing";
65
+ this.removeAriaLiveRefContent();
66
+ }
67
+ connectedCallback() {
68
+ var _a2;
69
+ super.connectedCallback();
70
+ (_a2 = this.overlayController) == null ? void 0 : _a2.abort();
71
+ this.overlayController = new AbortController();
72
+ }
73
+ firstUpdated(changedProperties) {
74
+ this.ariaLiveRef = this.shadowRoot.querySelector("sbb-screen-reader-only");
75
+ super.firstUpdated(changedProperties);
76
+ }
77
+ disconnectedCallback() {
78
+ var _a2, _b;
79
+ super.disconnectedCallback();
80
+ (_a2 = this.overlayController) == null ? void 0 : _a2.abort();
81
+ (_b = this.openOverlayController) == null ? void 0 : _b.abort();
82
+ this.focusHandler.disconnect();
83
+ this.removeInstanceFromGlobalCollection();
84
+ this.scrollHandler.enableScroll();
85
+ }
86
+ attachOpenOverlayEvents() {
87
+ this.openOverlayController = new AbortController();
88
+ window.addEventListener("keydown", (event) => {
79
89
  this.removeAriaLiveRefContent();
80
90
  this.onKeydownEvent(event);
81
- },
82
- {
91
+ }, {
83
92
  signal: this.openOverlayController.signal
93
+ });
94
+ window.addEventListener("click", () => this.removeAriaLiveRefContent(), {
95
+ signal: this.openOverlayController.signal
96
+ });
97
+ }
98
+ onKeydownEvent(event) {
99
+ if (this.state !== "opened") {
100
+ return;
101
+ }
102
+ if (event.key === "Escape") {
103
+ overlayRefs[overlayRefs.length - 1].close();
104
+ return;
84
105
  }
85
- );
86
- window.addEventListener("click", () => this.removeAriaLiveRefContent(), {
87
- signal: this.openOverlayController.signal
88
- });
89
- }
90
- onKeydownEvent(event) {
91
- if (this.state !== "opened") {
92
- return;
93
106
  }
94
- if (event.key === "Escape") {
95
- overlayRefs[overlayRefs.length - 1].close();
96
- return;
107
+ removeInstanceFromGlobalCollection() {
108
+ overlayRefs.splice(overlayRefs.indexOf(this), 1);
97
109
  }
98
- }
99
- removeInstanceFromGlobalCollection() {
100
- overlayRefs.splice(overlayRefs.indexOf(this), 1);
101
- }
102
- // Close the component on click of any element that has the `closeAttribute` attribute.
103
- closeOnSbbOverlayCloseClick(event) {
104
- const overlayCloseElement = event.composedPath().filter((e) => e instanceof window.HTMLElement).find(
105
- (target) => target.hasAttribute(this.closeAttribute) && !target.hasAttribute("disabled")
106
- );
107
- if (!overlayCloseElement) {
108
- return;
110
+ // Close the component on click of any element that has the `closeAttribute` attribute.
111
+ closeOnSbbOverlayCloseClick(event) {
112
+ const overlayCloseElement = event.composedPath().filter((e) => e instanceof window.HTMLElement).find((target) => target.hasAttribute(this.closeAttribute) && !target.hasAttribute("disabled"));
113
+ if (!overlayCloseElement) {
114
+ return;
115
+ }
116
+ const closestForm = overlayCloseElement.getAttribute("type") === "submit" ? hostContext("form", overlayCloseElement) : void 0;
117
+ overlayRefs[overlayRefs.length - 1].close(closestForm, overlayCloseElement);
109
118
  }
110
- const closestForm = overlayCloseElement.getAttribute("type") === "submit" ? hostContext("form", overlayCloseElement) : void 0;
111
- overlayRefs[overlayRefs.length - 1].close(closestForm, overlayCloseElement);
112
- }
113
- removeAriaLiveRefContent() {
114
- this.ariaLiveRef.textContent = "";
115
- }
116
- setAriaLiveRefContent(label) {
117
- this.ariaLiveRefToggle = !this.ariaLiveRefToggle;
118
- this.ariaLiveRef.textContent = `${i18nDialog[this.language.current]}${label ? `, ${label}` : ""}${this.ariaLiveRefToggle ? " " : ""}`;
119
- }
120
- };
121
- __decorateClass$1([
122
- property({ attribute: "accessibility-label" })
123
- ], _SbbOverlayBaseElement.prototype, "accessibilityLabel");
124
- let SbbOverlayBaseElement = _SbbOverlayBaseElement;
119
+ removeAriaLiveRefContent() {
120
+ this.ariaLiveRef.textContent = "";
121
+ }
122
+ setAriaLiveRefContent(label) {
123
+ this.ariaLiveRefToggle = !this.ariaLiveRefToggle;
124
+ this.ariaLiveRef.textContent = `${i18nDialog[this.language.current]}${label ? `, ${label}` : ""}${this.ariaLiveRefToggle ? " " : ""}`;
125
+ }
126
+ }, _accessibilityLabel_accessor_storage = new WeakMap(), (() => {
127
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
128
+ _accessibilityLabel_decorators = [forceType(), property({ attribute: "accessibility-label" })];
129
+ __esDecorate(_a, null, _accessibilityLabel_decorators, { kind: "accessor", name: "accessibilityLabel", static: false, private: false, access: { has: (obj) => "accessibilityLabel" in obj, get: (obj) => obj.accessibilityLabel, set: (obj, value) => {
130
+ obj.accessibilityLabel = value;
131
+ } }, metadata: _metadata }, _accessibilityLabel_initializers, _accessibilityLabel_extraInitializers);
132
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
133
+ })(), _a;
134
+ })();
125
135
  const style = css`*,
126
136
  ::before,
127
137
  ::after {
@@ -313,89 +323,126 @@ const style = css`*,
313
323
  transform: translateY(var(--sbb-spacing-fixed-4x));
314
324
  }
315
325
  }`;
316
- var __defProp = Object.defineProperty;
317
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
318
- var __decorateClass = (decorators, target, key, kind) => {
319
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
320
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
321
- if (decorator = decorators[i])
322
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
323
- if (kind && result) __defProp(target, key, result);
324
- return result;
325
- };
326
- let SbbOverlayElement = class extends SbbOverlayBaseElement {
327
- constructor() {
328
- super(...arguments);
329
- this.expanded = false;
330
- this.backButton = false;
331
- this.closeAttribute = "sbb-overlay-close";
332
- this._backClick = new EventEmitter(
333
- this,
334
- SbbOverlayElement.events.backClick
335
- );
336
- this._overlayContentElement = null;
337
- }
338
- /** Opens the component. */
339
- open() {
340
- var _a;
341
- if (this.state !== "closed") {
342
- return;
326
+ let SbbOverlayElement = (() => {
327
+ var _expanded_accessor_storage, _backButton_accessor_storage, _accessibilityCloseLabel_accessor_storage, _accessibilityBackLabel_accessor_storage, _a;
328
+ let _classDecorators = [customElement("sbb-overlay")];
329
+ let _classDescriptor;
330
+ let _classExtraInitializers = [];
331
+ let _classThis;
332
+ let _classSuper = SbbOverlayBaseElement;
333
+ let _expanded_decorators;
334
+ let _expanded_initializers = [];
335
+ let _expanded_extraInitializers = [];
336
+ let _backButton_decorators;
337
+ let _backButton_initializers = [];
338
+ let _backButton_extraInitializers = [];
339
+ let _accessibilityCloseLabel_decorators;
340
+ let _accessibilityCloseLabel_initializers = [];
341
+ let _accessibilityCloseLabel_extraInitializers = [];
342
+ let _accessibilityBackLabel_decorators;
343
+ let _accessibilityBackLabel_initializers = [];
344
+ let _accessibilityBackLabel_extraInitializers = [];
345
+ var SbbOverlayElement2 = (_a = class extends _classSuper {
346
+ constructor() {
347
+ super(...arguments);
348
+ __privateAdd(this, _expanded_accessor_storage);
349
+ __privateAdd(this, _backButton_accessor_storage);
350
+ __privateAdd(this, _accessibilityCloseLabel_accessor_storage);
351
+ __privateAdd(this, _accessibilityBackLabel_accessor_storage);
352
+ __privateSet(this, _expanded_accessor_storage, __runInitializers(this, _expanded_initializers, false));
353
+ __privateSet(this, _backButton_accessor_storage, (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _backButton_initializers, false)));
354
+ __privateSet(this, _accessibilityCloseLabel_accessor_storage, (__runInitializers(this, _backButton_extraInitializers), __runInitializers(this, _accessibilityCloseLabel_initializers, "")));
355
+ __privateSet(this, _accessibilityBackLabel_accessor_storage, (__runInitializers(this, _accessibilityCloseLabel_extraInitializers), __runInitializers(this, _accessibilityBackLabel_initializers, "")));
356
+ this.closeAttribute = (__runInitializers(this, _accessibilityBackLabel_extraInitializers), "sbb-overlay-close");
357
+ this._backClick = new EventEmitter(this, SbbOverlayElement2.events.backClick);
358
+ this._overlayContentElement = null;
343
359
  }
344
- this.lastFocusedElement = document.activeElement;
345
- this._overlayContentElement = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(
346
- ".sbb-overlay__content"
347
- );
348
- if (!this.willOpen.emit()) {
349
- return;
360
+ /**
361
+ * Whether to allow the overlay content to stretch to full width.
362
+ * By default, the content has the appropriate page size.
363
+ */
364
+ get expanded() {
365
+ return __privateGet(this, _expanded_accessor_storage);
350
366
  }
351
- this.state = "opening";
352
- overlayRefs.push(this);
353
- this.scrollHandler.disableScroll();
354
- }
355
- // Wait for overlay transition to complete.
356
- // In rare cases, it can be that the animationEnd event is triggered twice.
357
- // To avoid entering a corrupt state, exit when state is not expected.
358
- onOverlayAnimationEnd(event) {
359
- var _a, _b, _c;
360
- if (event.animationName === "open" && this.state === "opening") {
361
- this.state = "opened";
362
- this.didOpen.emit();
363
- this.inertController.activate();
364
- this.attachOpenOverlayEvents();
365
- this.setOverlayFocus();
366
- setTimeout(() => this.setAriaLiveRefContent(this.accessibilityLabel));
367
- this.focusHandler.trap(this);
368
- } else if (event.animationName === "close" && this.state === "closing") {
369
- (_a = this._overlayContentElement) == null ? void 0 : _a.scrollTo(0, 0);
370
- this.state = "closed";
371
- this.inertController.deactivate();
372
- setModalityOnNextFocus(this.lastFocusedElement);
373
- (_b = this.lastFocusedElement) == null ? void 0 : _b.focus();
374
- (_c = this.openOverlayController) == null ? void 0 : _c.abort();
375
- this.focusHandler.disconnect();
376
- this.removeInstanceFromGlobalCollection();
377
- if (!overlayRefs.length) {
378
- this.scrollHandler.enableScroll();
367
+ set expanded(value) {
368
+ __privateSet(this, _expanded_accessor_storage, value);
369
+ }
370
+ /** Whether a back button is displayed next to the title. */
371
+ get backButton() {
372
+ return __privateGet(this, _backButton_accessor_storage);
373
+ }
374
+ set backButton(value) {
375
+ __privateSet(this, _backButton_accessor_storage, value);
376
+ }
377
+ /** This will be forwarded as aria-label to the close button element. */
378
+ get accessibilityCloseLabel() {
379
+ return __privateGet(this, _accessibilityCloseLabel_accessor_storage);
380
+ }
381
+ set accessibilityCloseLabel(value) {
382
+ __privateSet(this, _accessibilityCloseLabel_accessor_storage, value);
383
+ }
384
+ /** This will be forwarded as aria-label to the back button element. */
385
+ get accessibilityBackLabel() {
386
+ return __privateGet(this, _accessibilityBackLabel_accessor_storage);
387
+ }
388
+ set accessibilityBackLabel(value) {
389
+ __privateSet(this, _accessibilityBackLabel_accessor_storage, value);
390
+ }
391
+ /** Opens the component. */
392
+ open() {
393
+ var _a2;
394
+ if (this.state !== "closed") {
395
+ return;
379
396
  }
380
- this.didClose.emit({
381
- returnValue: this.returnValue,
382
- closeTarget: this.overlayCloseElement
383
- });
397
+ this.lastFocusedElement = document.activeElement;
398
+ this._overlayContentElement = (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelector(".sbb-overlay__content");
399
+ if (!this.willOpen.emit()) {
400
+ return;
401
+ }
402
+ this.state = "opening";
403
+ overlayRefs.push(this);
404
+ this.scrollHandler.disableScroll();
384
405
  }
385
- }
386
- // Set focus on the first focusable element.
387
- setOverlayFocus() {
388
- const firstFocusable = getFirstFocusableElement(
389
- Array.from(this.shadowRoot.children).filter(
390
- (e) => e instanceof window.HTMLElement
391
- )
392
- );
393
- setModalityOnNextFocus(firstFocusable);
394
- firstFocusable == null ? void 0 : firstFocusable.focus();
395
- }
396
- render() {
397
- const TAG_NAME = this.negative ? "sbb-transparent-button" : "sbb-secondary-button";
398
- const closeButton = html`
406
+ // Wait for overlay transition to complete.
407
+ // In rare cases, it can be that the animationEnd event is triggered twice.
408
+ // To avoid entering a corrupt state, exit when state is not expected.
409
+ onOverlayAnimationEnd(event) {
410
+ var _a2, _b, _c;
411
+ if (event.animationName === "open" && this.state === "opening") {
412
+ this.state = "opened";
413
+ this.didOpen.emit();
414
+ this.inertController.activate();
415
+ this.attachOpenOverlayEvents();
416
+ this.setOverlayFocus();
417
+ setTimeout(() => this.setAriaLiveRefContent(this.accessibilityLabel));
418
+ this.focusHandler.trap(this);
419
+ } else if (event.animationName === "close" && this.state === "closing") {
420
+ (_a2 = this._overlayContentElement) == null ? void 0 : _a2.scrollTo(0, 0);
421
+ this.state = "closed";
422
+ this.inertController.deactivate();
423
+ setModalityOnNextFocus(this.lastFocusedElement);
424
+ (_b = this.lastFocusedElement) == null ? void 0 : _b.focus();
425
+ (_c = this.openOverlayController) == null ? void 0 : _c.abort();
426
+ this.focusHandler.disconnect();
427
+ this.removeInstanceFromGlobalCollection();
428
+ if (!overlayRefs.length) {
429
+ this.scrollHandler.enableScroll();
430
+ }
431
+ this.didClose.emit({
432
+ returnValue: this.returnValue,
433
+ closeTarget: this.overlayCloseElement
434
+ });
435
+ }
436
+ }
437
+ // Set focus on the first focusable element.
438
+ setOverlayFocus() {
439
+ const firstFocusable = getFirstFocusableElement(Array.from(this.shadowRoot.children).filter((e) => e instanceof window.HTMLElement));
440
+ setModalityOnNextFocus(firstFocusable);
441
+ firstFocusable == null ? void 0 : firstFocusable.focus();
442
+ }
443
+ render() {
444
+ const TAG_NAME = this.negative ? "sbb-transparent-button" : "sbb-secondary-button";
445
+ const closeButton = html`
399
446
  <${unsafeStatic(TAG_NAME)}
400
447
  class="sbb-overlay__close"
401
448
  aria-label=${this.accessibilityCloseLabel || i18nCloseDialog[this.language.current]}
@@ -406,7 +453,7 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
406
453
  sbb-overlay-close
407
454
  ></${unsafeStatic(TAG_NAME)}>
408
455
  `;
409
- const backButton = html`
456
+ const backButton = html`
410
457
  <${unsafeStatic(TAG_NAME)}
411
458
  class="sbb-overlay__back"
412
459
  aria-label=${this.accessibilityBackLabel || i18nGoBack[this.language.current]}
@@ -417,7 +464,7 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
417
464
  @click=${() => this._backClick.emit()}
418
465
  ></${unsafeStatic(TAG_NAME)}>
419
466
  `;
420
- return html`
467
+ return html`
421
468
  <div
422
469
  class="sbb-overlay__container"
423
470
  @animationend=${(event) => this.onOverlayAnimationEnd(event)}
@@ -444,34 +491,40 @@ let SbbOverlayElement = class extends SbbOverlayBaseElement {
444
491
  </div>
445
492
  <sbb-screen-reader-only aria-live="polite"></sbb-screen-reader-only>
446
493
  `;
447
- }
448
- };
449
- SbbOverlayElement.styles = style;
450
- SbbOverlayElement.events = {
451
- willOpen: "willOpen",
452
- didOpen: "didOpen",
453
- willClose: "willClose",
454
- didClose: "didClose",
455
- backClick: "requestBackAction"
456
- };
457
- __decorateClass([
458
- property({ reflect: true, type: Boolean })
459
- ], SbbOverlayElement.prototype, "expanded", 2);
460
- __decorateClass([
461
- property({ attribute: "back-button", type: Boolean })
462
- ], SbbOverlayElement.prototype, "backButton", 2);
463
- __decorateClass([
464
- property({ attribute: "accessibility-close-label" })
465
- ], SbbOverlayElement.prototype, "accessibilityCloseLabel", 2);
466
- __decorateClass([
467
- property({ attribute: "accessibility-back-label" })
468
- ], SbbOverlayElement.prototype, "accessibilityBackLabel", 2);
469
- SbbOverlayElement = __decorateClass([
470
- customElement("sbb-overlay")
471
- ], SbbOverlayElement);
494
+ }
495
+ }, _expanded_accessor_storage = new WeakMap(), _backButton_accessor_storage = new WeakMap(), _accessibilityCloseLabel_accessor_storage = new WeakMap(), _accessibilityBackLabel_accessor_storage = new WeakMap(), _classThis = _a, (() => {
496
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
497
+ _expanded_decorators = [forceType(), property({ reflect: true, type: Boolean })];
498
+ _backButton_decorators = [forceType(), property({ attribute: "back-button", type: Boolean })];
499
+ _accessibilityCloseLabel_decorators = [forceType(), property({ attribute: "accessibility-close-label" })];
500
+ _accessibilityBackLabel_decorators = [forceType(), property({ attribute: "accessibility-back-label" })];
501
+ __esDecorate(_a, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: (obj) => "expanded" in obj, get: (obj) => obj.expanded, set: (obj, value) => {
502
+ obj.expanded = value;
503
+ } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
504
+ __esDecorate(_a, null, _backButton_decorators, { kind: "accessor", name: "backButton", static: false, private: false, access: { has: (obj) => "backButton" in obj, get: (obj) => obj.backButton, set: (obj, value) => {
505
+ obj.backButton = value;
506
+ } }, metadata: _metadata }, _backButton_initializers, _backButton_extraInitializers);
507
+ __esDecorate(_a, null, _accessibilityCloseLabel_decorators, { kind: "accessor", name: "accessibilityCloseLabel", static: false, private: false, access: { has: (obj) => "accessibilityCloseLabel" in obj, get: (obj) => obj.accessibilityCloseLabel, set: (obj, value) => {
508
+ obj.accessibilityCloseLabel = value;
509
+ } }, metadata: _metadata }, _accessibilityCloseLabel_initializers, _accessibilityCloseLabel_extraInitializers);
510
+ __esDecorate(_a, null, _accessibilityBackLabel_decorators, { kind: "accessor", name: "accessibilityBackLabel", static: false, private: false, access: { has: (obj) => "accessibilityBackLabel" in obj, get: (obj) => obj.accessibilityBackLabel, set: (obj, value) => {
511
+ obj.accessibilityBackLabel = value;
512
+ } }, metadata: _metadata }, _accessibilityBackLabel_initializers, _accessibilityBackLabel_extraInitializers);
513
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
514
+ SbbOverlayElement2 = _classThis = _classDescriptor.value;
515
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
516
+ })(), _a.styles = style, _a.events = {
517
+ willOpen: "willOpen",
518
+ didOpen: "didOpen",
519
+ willClose: "willClose",
520
+ didClose: "didClose",
521
+ backClick: "requestBackAction"
522
+ }, __runInitializers(_classThis, _classExtraInitializers), _a);
523
+ return SbbOverlayElement2 = _classThis;
524
+ })();
472
525
  export {
473
526
  SbbOverlayBaseElement,
474
527
  SbbOverlayElement,
475
528
  overlayRefs
476
529
  };
477
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJJbmVydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdENvbnRleHQsIFNiYlNjcm9sbEhhbmRsZXIgfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5EaWFsb2cgfSBmcm9tICcuLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgfSBmcm9tICcuLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQgfSBmcm9tICcuLi9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuXG4vLyBBIGdsb2JhbCBjb2xsZWN0aW9uIG9mIGV4aXN0aW5nIG92ZXJsYXlzLlxuZXhwb3J0IGNvbnN0IG92ZXJsYXlSZWZzOiBTYmJPdmVybGF5QmFzZUVsZW1lbnRbXSA9IFtdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiT3ZlcmxheUJhc2VFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCkge1xuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSByZWxldmFudCBuZXN0ZWQgZWxlbWVudCB0byBkZXNjcmliZSB0aGUgcHVycG9zZSBvZiB0aGUgb3ZlcmxheS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRpZENsb3NlOiBFdmVudEVtaXR0ZXI8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPdmVybGF5QmFzZUVsZW1lbnQuZXZlbnRzLmRpZENsb3NlLFxuICApO1xuXG4gIC8vIFRoZSBsYXN0IGVsZW1lbnQgd2hpY2ggaGFkIGZvY3VzIGJlZm9yZSB0aGUgY29tcG9uZW50IHdhcyBvcGVuZWQuXG4gIHByb3RlY3RlZCBsYXN0Rm9jdXNlZEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIG92ZXJsYXlDbG9zZUVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIG92ZXJsYXlDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgb3Blbk92ZXJsYXlDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcm90ZWN0ZWQgZm9jdXNIYW5kbGVyID0gbmV3IFNiYkZvY3VzSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgc2Nyb2xsSGFuZGxlciA9IG5ldyBTYmJTY3JvbGxIYW5kbGVyKCk7XG4gIHByb3RlY3RlZCByZXR1cm5WYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgYXJpYUxpdmVSZWZUb2dnbGUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmITogU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBsYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByb3RlY3RlZCBpbmVydENvbnRyb2xsZXIgPSBuZXcgU2JiSW5lcnRDb250cm9sbGVyKHRoaXMpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjbG9zZUF0dHJpYnV0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRPdmVybGF5Rm9jdXMoKTogdm9pZDtcblxuICAvKiogQ2xvc2VzIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBhbnksIHRhcmdldD86IEhUTUxFbGVtZW50KTogYW55IHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJldHVyblZhbHVlID0gcmVzdWx0O1xuICAgIHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCA9IHRhcmdldDtcbiAgICBjb25zdCBldmVudERhdGE6IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyA9IHtcbiAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KGV2ZW50RGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxTYmJTY3JlZW5SZWFkZXJPbmx5RWxlbWVudD4oJ3NiYi1zY3JlZW4tcmVhZGVyLW9ubHknKSE7XG5cbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF0dGFjaE9wZW5PdmVybGF5RXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vIFJlbW92ZSBvdmVybGF5IGxhYmVsIGFzIHNvb24gYXMgaXQgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSB0byBwcmV2ZW50IGFjY2Vzc2luZyBpdCB3aXRoIGJyb3dzZSBtb2RlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk7XG4gICAgICAgIHRoaXMub25LZXlkb3duRXZlbnQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBvdmVybGF5UmVmcy5zcGxpY2Uob3ZlcmxheVJlZnMuaW5kZXhPZih0aGlzIGFzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCksIDEpO1xuICB9XG5cbiAgLy8gQ2xvc2UgdGhlIGNvbXBvbmVudCBvbiBjbGljayBvZiBhbnkgZWxlbWVudCB0aGF0IGhhcyB0aGUgYGNsb3NlQXR0cmlidXRlYCBhdHRyaWJ1dGUuXG4gIHByb3RlY3RlZCBjbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgb3ZlcmxheUNsb3NlRWxlbWVudCA9IGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5maWx0ZXIoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IGUgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpXG4gICAgICAuZmluZChcbiAgICAgICAgKHRhcmdldCkgPT4gdGFyZ2V0Lmhhc0F0dHJpYnV0ZSh0aGlzLmNsb3NlQXR0cmlidXRlKSAmJiAhdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSxcbiAgICAgICk7XG5cbiAgICBpZiAoIW92ZXJsYXlDbG9zZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGFyZ2V0IGlzIGEgc3VibWlzc2lvbiBlbGVtZW50IHdpdGhpbiBhIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybSwgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsb3Nlc3RGb3JtID1cbiAgICAgIG92ZXJsYXlDbG9zZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdzdWJtaXQnXG4gICAgICAgID8gKGhvc3RDb250ZXh0KCdmb3JtJywgb3ZlcmxheUNsb3NlRWxlbWVudCkgYXMgSFRNTEZvcm1FbGVtZW50KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBvdmVybGF5UmVmc1tvdmVybGF5UmVmcy5sZW5ndGggLSAxXS5jbG9zZShjbG9zZXN0Rm9ybSwgb3ZlcmxheUNsb3NlRWxlbWVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBcmlhTGl2ZVJlZkNvbnRlbnQobGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlID0gIXRoaXMuYXJpYUxpdmVSZWZUb2dnbGU7XG5cbiAgICAvLyBJZiB0aGUgdGV4dCBjb250ZW50IHJlbWFpbnMgdGhlIHNhbWUsIG9uIFZvaWNlT3ZlciB0aGUgYXJpYS1saXZlIHJlZ2lvbiBpcyBub3QgYW5ub3VuY2VkIGEgc2Vjb25kIHRpbWUuXG4gICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkaW5nIG9uIGV2ZXJ5IG9wZW5pbmcsIHdlIHRvZ2dsZSBhbiBpbnZpc2libGUgc3BhY2UuXG4gICAgdGhpcy5hcmlhTGl2ZVJlZi50ZXh0Q29udGVudCA9IGAke2kxOG5EaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX0ke1xuICAgICAgbGFiZWwgPyBgLCAke2xhYmVsfWAgOiAnJ1xuICAgIH0ke3RoaXMuYXJpYUxpdmVSZWZUb2dnbGUgPyAnwqAnIDogJyd9YDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIHVuc2FmZVN0YXRpYyB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB7IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCwgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IGkxOG5DbG9zZURpYWxvZywgaTE4bkdvQmFjayB9IGZyb20gJy4uL2NvcmUvaTE4bi5qcyc7XG5cbmltcG9ydCB7IG92ZXJsYXlSZWZzLCBTYmJPdmVybGF5QmFzZUVsZW1lbnQgfSBmcm9tICcuL292ZXJsYXktYmFzZS1lbGVtZW50LmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL292ZXJsYXkuc2Nzcz9saXQmaW5saW5lJztcbmltcG9ydCAnLi4vYnV0dG9uL3NlY29uZGFyeS1idXR0b24uanMnO1xuaW1wb3J0ICcuLi9idXR0b24vdHJhbnNwYXJlbnQtYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vY29udGFpbmVyLmpzJztcbmltcG9ydCAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnRlcmFjdGl2ZSBvdmVybGF5IGVsZW1lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgY29udGVudCBmb3IgdGhlIG92ZXJsYXkuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIHN0YXJ0cyB0aGUgb3BlbmluZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBkaWRPcGVuIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgaXMgb3BlbmVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzPn0gZGlkQ2xvc2UgLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBpcyBjbG9zZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSByZXF1ZXN0QmFja0FjdGlvbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLW92ZXJsYXknKVxuZXhwb3J0IGNsYXNzIFNiYk92ZXJsYXlFbGVtZW50IGV4dGVuZHMgU2JiT3ZlcmxheUJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLy8gRklYTUUgdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICB3aWxsT3BlbjogJ3dpbGxPcGVuJyxcbiAgICBkaWRPcGVuOiAnZGlkT3BlbicsXG4gICAgd2lsbENsb3NlOiAnd2lsbENsb3NlJyxcbiAgICBkaWRDbG9zZTogJ2RpZENsb3NlJyxcbiAgICBiYWNrQ2xpY2s6ICdyZXF1ZXN0QmFja0FjdGlvbicsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIG92ZXJsYXkgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgZXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBhIGJhY2sgYnV0dG9uIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYmFjay1idXR0b24nLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBiYWNrQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pIHB1YmxpYyBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDpcbiAgICB8IHN0cmluZ1xuICAgIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGJhY2sgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktYmFjay1sYWJlbCcgfSkgcHVibGljIGFjY2Vzc2liaWxpdHlCYWNrTGFiZWw6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItb3ZlcmxheS1jbG9zZSc7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBwcml2YXRlIF9iYWNrQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYk92ZXJsYXlFbGVtZW50LmV2ZW50cy5iYWNrQ2xpY2ssXG4gICk7XG4gIHByaXZhdGUgX292ZXJsYXlDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogT3BlbnMgdGhlIGNvbXBvbmVudC4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICcuc2JiLW92ZXJsYXlfX2NvbnRlbnQnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG5cbiAgICAvLyBBZGQgdGhpcyBvdmVybGF5IHRvIHRoZSBnbG9iYWwgY29sbGVjdGlvblxuICAgIG92ZXJsYXlSZWZzLnB1c2godGhpcyBhcyBTYmJPdmVybGF5RWxlbWVudCk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheVxuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kaXNhYmxlU2Nyb2xsKCk7XG4gIH1cblxuICAvLyBXYWl0IGZvciBvdmVybGF5IHRyYW5zaXRpb24gdG8gY29tcGxldGUuXG4gIC8vIEluIHJhcmUgY2FzZXMsIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAvLyBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gIHByb3RlY3RlZCBvbk92ZXJsYXlBbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gICAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5hY3RpdmF0ZSgpO1xuICAgICAgdGhpcy5hdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpO1xuICAgICAgdGhpcy5zZXRPdmVybGF5Rm9jdXMoKTtcbiAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0QXJpYUxpdmVSZWZDb250ZW50KHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsKSk7XG4gICAgICB0aGlzLmZvY3VzSGFuZGxlci50cmFwKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudD8uc2Nyb2xsVG8oMCwgMCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKHRoaXMubGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIC8vIE1hbnVhbGx5IGZvY3VzIGxhc3QgZm9jdXNlZCBlbGVtZW50XG4gICAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgICAvLyBFbmFibGUgc2Nyb2xsaW5nIGZvciBjb250ZW50IGJlbG93IHRoZSBvdmVybGF5IGlmIG5vIG92ZXJsYXkgaXMgb3BlblxuICAgICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5kaWRDbG9zZS5lbWl0KHtcbiAgICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgZm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICBwcm90ZWN0ZWQgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlID0gZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QhLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgIChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50LFxuICAgICAgKSxcbiAgICApO1xuICAgIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMoZmlyc3RGb2N1c2FibGUpO1xuICAgIGZpcnN0Rm9jdXNhYmxlPy5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgVEFHX05BTUUgPSB0aGlzLm5lZ2F0aXZlID8gJ3NiYi10cmFuc3BhcmVudC1idXR0b24nIDogJ3NiYi1zZWNvbmRhcnktYnV0dG9uJztcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2Nsb3NlXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke3RoaXMuYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWwgfHwgaTE4bkNsb3NlRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgc2JiLW92ZXJsYXktY2xvc2VcbiAgICAgID48LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX0+XG4gICAgYDtcblxuICAgIGNvbnN0IGJhY2tCdXR0b24gPSBodG1sYFxuICAgICAgPCR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX1cbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fYmFja1wiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlCYWNrTGFiZWwgfHwgaTE4bkdvQmFja1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uLW5hbWU9XCJjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGxcIlxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9iYWNrQ2xpY2suZW1pdCgpfVxuICAgICAgPjwvJHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfT5cbiAgICBgO1xuICAgIC8qIGVzbGludC1lbmFibGUgbGl0L2JpbmRpbmctcG9zaXRpb25zICovXG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGFpbmVyXCJcbiAgICAgICAgQGFuaW1hdGlvbmVuZD0keyhldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMub25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgJHt0aGlzLmJhY2tCdXR0b24gPyBiYWNrQnV0dG9uIDogbm90aGluZ30gJHtjbG9zZUJ1dHRvbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxzYmItY29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgID9leHBhbmRlZD0ke3RoaXMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICAgIDwvc2JiLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vdmVybGF5JzogU2JiT3ZlcmxheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfU2JiT3ZlcmxheUJhc2VFbGVtZW50IiwiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNPLE1BQU0sY0FBdUMsQ0FBQztBQUU5QyxNQUFlLHlCQUFmLE1BQWVBLGdDQUE4QixpQkFBaUIsdUJBQXVCLEVBQUU7QUFBQSxFQUF2RixjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFLTCxTQUFtQixXQUFzRCxJQUFJO0FBQUEsTUFDM0U7QUFBQSxNQUNBQSx3QkFBc0IsT0FBTztBQUFBLElBQUE7QUFRckIsU0FBQSxlQUFlLElBQUk7QUFDbkIsU0FBQSxnQkFBZ0IsSUFBSTtBQUU5QixTQUFVLG9CQUFvQjtBQUVwQixTQUFBLFdBQVcsSUFBSSxzQkFBc0IsSUFBSTtBQUN6QyxTQUFBLGtCQUFrQixJQUFJLG1CQUFtQixJQUFJO0FBQUEsRUFBQTtBQUFBO0FBQUEsRUFPaEQsTUFBTSxRQUFjLFFBQTJCO0FBQ2hELFFBQUEsS0FBSyxVQUFVLFVBQVU7QUFDM0I7QUFBQSxJQUNGO0FBRUEsU0FBSyxjQUFjO0FBQ25CLFNBQUssc0JBQXNCO0FBQzNCLFVBQU0sWUFBeUM7QUFBQSxNQUM3QyxhQUFhLEtBQUs7QUFBQSxNQUNsQixhQUFhLEtBQUs7QUFBQSxJQUFBO0FBR3BCLFFBQUksQ0FBQyxLQUFLLFVBQVUsS0FBSyxTQUFTLEdBQUc7QUFDbkM7QUFBQSxJQUNGO0FBQ0EsU0FBSyxRQUFRO0FBQ2IsU0FBSyx5QkFBeUI7QUFBQSxFQUNoQztBQUFBLEVBRWdCLG9CQUEwQjs7QUFDeEMsVUFBTSxrQkFBa0I7QUFDeEIs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
530
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvb3ZlcmxheS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJvcGVydHlWYWx1ZXMgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkZvY3VzSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJJbmVydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGhvc3RDb250ZXh0LCBTYmJTY3JvbGxIYW5kbGVyIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGlhbG9nIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiT3ZlcmxheUNsb3NlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50IH0gZnJvbSAnLi4vc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcblxuLy8gQSBnbG9iYWwgY29sbGVjdGlvbiBvZiBleGlzdGluZyBvdmVybGF5cy5cbmV4cG9ydCBjb25zdCBvdmVybGF5UmVmczogU2JiT3ZlcmxheUJhc2VFbGVtZW50W10gPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYk92ZXJsYXlCYXNlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgcmVsZXZhbnQgbmVzdGVkIGVsZW1lbnQgdG8gZGVzY3JpYmUgdGhlIHB1cnBvc2Ugb2YgdGhlIG92ZXJsYXkuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhY2Nlc3NpYmlsaXR5LWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaWRDbG9zZTogRXZlbnRFbWl0dGVyPFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiT3ZlcmxheUJhc2VFbGVtZW50LmV2ZW50cy5kaWRDbG9zZSxcbiAgKTtcblxuICAvLyBUaGUgbGFzdCBlbGVtZW50IHdoaWNoIGhhZCBmb2N1cyBiZWZvcmUgdGhlIGNvbXBvbmVudCB3YXMgb3BlbmVkLlxuICBwcm90ZWN0ZWQgbGFzdEZvY3VzZWRFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q2xvc2VFbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByb3RlY3RlZCBvdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIG9wZW5PdmVybGF5Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJvdGVjdGVkIGZvY3VzSGFuZGxlciA9IG5ldyBTYmJGb2N1c0hhbmRsZXIoKTtcbiAgcHJvdGVjdGVkIHNjcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcm90ZWN0ZWQgcmV0dXJuVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGFyaWFMaXZlUmVmVG9nZ2xlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBhcmlhTGl2ZVJlZiE6IFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50O1xuICBwcm90ZWN0ZWQgbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcm90ZWN0ZWQgaW5lcnRDb250cm9sbGVyID0gbmV3IFNiYkluZXJ0Q29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0T3ZlcmxheUZvY3VzKCk6IHZvaWQ7XG5cbiAgLyoqIENsb3NlcyB0aGUgY29tcG9uZW50LiAqL1xuICBwdWJsaWMgY2xvc2UocmVzdWx0PzogYW55LCB0YXJnZXQ/OiBIVE1MRWxlbWVudCk6IGFueSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXR1cm5WYWx1ZSA9IHJlc3VsdDtcbiAgICB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQgPSB0YXJnZXQ7XG4gICAgY29uc3QgZXZlbnREYXRhOiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMgPSB7XG4gICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgfTtcblxuICAgIGlmICghdGhpcy53aWxsQ2xvc2UuZW1pdChldmVudERhdGEpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5yZW1vdmVBcmlhTGl2ZVJlZkNvbnRlbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5vdmVybGF5Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZiA9XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8U2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQ+KCdzYmItc2NyZWVuLXJlYWRlci1vbmx5JykhO1xuXG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMub3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhdHRhY2hPcGVuT3ZlcmxheUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAvLyBSZW1vdmUgb3ZlcmxheSBsYWJlbCBhcyBzb29uIGFzIGl0IGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgdG8gcHJldmVudCBhY2Nlc3NpbmcgaXQgd2l0aCBicm93c2UgbW9kZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpO1xuICAgICAgICB0aGlzLm9uS2V5ZG93bkV2ZW50KGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMucmVtb3ZlQXJpYUxpdmVSZWZDb250ZW50KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5vcGVuT3ZlcmxheUNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIG92ZXJsYXlSZWZzW292ZXJsYXlSZWZzLmxlbmd0aCAtIDFdLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZUluc3RhbmNlRnJvbUdsb2JhbENvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgb3ZlcmxheVJlZnMuc3BsaWNlKG92ZXJsYXlSZWZzLmluZGV4T2YodGhpcyBhcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQpLCAxKTtcbiAgfVxuXG4gIC8vIENsb3NlIHRoZSBjb21wb25lbnQgb24gY2xpY2sgb2YgYW55IGVsZW1lbnQgdGhhdCBoYXMgdGhlIGBjbG9zZUF0dHJpYnV0ZWAgYXR0cmlidXRlLlxuICBwcm90ZWN0ZWQgY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG92ZXJsYXlDbG9zZUVsZW1lbnQgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlKTogZSBpcyBIVE1MRWxlbWVudCA9PiBlIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50KVxuICAgICAgLmZpbmQoXG4gICAgICAgICh0YXJnZXQpID0+IHRhcmdldC5oYXNBdHRyaWJ1dGUodGhpcy5jbG9zZUF0dHJpYnV0ZSkgJiYgIXRhcmdldC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJyksXG4gICAgICApO1xuXG4gICAgaWYgKCFvdmVybGF5Q2xvc2VFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHRhcmdldCBpcyBhIHN1Ym1pc3Npb24gZWxlbWVudCB3aXRoaW4gYSBmb3JtIGFuZCByZXR1cm4gdGhlIGZvcm0sIGlmIHByZXNlbnRcbiAgICBjb25zdCBjbG9zZXN0Rm9ybSA9XG4gICAgICBvdmVybGF5Q2xvc2VFbGVtZW50LmdldEF0dHJpYnV0ZSgndHlwZScpID09PSAnc3VibWl0J1xuICAgICAgICA/IChob3N0Q29udGV4dCgnZm9ybScsIG92ZXJsYXlDbG9zZUVsZW1lbnQpIGFzIEhUTUxGb3JtRWxlbWVudClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgb3ZlcmxheVJlZnNbb3ZlcmxheVJlZnMubGVuZ3RoIC0gMV0uY2xvc2UoY2xvc2VzdEZvcm0sIG92ZXJsYXlDbG9zZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZUFyaWFMaXZlUmVmQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFMaXZlUmVmLnRleHRDb250ZW50ID0gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0QXJpYUxpdmVSZWZDb250ZW50KGxhYmVsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hcmlhTGl2ZVJlZlRvZ2dsZSA9ICF0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlO1xuXG4gICAgLy8gSWYgdGhlIHRleHQgY29udGVudCByZW1haW5zIHRoZSBzYW1lLCBvbiBWb2ljZU92ZXIgdGhlIGFyaWEtbGl2ZSByZWdpb24gaXMgbm90IGFubm91bmNlZCBhIHNlY29uZCB0aW1lLlxuICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgcmVhZGluZyBvbiBldmVyeSBvcGVuaW5nLCB3ZSB0b2dnbGUgYW4gaW52aXNpYmxlIHNwYWNlLlxuICAgIHRoaXMuYXJpYUxpdmVSZWYudGV4dENvbnRlbnQgPSBgJHtpMThuRGlhbG9nW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19JHtcbiAgICAgIGxhYmVsID8gYCwgJHtsYWJlbH1gIDogJydcbiAgICB9JHt0aGlzLmFyaWFMaXZlUmVmVG9nZ2xlID8gJ8KgJyA6ICcnfWA7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBodG1sLCB1bnNhZmVTdGF0aWMgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBnZXRGaXJzdEZvY3VzYWJsZUVsZW1lbnQsIHNldE1vZGFsaXR5T25OZXh0Rm9jdXMgfSBmcm9tICcuLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJy4uL2NvcmUvZXZlbnRpbmcuanMnO1xuaW1wb3J0IHsgaTE4bkNsb3NlRGlhbG9nLCBpMThuR29CYWNrIH0gZnJvbSAnLi4vY29yZS9pMThuLmpzJztcblxuaW1wb3J0IHsgb3ZlcmxheVJlZnMsIFNiYk92ZXJsYXlCYXNlRWxlbWVudCB9IGZyb20gJy4vb3ZlcmxheS1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3ZlcmxheS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uL2J1dHRvbi9zZWNvbmRhcnktYnV0dG9uLmpzJztcbmltcG9ydCAnLi4vYnV0dG9uL3RyYW5zcGFyZW50LWJ1dHRvbi5qcyc7XG5pbXBvcnQgJy4uL2NvbnRhaW5lci5qcyc7XG5pbXBvcnQgJy4uL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGNvbnRlbnQgZm9yIHRoZSBvdmVybGF5LlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gd2lsbE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1vdmVybGF5YCBzdGFydHMgdGhlIG9wZW5pbmcgdHJhbnNpdGlvbi4gQ2FuIGJlIGNhbmNlbGVkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGlkT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIGlzIG9wZW5lZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLW92ZXJsYXlgIGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscz59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItb3ZlcmxheWAgaXMgY2xvc2VkLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gcmVxdWVzdEJhY2tBY3Rpb24gLSBFbWl0cyB3aGVuZXZlciB0aGUgYmFjayBidXR0b24gaXMgY2xpY2tlZC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vdmVybGF5LXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLW92ZXJsYXknKVxuY2xhc3MgU2JiT3ZlcmxheUVsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvLyBGSVhNRSB1c2luZyAuLi5zdXBlci5ldmVudHMgcmVxdWlyZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9zYmItZGVzaWduLXN5c3RlbXMvbHluZS1jb21wb25lbnRzL2lzc3Vlcy8yNjAwXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHdpbGxPcGVuOiAnd2lsbE9wZW4nLFxuICAgIGRpZE9wZW46ICdkaWRPcGVuJyxcbiAgICB3aWxsQ2xvc2U6ICd3aWxsQ2xvc2UnLFxuICAgIGRpZENsb3NlOiAnZGlkQ2xvc2UnLFxuICAgIGJhY2tDbGljazogJ3JlcXVlc3RCYWNrQWN0aW9uJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgb3ZlcmxheSBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBhIGJhY2sgYnV0dG9uIGlzIGRpc3BsYXllZCBuZXh0IHRvIHRoZSB0aXRsZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2JhY2stYnV0dG9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGNsb3NlIGJ1dHRvbiBlbGVtZW50LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1jbG9zZS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBiYWNrIGJ1dHRvbiBlbGVtZW50LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1iYWNrLWxhYmVsJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWNjZXNzaWJpbGl0eUJhY2tMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgcHJvdGVjdGVkIGNsb3NlQXR0cmlidXRlOiBzdHJpbmcgPSAnc2JiLW92ZXJsYXktY2xvc2UnO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciB0aGUgYmFjayBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgcHJpdmF0ZSBfYmFja0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJPdmVybGF5RWxlbWVudC5ldmVudHMuYmFja0NsaWNrLFxuICApO1xuICBwcml2YXRlIF9vdmVybGF5Q29udGVudEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE9wZW5zIHRoZSBjb21wb25lbnQuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICB0aGlzLl9vdmVybGF5Q29udGVudEVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLnNiYi1vdmVybGF5X19jb250ZW50JyxcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLndpbGxPcGVuLmVtaXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuXG4gICAgLy8gQWRkIHRoaXMgb3ZlcmxheSB0byB0aGUgZ2xvYmFsIGNvbGxlY3Rpb25cbiAgICBvdmVybGF5UmVmcy5wdXNoKHRoaXMgYXMgU2JiT3ZlcmxheUVsZW1lbnQpO1xuXG4gICAgLy8gRGlzYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG92ZXJsYXlcbiAgICB0aGlzLnNjcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICB9XG5cbiAgLy8gV2FpdCBmb3Igb3ZlcmxheSB0cmFuc2l0aW9uIHRvIGNvbXBsZXRlLlxuICAvLyBJbiByYXJlIGNhc2VzLCBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgLy8gVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICBwcm90ZWN0ZWQgb25PdmVybGF5QW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgICB0aGlzLmRpZE9wZW4uZW1pdCgpO1xuICAgICAgdGhpcy5pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuYXR0YWNoT3Blbk92ZXJsYXlFdmVudHMoKTtcbiAgICAgIHRoaXMuc2V0T3ZlcmxheUZvY3VzKCk7XG4gICAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudCh0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCkpO1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIudHJhcCh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9vdmVybGF5Q29udGVudEVsZW1lbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgICAgdGhpcy5pbmVydENvbnRyb2xsZXIuZGVhY3RpdmF0ZSgpO1xuICAgICAgc2V0TW9kYWxpdHlPbk5leHRGb2N1cyh0aGlzLmxhc3RGb2N1c2VkRWxlbWVudCk7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheSBpZiBubyBvdmVybGF5IGlzIG9wZW5cbiAgICAgIGlmICghb3ZlcmxheVJlZnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCh7XG4gICAgICAgIHJldHVyblZhbHVlOiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgcHJvdGVjdGVkIHNldE92ZXJsYXlGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IGdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudChcbiAgICAgIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290IS5jaGlsZHJlbikuZmlsdGVyKFxuICAgICAgICAoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gZSBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCxcbiAgICAgICksXG4gICAgKTtcbiAgICBzZXRNb2RhbGl0eU9uTmV4dEZvY3VzKGZpcnN0Rm9jdXNhYmxlKTtcbiAgICBmaXJzdEZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IFRBR19OQU1FID0gdGhpcy5uZWdhdGl2ZSA/ICdzYmItdHJhbnNwYXJlbnQtYnV0dG9uJyA6ICdzYmItc2Vjb25kYXJ5LWJ1dHRvbic7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBsaXQvYmluZGluZy1wb3NpdGlvbnMgKi9cbiAgICBjb25zdCBjbG9zZUJ1dHRvbiA9IGh0bWxgXG4gICAgICA8JHt1bnNhZmVTdGF0aWMoVEFHX05BTUUpfVxuICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19jbG9zZVwiXG4gICAgICAgIGFyaWEtbGFiZWw9JHt0aGlzLmFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsIHx8IGkxOG5DbG9zZURpYWxvZ1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uLW5hbWU9XCJjcm9zcy1zbWFsbFwiXG4gICAgICAgIHNiYi1vdmVybGF5LWNsb3NlXG4gICAgICA+PC8ke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9PlxuICAgIGA7XG5cbiAgICBjb25zdCBiYWNrQnV0dG9uID0gaHRtbGBcbiAgICAgIDwke3Vuc2FmZVN0YXRpYyhUQUdfTkFNRSl9XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2JhY2tcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5QmFja0xhYmVsIHx8IGkxOG5Hb0JhY2tbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsXCJcbiAgICAgICAgQGNsaWNrPSR7KCkgPT4gdGhpcy5fYmFja0NsaWNrLmVtaXQoKX1cbiAgICAgID48LyR7dW5zYWZlU3RhdGljKFRBR19OQU1FKX0+XG4gICAgYDtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIGxpdC9iaW5kaW5nLXBvc2l0aW9ucyAqL1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2NvbnRhaW5lclwiXG4gICAgICAgIEBhbmltYXRpb25lbmQ9JHsoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSA9PiB0aGlzLm9uT3ZlcmxheUFuaW1hdGlvbkVuZChldmVudCl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIEBjbGljaz0keyhldmVudDogRXZlbnQpID0+IHRoaXMuY2xvc2VPblNiYk92ZXJsYXlDbG9zZUNsaWNrKGV2ZW50KX1cbiAgICAgICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX3dyYXBwZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3ZlcmxheV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICR7dGhpcy5iYWNrQnV0dG9uID8gYmFja0J1dHRvbiA6IG5vdGhpbmd9ICR7Y2xvc2VCdXR0b259XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8c2JiLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2NvbnRlbnQtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICA/ZXhwYW5kZWQ9JHt0aGlzLmV4cGFuZGVkfVxuICAgICAgICAgICAgICAgIGNvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgICAgICA8L3NiYi1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPjwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItb3ZlcmxheSc6IFNiYk92ZXJsYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiU2JiT3ZlcmxheUJhc2VFbGVtZW50IiwiX2EiLCJTYmJPdmVybGF5RWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlTyxNQUFNLGNBQXVDLENBQUE7SUFFOUIseUJBQXFCLE1BQUE7O29CQUFTLGlCQUFpQix1QkFBdUI7Ozs7QUFBdEUsU0FBQSxtQkFBOEIsWUFBeUM7QUFBQTs7QUFJM0Y7QUFBZ0IseUJBQUEsc0NBQUEsa0JBQUEsTUFBQSxrQ0FBNkIsRUFBRTtBQUc1QixXQUFBLFlBQXNELGtCQUFBLE1BQUEscUNBQUEsR0FBQSxJQUFJLGFBQzNFLE1BQ0FBLEdBQXNCLE9BQU8sUUFBUTtBQVE3QixXQUFBLGVBQWUsSUFBSSxnQkFBZTtBQUNsQyxXQUFBLGdCQUFnQixJQUFJLGlCQUFnQjtBQUVwQyxXQUFpQixvQkFBRztBQUVwQixXQUFBLFdBQVcsSUFBSSxzQkFBc0IsSUFBSTtBQUN6QyxXQUFBLGtCQUFrQixJQUFJLG1CQUFtQixJQUFJO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFuQnZELElBQWdCLHFCQUFnQztBQUFBLGFBQUEs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