@sbb-esta/lyne-elements 1.5.0 → 1.7.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 (600) hide show
  1. package/accordion/accordion.d.ts +0 -1
  2. package/action-group/action-group.d.ts +0 -1
  3. package/alert/alert/alert.d.ts +22 -17
  4. package/alert/alert/alert.d.ts.map +1 -1
  5. package/alert/alert-group/alert-group.d.ts +1 -2
  6. package/alert/alert-group/alert-group.d.ts.map +1 -1
  7. package/alert/alert-group.js +31 -26
  8. package/alert/alert.js +45 -37
  9. package/autocomplete/autocomplete-base-element.d.ts +0 -1
  10. package/autocomplete/autocomplete.d.ts +0 -1
  11. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  12. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  13. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  14. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  15. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  16. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  17. package/autocomplete.js +1 -1
  18. package/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  19. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  20. package/breadcrumb/breadcrumb-group.js +2 -2
  21. package/breadcrumb/breadcrumb.js +11 -11
  22. package/button/button/button.d.ts +0 -1
  23. package/button/button-link/button-link.d.ts +0 -1
  24. package/button/button-static/button-static.d.ts +0 -1
  25. package/button/common/button-common.d.ts +0 -1
  26. package/button/mini-button/mini-button-base-element.d.ts +0 -1
  27. package/button/mini-button/mini-button.d.ts +0 -1
  28. package/button/mini-button-group/index.d.ts +2 -0
  29. package/button/mini-button-group/index.d.ts.map +1 -0
  30. package/button/mini-button-group/mini-button-group.d.ts +28 -0
  31. package/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  32. package/button/mini-button-group.d.ts +2 -0
  33. package/button/mini-button-group.d.ts.map +1 -0
  34. package/button/mini-button-group.js +47 -0
  35. package/button/secondary-button/secondary-button.d.ts +0 -1
  36. package/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  37. package/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  38. package/button/tertiary-button/tertiary-button.d.ts +0 -1
  39. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  40. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  41. package/button/transparent-button/transparent-button.d.ts +0 -1
  42. package/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  43. package/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  44. package/button.d.ts +1 -0
  45. package/button.d.ts.map +1 -1
  46. package/button.js +1 -0
  47. package/calendar/calendar.d.ts +0 -1
  48. package/calendar.js +1 -1
  49. package/card/card/card.d.ts +0 -1
  50. package/card/card-badge/card-badge.d.ts +0 -1
  51. package/card/card-button/card-button.d.ts +0 -1
  52. package/card/card-link/card-link.d.ts +0 -1
  53. package/card/card.js +1 -1
  54. package/card/common/card-action-common.d.ts +0 -1
  55. package/checkbox/checkbox/checkbox.d.ts +0 -1
  56. package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  57. package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  58. package/checkbox/common/checkbox-common.d.ts +0 -1
  59. package/chip/chip.d.ts +0 -1
  60. package/chip.js +1 -1
  61. package/clock/clock.d.ts +0 -1
  62. package/clock/clock.d.ts.map +1 -1
  63. package/clock.js +14 -14
  64. package/container/container/container.d.ts +1 -1
  65. package/container/container/container.d.ts.map +1 -1
  66. package/container/container.js +21 -16
  67. package/container/sticky-bar/sticky-bar.d.ts +0 -1
  68. package/container/sticky-bar.js +5 -5
  69. package/core/a11y/focus-visible-within-controller.d.ts +0 -1
  70. package/core/base-elements/action-base-element.d.ts +0 -1
  71. package/core/base-elements/button-base-element.d.ts +0 -1
  72. package/core/base-elements/link-base-element.d.ts +0 -1
  73. package/core/base-elements/open-close-base-element.d.ts +0 -1
  74. package/core/config/config.d.ts +0 -1
  75. package/core/controllers/connected-abort-controller.d.ts +0 -1
  76. package/core/controllers/language-controller.d.ts +0 -1
  77. package/core/controllers/slot-state-controller.d.ts +0 -1
  78. package/core/datetime/native-date-adapter.d.ts +0 -1
  79. package/core/decorators/host-attributes.d.ts +0 -1
  80. package/core/decorators/slot-state.d.ts +0 -1
  81. package/core/dom/ssr.d.ts +0 -1
  82. package/core/eventing/form-element-handlers.d.ts +0 -1
  83. package/core/i18n/i18n.d.ts +0 -1
  84. package/core/i18n.js +1 -1
  85. package/core/images.d.ts.map +1 -1
  86. package/core/mixins/disabled-mixin.d.ts +0 -1
  87. package/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  88. package/core/mixins/form-associated-mixin.d.ts +0 -1
  89. package/core/mixins/hydration-mixin.d.ts +0 -1
  90. package/core/mixins/named-slot-list-mixin.d.ts +7 -2
  91. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  92. package/core/mixins/negative-mixin.d.ts +0 -1
  93. package/core/mixins/panel-mixin.d.ts +0 -1
  94. package/core/mixins/required-mixin.d.ts +0 -1
  95. package/core/mixins/update-scheduler-mixin.d.ts +0 -1
  96. package/core/mixins.js +100 -88
  97. package/core/overlay/overlay.d.ts +0 -1
  98. package/core/styles/core.scss +21 -19
  99. package/core/styles/mixins/link.scss +9 -6
  100. package/core/styles/mixins/lists.scss +5 -5
  101. package/core/styles/mixins/pearl-chain-bullet.scss +14 -9
  102. package/core/styles/mixins/table.scss +19 -17
  103. package/core/testing/mocha-extensions.d.ts +0 -1
  104. package/core/testing/wait-for-event.d.ts +2 -0
  105. package/core/testing/wait-for-event.d.ts.map +1 -0
  106. package/core/testing/wait-for-image-ready.d.ts +0 -1
  107. package/core/testing/wait-for-render.d.ts +0 -1
  108. package/core/testing.d.ts +1 -0
  109. package/core/testing.d.ts.map +1 -1
  110. package/core/testing.js +49 -36
  111. package/core.css +10 -8
  112. package/custom-elements.json +3104 -742
  113. package/datepicker/common/datepicker-button.d.ts +0 -1
  114. package/datepicker/datepicker/datepicker.d.ts +0 -1
  115. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  116. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  117. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -1
  118. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  119. package/development/accordion/accordion.d.ts +0 -1
  120. package/development/action-group/action-group.d.ts +0 -1
  121. package/development/alert/alert/alert.d.ts +22 -17
  122. package/development/alert/alert/alert.d.ts.map +1 -1
  123. package/development/alert/alert-group/alert-group.d.ts +1 -2
  124. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  125. package/development/alert/alert-group.js +16 -11
  126. package/development/alert/alert.js +66 -25
  127. package/development/autocomplete/autocomplete-base-element.d.ts +0 -1
  128. package/development/autocomplete/autocomplete.d.ts +0 -1
  129. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  130. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +0 -1
  131. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +0 -1
  132. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +0 -1
  133. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +0 -1
  134. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +0 -1
  135. package/development/autocomplete.js +7 -5
  136. package/development/breadcrumb/breadcrumb/breadcrumb.d.ts +0 -1
  137. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +0 -1
  138. package/development/breadcrumb/breadcrumb-group.js +4 -4
  139. package/development/breadcrumb/breadcrumb.js +8 -6
  140. package/development/button/button/button.d.ts +0 -1
  141. package/development/button/button-link/button-link.d.ts +0 -1
  142. package/development/button/button-static/button-static.d.ts +0 -1
  143. package/development/button/common/button-common.d.ts +0 -1
  144. package/development/button/mini-button/mini-button-base-element.d.ts +0 -1
  145. package/development/button/mini-button/mini-button.d.ts +0 -1
  146. package/development/button/mini-button-group/index.d.ts +2 -0
  147. package/development/button/mini-button-group/index.d.ts.map +1 -0
  148. package/development/button/mini-button-group/mini-button-group.d.ts +28 -0
  149. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -0
  150. package/development/button/mini-button-group.d.ts +2 -0
  151. package/development/button/mini-button-group.d.ts.map +1 -0
  152. package/development/button/mini-button-group.js +142 -0
  153. package/development/button/secondary-button/secondary-button.d.ts +0 -1
  154. package/development/button/secondary-button-link/secondary-button-link.d.ts +0 -1
  155. package/development/button/secondary-button-static/secondary-button-static.d.ts +0 -1
  156. package/development/button/tertiary-button/tertiary-button.d.ts +0 -1
  157. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -1
  158. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -1
  159. package/development/button/transparent-button/transparent-button.d.ts +0 -1
  160. package/development/button/transparent-button-link/transparent-button-link.d.ts +0 -1
  161. package/development/button/transparent-button-static/transparent-button-static.d.ts +0 -1
  162. package/development/button.d.ts +1 -0
  163. package/development/button.d.ts.map +1 -1
  164. package/development/button.js +2 -1
  165. package/development/calendar/calendar.d.ts +0 -1
  166. package/development/calendar.js +3 -3
  167. package/development/card/card/card.d.ts +0 -1
  168. package/development/card/card-badge/card-badge.d.ts +0 -1
  169. package/development/card/card-button/card-button.d.ts +0 -1
  170. package/development/card/card-link/card-link.d.ts +0 -1
  171. package/development/card/card.js +3 -3
  172. package/development/card/common/card-action-common.d.ts +0 -1
  173. package/development/checkbox/checkbox/checkbox.d.ts +0 -1
  174. package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  175. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  176. package/development/checkbox/common/checkbox-common.d.ts +0 -1
  177. package/development/chip/chip.d.ts +0 -1
  178. package/development/chip.js +4 -2
  179. package/development/clock/clock.d.ts +0 -1
  180. package/development/clock/clock.d.ts.map +1 -1
  181. package/development/clock.js +3 -2
  182. package/development/container/container/container.d.ts +1 -1
  183. package/development/container/container/container.d.ts.map +1 -1
  184. package/development/container/container.js +39 -3
  185. package/development/container/sticky-bar/sticky-bar.d.ts +0 -1
  186. package/development/container/sticky-bar.js +1 -4
  187. package/development/core/a11y/focus-visible-within-controller.d.ts +0 -1
  188. package/development/core/base-elements/action-base-element.d.ts +0 -1
  189. package/development/core/base-elements/button-base-element.d.ts +0 -1
  190. package/development/core/base-elements/link-base-element.d.ts +0 -1
  191. package/development/core/base-elements/open-close-base-element.d.ts +0 -1
  192. package/development/core/config/config.d.ts +0 -1
  193. package/development/core/controllers/connected-abort-controller.d.ts +0 -1
  194. package/development/core/controllers/language-controller.d.ts +0 -1
  195. package/development/core/controllers/slot-state-controller.d.ts +0 -1
  196. package/development/core/datetime/native-date-adapter.d.ts +0 -1
  197. package/development/core/decorators/host-attributes.d.ts +0 -1
  198. package/development/core/decorators/slot-state.d.ts +0 -1
  199. package/development/core/dom/ssr.d.ts +0 -1
  200. package/development/core/eventing/form-element-handlers.d.ts +0 -1
  201. package/development/core/i18n/i18n.d.ts +0 -1
  202. package/development/core/i18n.js +2 -2
  203. package/development/core/images.d.ts.map +1 -1
  204. package/development/core/mixins/disabled-mixin.d.ts +0 -1
  205. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +0 -1
  206. package/development/core/mixins/form-associated-mixin.d.ts +0 -1
  207. package/development/core/mixins/hydration-mixin.d.ts +0 -1
  208. package/development/core/mixins/named-slot-list-mixin.d.ts +7 -2
  209. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  210. package/development/core/mixins/negative-mixin.d.ts +0 -1
  211. package/development/core/mixins/panel-mixin.d.ts +0 -1
  212. package/development/core/mixins/required-mixin.d.ts +0 -1
  213. package/development/core/mixins/update-scheduler-mixin.d.ts +0 -1
  214. package/development/core/mixins.js +24 -12
  215. package/development/core/overlay/overlay.d.ts +0 -1
  216. package/development/core/testing/mocha-extensions.d.ts +0 -1
  217. package/development/core/testing/wait-for-event.d.ts +2 -0
  218. package/development/core/testing/wait-for-event.d.ts.map +1 -0
  219. package/development/core/testing/wait-for-image-ready.d.ts +0 -1
  220. package/development/core/testing/wait-for-render.d.ts +0 -1
  221. package/development/core/testing.d.ts +1 -0
  222. package/development/core/testing.d.ts.map +1 -1
  223. package/development/core/testing.js +17 -1
  224. package/development/datepicker/common/datepicker-button.d.ts +0 -1
  225. package/development/datepicker/datepicker/datepicker.d.ts +0 -1
  226. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +0 -1
  227. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +0 -1
  228. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -1
  229. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  230. package/development/datepicker/datepicker-toggle.js +4 -2
  231. package/development/dialog/dialog/dialog.d.ts +0 -1
  232. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  233. package/development/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  234. package/development/dialog/dialog-content/dialog-content.d.ts +0 -1
  235. package/development/dialog/dialog-content.js +8 -6
  236. package/development/dialog/dialog-title/dialog-title.d.ts +0 -1
  237. package/development/dialog/dialog.js +7 -3
  238. package/development/divider/divider.d.ts +0 -1
  239. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  240. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  241. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  242. package/development/expansion-panel/expansion-panel-header.js +1 -1
  243. package/development/file-selector/file-selector.d.ts +0 -1
  244. package/development/flip-card/flip-card/flip-card.d.ts +22 -7
  245. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  246. package/development/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  247. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  248. package/development/flip-card/flip-card-summary.js +3 -1
  249. package/development/flip-card/flip-card.js +93 -24
  250. package/development/footer/footer.d.ts +0 -1
  251. package/development/footer.js +1 -1
  252. package/development/form-error/form-error.d.ts +0 -1
  253. package/development/form-error.js +4 -4
  254. package/development/form-field/form-field/form-field.d.ts +1 -2
  255. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  256. package/development/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  257. package/development/form-field/form-field.js +72 -29
  258. package/development/header/common/header-action-common.d.ts +0 -1
  259. package/development/header/common.js +2 -2
  260. package/development/header/header/header.d.ts +0 -1
  261. package/development/header/header-button/header-button.d.ts +0 -1
  262. package/development/header/header-link/header-link.d.ts +0 -1
  263. package/development/header/header.js +2 -2
  264. package/development/icon/icon-base.d.ts +0 -1
  265. package/development/icon/icon-name-mixin.d.ts +0 -1
  266. package/development/icon/icon.d.ts +9 -2
  267. package/development/icon/icon.d.ts.map +1 -1
  268. package/development/icon.js +16 -2
  269. package/development/image/image.d.ts +0 -1
  270. package/development/image.js +2 -2
  271. package/development/journey-header/journey-header.d.ts +0 -1
  272. package/development/lead-container/lead-container.d.ts +0 -1
  273. package/development/lead-container.js +1 -1
  274. package/development/link/block-link/block-link.d.ts +0 -1
  275. package/development/link/block-link-button/block-link-button.d.ts +0 -1
  276. package/development/link/block-link-static/block-link-static.d.ts +0 -1
  277. package/development/link/common/block-link-common.d.ts +0 -1
  278. package/development/link/common/inline-link-common.d.ts +0 -1
  279. package/development/link/common/link-common.d.ts +0 -1
  280. package/development/link/common.js +9 -7
  281. package/development/link/link/link.d.ts +0 -1
  282. package/development/link/link-button/link-button.d.ts +0 -1
  283. package/development/link/link-static/link-static.d.ts +0 -1
  284. package/development/link-list/common/link-list-base.d.ts +27 -0
  285. package/development/link-list/common/link-list-base.d.ts.map +1 -0
  286. package/development/link-list/common.d.ts +2 -0
  287. package/development/link-list/common.d.ts.map +1 -0
  288. package/development/link-list/common.js +113 -0
  289. package/development/link-list/link-list/link-list.d.ts +22 -0
  290. package/development/link-list/link-list/link-list.d.ts.map +1 -0
  291. package/development/link-list/link-list-anchor/index.d.ts +2 -0
  292. package/development/link-list/link-list-anchor/index.d.ts.map +1 -0
  293. package/development/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  294. package/development/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  295. package/development/link-list/link-list-anchor.d.ts +2 -0
  296. package/development/link-list/link-list-anchor.d.ts.map +1 -0
  297. package/development/link-list/link-list-anchor.js +91 -0
  298. package/development/link-list/link-list.d.ts +1 -38
  299. package/development/link-list/link-list.d.ts.map +1 -1
  300. package/development/link-list/link-list.js +194 -0
  301. package/development/link-list.d.ts +2 -0
  302. package/development/link-list.d.ts.map +1 -1
  303. package/development/link-list.js +4 -260
  304. package/development/loading-indicator/loading-indicator.d.ts +0 -1
  305. package/development/logo/logo.d.ts +0 -1
  306. package/development/logo.js +2 -2
  307. package/development/map-container/map-container.d.ts +0 -1
  308. package/development/map-container.js +13 -11
  309. package/development/menu/common/menu-action-common.d.ts +0 -1
  310. package/development/menu/menu/menu.d.ts +0 -1
  311. package/development/menu/menu/menu.d.ts.map +1 -1
  312. package/development/menu/menu-button/menu-button.d.ts +0 -1
  313. package/development/menu/menu-link/menu-link.d.ts +0 -1
  314. package/development/menu/menu.js +9 -6
  315. package/development/message/message.d.ts +0 -1
  316. package/development/navigation/common/navigation-action-common.d.ts +0 -1
  317. package/development/navigation/navigation/navigation.d.ts +0 -1
  318. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  319. package/development/navigation/navigation-button/navigation-button.d.ts +0 -1
  320. package/development/navigation/navigation-link/navigation-link.d.ts +0 -1
  321. package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
  322. package/development/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  323. package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
  324. package/development/navigation/navigation-section.js +7 -5
  325. package/development/navigation/navigation.js +14 -11
  326. package/development/notification/notification.d.ts +4 -5
  327. package/development/notification.js +1 -1
  328. package/development/option/optgroup/optgroup-base-element.d.ts +0 -1
  329. package/development/option/optgroup/optgroup.d.ts +0 -1
  330. package/development/option/option/option-base-element.d.ts +0 -1
  331. package/development/option/option/option.d.ts +0 -1
  332. package/development/overlay/overlay-base-element.d.ts +0 -1
  333. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  334. package/development/overlay/overlay.d.ts +0 -1
  335. package/development/overlay/overlay.d.ts.map +1 -1
  336. package/development/overlay.js +43 -21
  337. package/development/popover/popover/popover.d.ts +0 -1
  338. package/development/popover/popover/popover.d.ts.map +1 -1
  339. package/development/popover/popover-trigger/popover-trigger.d.ts +0 -1
  340. package/development/popover/popover-trigger.js +3 -3
  341. package/development/popover/popover.js +5 -3
  342. package/development/radio-button/common/radio-button-common.d.ts +0 -1
  343. package/development/radio-button/common.js +6 -6
  344. package/development/radio-button/radio-button/radio-button.d.ts +0 -1
  345. package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  346. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  347. package/development/screen-reader-only/screen-reader-only.d.ts +0 -1
  348. package/development/select/select.d.ts +0 -1
  349. package/development/select.js +7 -5
  350. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  351. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  352. package/development/selection-expansion-panel.js +6 -2
  353. package/development/signet/signet.d.ts +0 -1
  354. package/development/signet.js +1 -1
  355. package/development/skiplink-list/skiplink-list.d.ts +0 -1
  356. package/development/slider/slider.d.ts +0 -1
  357. package/development/slider.js +4 -4
  358. package/development/status/status.d.ts +0 -1
  359. package/development/stepper/step/step.d.ts +0 -1
  360. package/development/stepper/step-label/step-label.d.ts +0 -1
  361. package/development/stepper/stepper/stepper.d.ts +0 -1
  362. package/development/table/table-wrapper/table-wrapper.d.ts +0 -1
  363. package/development/tabs/tab/tab.d.ts +0 -1
  364. package/development/tabs/tab-group/tab-group.d.ts +0 -1
  365. package/development/tabs/tab-label/tab-label.d.ts +0 -1
  366. package/development/tabs/tab-label.js +10 -10
  367. package/development/tag/tag/tag.d.ts +0 -1
  368. package/development/tag/tag-group/tag-group.d.ts +0 -1
  369. package/development/tag/tag.js +3 -3
  370. package/development/teaser/teaser.d.ts +0 -1
  371. package/development/teaser-hero/teaser-hero.d.ts +27 -0
  372. package/development/teaser-hero/teaser-hero.d.ts.map +1 -0
  373. package/development/teaser-hero.d.ts +2 -0
  374. package/development/teaser-hero.d.ts.map +1 -0
  375. package/development/teaser-hero.js +207 -0
  376. package/development/teaser-product/common/teaser-product-common.d.ts +7 -0
  377. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  378. package/development/teaser-product/common.d.ts +2 -0
  379. package/development/teaser-product/common.d.ts.map +1 -0
  380. package/development/teaser-product/common.js +219 -0
  381. package/development/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  382. package/development/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  383. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  384. package/development/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  385. package/development/teaser-product/teaser-product-static.d.ts +2 -0
  386. package/development/teaser-product/teaser-product-static.d.ts.map +1 -0
  387. package/development/teaser-product/teaser-product-static.js +25 -0
  388. package/development/teaser-product/teaser-product.d.ts +2 -0
  389. package/development/teaser-product/teaser-product.d.ts.map +1 -0
  390. package/development/teaser-product/teaser-product.js +80 -0
  391. package/development/teaser-product.d.ts +4 -0
  392. package/development/teaser-product.d.ts.map +1 -0
  393. package/development/teaser-product.js +4 -0
  394. package/development/time-input/time-input.d.ts +0 -1
  395. package/development/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  396. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  397. package/development/timetable-occupancy.js +1 -1
  398. package/development/title/title-base.d.ts +0 -1
  399. package/development/title/title.d.ts +0 -1
  400. package/development/toast/toast.d.ts +0 -1
  401. package/development/toggle/toggle/toggle.d.ts +0 -1
  402. package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
  403. package/development/toggle/toggle.js +2 -2
  404. package/development/toggle-check/toggle-check.d.ts +0 -1
  405. package/development/train/train/train.d.ts +0 -1
  406. package/development/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  407. package/development/train/train-blocked-passage.js +1 -1
  408. package/development/train/train-formation/train-formation.d.ts +0 -1
  409. package/development/train/train-formation.js +9 -7
  410. package/development/train/train-wagon/train-wagon.d.ts +0 -1
  411. package/development/train/train-wagon.js +1 -1
  412. package/development/train/train.js +1 -1
  413. package/development/visual-checkbox/visual-checkbox.d.ts +0 -1
  414. package/development/visual-checkbox.js +1 -1
  415. package/dialog/dialog/dialog.d.ts +0 -1
  416. package/dialog/dialog/dialog.d.ts.map +1 -1
  417. package/dialog/dialog-actions/dialog-actions.d.ts +0 -1
  418. package/dialog/dialog-content/dialog-content.d.ts +0 -1
  419. package/dialog/dialog-content.js +1 -1
  420. package/dialog/dialog-title/dialog-title.d.ts +0 -1
  421. package/dialog/dialog.js +3 -3
  422. package/divider/divider.d.ts +0 -1
  423. package/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -1
  424. package/expansion-panel/expansion-panel-content/expansion-panel-content.d.ts +0 -1
  425. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +0 -1
  426. package/expansion-panel/expansion-panel-header.js +1 -1
  427. package/file-selector/file-selector.d.ts +0 -1
  428. package/flip-card/flip-card/flip-card.d.ts +22 -7
  429. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  430. package/flip-card/flip-card-details/flip-card-details.d.ts +0 -1
  431. package/flip-card/flip-card-summary/flip-card-summary.d.ts +0 -1
  432. package/flip-card/flip-card-summary.js +8 -8
  433. package/flip-card/flip-card.js +63 -32
  434. package/footer/footer.d.ts +0 -1
  435. package/footer.js +1 -1
  436. package/form-error/form-error.d.ts +0 -1
  437. package/form-error.js +1 -1
  438. package/form-field/form-field/form-field.d.ts +1 -2
  439. package/form-field/form-field/form-field.d.ts.map +1 -1
  440. package/form-field/form-field-clear/form-field-clear.d.ts +0 -1
  441. package/form-field/form-field.js +22 -22
  442. package/header/common/header-action-common.d.ts +0 -1
  443. package/header/common.js +1 -1
  444. package/header/header/header.d.ts +0 -1
  445. package/header/header-button/header-button.d.ts +0 -1
  446. package/header/header-link/header-link.d.ts +0 -1
  447. package/header/header.js +1 -1
  448. package/icon/icon-base.d.ts +0 -1
  449. package/icon/icon-name-mixin.d.ts +0 -1
  450. package/icon/icon.d.ts +9 -2
  451. package/icon/icon.d.ts.map +1 -1
  452. package/icon.js +71 -62
  453. package/image/image.d.ts +0 -1
  454. package/image.js +25 -25
  455. package/index.d.ts +11 -1
  456. package/index.js +11 -1
  457. package/journey-header/journey-header.d.ts +0 -1
  458. package/lead-container/lead-container.d.ts +0 -1
  459. package/lead-container.js +1 -1
  460. package/link/block-link/block-link.d.ts +0 -1
  461. package/link/block-link-button/block-link-button.d.ts +0 -1
  462. package/link/block-link-static/block-link-static.d.ts +0 -1
  463. package/link/common/block-link-common.d.ts +0 -1
  464. package/link/common/inline-link-common.d.ts +0 -1
  465. package/link/common/link-common.d.ts +0 -1
  466. package/link/common.js +6 -6
  467. package/link/link/link.d.ts +0 -1
  468. package/link/link-button/link-button.d.ts +0 -1
  469. package/link/link-static/link-static.d.ts +0 -1
  470. package/link-list/common/link-list-base.d.ts +27 -0
  471. package/link-list/common/link-list-base.d.ts.map +1 -0
  472. package/link-list/common.d.ts +2 -0
  473. package/link-list/common.d.ts.map +1 -0
  474. package/link-list/common.js +59 -0
  475. package/link-list/link-list/link-list.d.ts +22 -0
  476. package/link-list/link-list/link-list.d.ts.map +1 -0
  477. package/link-list/link-list-anchor/index.d.ts +2 -0
  478. package/link-list/link-list-anchor/index.d.ts.map +1 -0
  479. package/link-list/link-list-anchor/link-list-anchor.d.ts +17 -0
  480. package/link-list/link-list-anchor/link-list-anchor.d.ts.map +1 -0
  481. package/link-list/link-list-anchor.d.ts +2 -0
  482. package/link-list/link-list-anchor.d.ts.map +1 -0
  483. package/link-list/link-list-anchor.js +18 -0
  484. package/link-list/link-list.d.ts +1 -38
  485. package/link-list/link-list.d.ts.map +1 -1
  486. package/link-list/link-list.js +27 -0
  487. package/link-list.d.ts +2 -0
  488. package/link-list.d.ts.map +1 -1
  489. package/link-list.js +3 -66
  490. package/loading-indicator/loading-indicator.d.ts +0 -1
  491. package/logo/logo.d.ts +0 -1
  492. package/logo.js +1 -1
  493. package/map-container/map-container.d.ts +0 -1
  494. package/map-container.js +1 -1
  495. package/menu/common/menu-action-common.d.ts +0 -1
  496. package/menu/menu/menu.d.ts +0 -1
  497. package/menu/menu/menu.d.ts.map +1 -1
  498. package/menu/menu-button/menu-button.d.ts +0 -1
  499. package/menu/menu-link/menu-link.d.ts +0 -1
  500. package/menu/menu.js +4 -4
  501. package/message/message.d.ts +0 -1
  502. package/navigation/common/navigation-action-common.d.ts +0 -1
  503. package/navigation/navigation/navigation.d.ts +0 -1
  504. package/navigation/navigation/navigation.d.ts.map +1 -1
  505. package/navigation/navigation-button/navigation-button.d.ts +0 -1
  506. package/navigation/navigation-link/navigation-link.d.ts +0 -1
  507. package/navigation/navigation-list/navigation-list.d.ts +0 -1
  508. package/navigation/navigation-marker/navigation-marker.d.ts +0 -1
  509. package/navigation/navigation-section/navigation-section.d.ts +0 -1
  510. package/navigation/navigation-section.js +1 -1
  511. package/navigation/navigation.js +5 -5
  512. package/notification/notification.d.ts +4 -5
  513. package/option/optgroup/optgroup-base-element.d.ts +0 -1
  514. package/option/optgroup/optgroup.d.ts +0 -1
  515. package/option/option/option-base-element.d.ts +0 -1
  516. package/option/option/option.d.ts +0 -1
  517. package/overlay/overlay-base-element.d.ts +0 -1
  518. package/overlay/overlay-base-element.d.ts.map +1 -1
  519. package/overlay/overlay.d.ts +0 -1
  520. package/overlay/overlay.d.ts.map +1 -1
  521. package/overlay.js +33 -33
  522. package/package.json +46 -1
  523. package/popover/popover/popover.d.ts +0 -1
  524. package/popover/popover/popover.d.ts.map +1 -1
  525. package/popover/popover-trigger/popover-trigger.d.ts +0 -1
  526. package/popover/popover-trigger.js +1 -1
  527. package/popover/popover.js +1 -1
  528. package/radio-button/common/radio-button-common.d.ts +0 -1
  529. package/radio-button/common.js +1 -1
  530. package/radio-button/radio-button/radio-button.d.ts +0 -1
  531. package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  532. package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  533. package/screen-reader-only/screen-reader-only.d.ts +0 -1
  534. package/select/select.d.ts +0 -1
  535. package/select.js +1 -1
  536. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  537. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  538. package/signet/signet.d.ts +0 -1
  539. package/signet.js +1 -1
  540. package/skiplink-list/skiplink-list.d.ts +0 -1
  541. package/slider/slider.d.ts +0 -1
  542. package/slider.js +1 -1
  543. package/standard-theme.css +19 -13
  544. package/status/status.d.ts +0 -1
  545. package/stepper/step/step.d.ts +0 -1
  546. package/stepper/step-label/step-label.d.ts +0 -1
  547. package/stepper/stepper/stepper.d.ts +0 -1
  548. package/table/table-wrapper/table-wrapper.d.ts +0 -1
  549. package/tabs/tab/tab.d.ts +0 -1
  550. package/tabs/tab-group/tab-group.d.ts +0 -1
  551. package/tabs/tab-label/tab-label.d.ts +0 -1
  552. package/tabs/tab-label.js +1 -1
  553. package/tag/tag/tag.d.ts +0 -1
  554. package/tag/tag-group/tag-group.d.ts +0 -1
  555. package/tag/tag.js +1 -1
  556. package/teaser/teaser.d.ts +0 -1
  557. package/teaser-hero/teaser-hero.d.ts +27 -0
  558. package/teaser-hero/teaser-hero.d.ts.map +1 -0
  559. package/teaser-hero.d.ts +2 -0
  560. package/teaser-hero.d.ts.map +1 -0
  561. package/teaser-hero.js +58 -0
  562. package/teaser-product/common/teaser-product-common.d.ts +7 -0
  563. package/teaser-product/common/teaser-product-common.d.ts.map +1 -0
  564. package/teaser-product/common.d.ts +2 -0
  565. package/teaser-product/common.d.ts.map +1 -0
  566. package/teaser-product/common.js +38 -0
  567. package/teaser-product/teaser-product/teaser-product.d.ts +22 -0
  568. package/teaser-product/teaser-product/teaser-product.d.ts.map +1 -0
  569. package/teaser-product/teaser-product-static/teaser-product-static.d.ts +22 -0
  570. package/teaser-product/teaser-product-static/teaser-product-static.d.ts.map +1 -0
  571. package/teaser-product/teaser-product-static.d.ts +2 -0
  572. package/teaser-product/teaser-product-static.d.ts.map +1 -0
  573. package/teaser-product/teaser-product-static.js +19 -0
  574. package/teaser-product/teaser-product.d.ts +2 -0
  575. package/teaser-product/teaser-product.d.ts.map +1 -0
  576. package/teaser-product/teaser-product.js +21 -0
  577. package/teaser-product.d.ts +4 -0
  578. package/teaser-product.d.ts.map +1 -0
  579. package/teaser-product.js +3 -0
  580. package/time-input/time-input.d.ts +0 -1
  581. package/timetable-occupancy/timetable-occupancy.d.ts +0 -1
  582. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts +0 -1
  583. package/timetable-occupancy.js +1 -1
  584. package/title/title-base.d.ts +0 -1
  585. package/title/title.d.ts +0 -1
  586. package/toast/toast.d.ts +0 -1
  587. package/toggle/toggle/toggle.d.ts +0 -1
  588. package/toggle/toggle-option/toggle-option.d.ts +0 -1
  589. package/toggle/toggle.js +1 -1
  590. package/toggle-check/toggle-check.d.ts +0 -1
  591. package/train/train/train.d.ts +0 -1
  592. package/train/train-blocked-passage/train-blocked-passage.d.ts +0 -1
  593. package/train/train-blocked-passage.js +1 -1
  594. package/train/train-formation/train-formation.d.ts +0 -1
  595. package/train/train-formation.js +1 -1
  596. package/train/train-wagon/train-wagon.d.ts +0 -1
  597. package/train/train-wagon.js +1 -1
  598. package/train/train.js +1 -1
  599. package/visual-checkbox/visual-checkbox.d.ts +0 -1
  600. package/visual-checkbox.js +1 -1
@@ -36,6 +36,7 @@ const style = css`@charset "UTF-8";
36
36
  }
37
37
 
38
38
  :host {
39
+ display: inline-block;
39
40
  --sbb-form-field-background-color: var(--sbb-color-white);
40
41
  --sbb-form-field-border-color: var(--sbb-color-smoke);
41
42
  --sbb-form-field-border-style: solid;
@@ -55,23 +56,33 @@ const style = css`@charset "UTF-8";
55
56
  var(--sbb-icon-svg-width) + var(--sbb-form-field-gap)
56
57
  );
57
58
  --sbb-form-field-overflow: hidden;
59
+ --sbb-form-field-input-text-size: var(--sbb-font-size-text-m);
60
+ --sbb-form-field-label-text-size: var(--sbb-font-size-text-xs);
58
61
  --sbb-form-field-label-size: calc(
59
- var(--sbb-font-size-text-xs) * var(--sbb-typo-line-height-body-text)
62
+ var(--sbb-form-field-label-text-size) * var(--sbb-typo-line-height-body-text)
60
63
  );
61
- --sbb-form-field-input-size: calc(
62
- var(--sbb-font-size-text-m) * var(--sbb-typo-line-height-body-text)
64
+ --sbb-form-field-text-line-height: calc(
65
+ var(--sbb-form-field-input-text-size) * var(--sbb-typo-line-height-body-text)
63
66
  );
64
67
  --sbb-form-field-margin-block-start: calc(
65
68
  (
66
69
  var(--sbb-form-field-min-height) - var(--sbb-form-field-label-size) - var(
67
- --sbb-form-field-input-size
70
+ --sbb-form-field-text-line-height
68
71
  ) + var(--sbb-form-field-label-to-input-overlapping)
69
72
  ) / 2
70
73
  );
74
+ --sbb-form-field-spacer-margin-block-end: calc(
75
+ -1 * var(--sbb-form-field-label-to-input-overlapping)
76
+ );
77
+ --sbb-form-field-floating-label-transform: 0.53125rem;
71
78
  --sbb-icon-svg-width: var(--sbb-size-icon-ui-small);
72
79
  --sbb-icon-svg-height: var(--sbb-size-icon-ui-small);
73
80
  --sbb-focus-outline-color: var(--sbb-focus-outline-color-default);
74
- display: inline-block;
81
+ }
82
+ @media (min-width: calc(52.5rem)) {
83
+ :host {
84
+ --sbb-form-field-floating-label-transform: 0.65625rem;
85
+ }
75
86
  }
76
87
  @media (forced-colors: active) {
77
88
  :host {
@@ -99,6 +110,23 @@ const style = css`@charset "UTF-8";
99
110
  }
100
111
  }
101
112
 
113
+ :host([size=s]) {
114
+ --sbb-form-field-min-height: var(--sbb-size-element-xs);
115
+ --sbb-form-field-padding-inline: var(--sbb-spacing-fixed-2x);
116
+ --sbb-form-field-input-text-size: var(--sbb-font-size-text-s);
117
+ --sbb-form-field-label-text-size: var(--sbb-font-size-text-xxs);
118
+ --sbb-form-field-label-to-input-overlapping: 0.625rem;
119
+ --sbb-form-field-floating-label-transform: 0.34375rem;
120
+ --sbb-form-field-spacer-margin-block-end: -0.53125rem;
121
+ }
122
+ @media (min-width: calc(52.5rem)) {
123
+ :host([size=s]) {
124
+ --sbb-form-field-label-to-input-overlapping: 0.6875rem;
125
+ --sbb-form-field-floating-label-transform: 0.3125rem;
126
+ --sbb-form-field-spacer-margin-block-end: -0.5rem;
127
+ }
128
+ }
129
+
102
130
  :host([size=l]) {
103
131
  --sbb-form-field-min-height: var(--sbb-size-element-l);
104
132
  --sbb-form-field-padding-inline: var(--sbb-spacing-responsive-xxxs);
@@ -249,7 +277,7 @@ const style = css`@charset "UTF-8";
249
277
  :host(:is([borderless], [data-input-type=sbb-slider])) .sbb-form-field__wrapper::before {
250
278
  border-color: transparent;
251
279
  }
252
- :host(:is([data-input-focused], [data-has-popup-open])[borderless]) .sbb-form-field__wrapper::after {
280
+ :host(:is([data-input-focused], [data-has-popup-open], [data-disabled])[borderless]) .sbb-form-field__wrapper::after {
253
281
  content: "";
254
282
  position: absolute;
255
283
  border-block-end: var(--sbb-border-width-1x) var(--sbb-form-field-border-style) var(--sbb-form-field-border-color);
@@ -302,8 +330,8 @@ const style = css`@charset "UTF-8";
302
330
 
303
331
  .sbb-form-field__label-spacer {
304
332
  display: flex;
305
- height: calc(var(--sbb-font-size-text-xs) * var(--sbb-typo-line-height-body-text));
306
- margin-block-end: calc(-1 * var(--sbb-form-field-label-to-input-overlapping));
333
+ height: calc(var(--sbb-form-field-label-text-size) * var(--sbb-typo-line-height-body-text));
334
+ margin-block-end: var(--sbb-form-field-spacer-margin-block-end);
307
335
  }
308
336
 
309
337
  :host(:not([data-slot-names~=label], [label])) :is(.sbb-form-field__label, .sbb-form-field__label-spacer) {
@@ -322,18 +350,27 @@ const style = css`@charset "UTF-8";
322
350
  }
323
351
 
324
352
  .sbb-form-field__label {
325
- --sbb-text-font-size: var(--sbb-font-size-text-xs);
326
- font-family: var(--sbb-typo-font-family);
327
- font-weight: normal;
328
- line-height: var(--sbb-typo-line-height-body-text);
329
- letter-spacing: var(--sbb-typo-letter-spacing-body-text);
330
- font-size: var(--sbb-text-font-size);
331
353
  display: flex;
332
354
  max-width: 100%;
333
355
  cursor: default;
334
356
  position: absolute;
335
357
  inset-block-start: 0;
336
358
  color: var(--sbb-form-field-label-color);
359
+ z-index: 1;
360
+ --sbb-text-font-size: var(--sbb-font-size-text-xs);
361
+ font-family: var(--sbb-typo-font-family);
362
+ font-weight: normal;
363
+ line-height: var(--sbb-typo-line-height-body-text);
364
+ letter-spacing: var(--sbb-typo-letter-spacing-body-text);
365
+ font-size: var(--sbb-text-font-size);
366
+ }
367
+ :host([size=s]) .sbb-form-field__label {
368
+ --sbb-text-font-size: var(--sbb-font-size-text-xxs);
369
+ font-family: var(--sbb-typo-font-family);
370
+ font-weight: normal;
371
+ line-height: var(--sbb-typo-line-height-body-text);
372
+ letter-spacing: var(--sbb-typo-letter-spacing-body-text);
373
+ font-size: var(--sbb-text-font-size);
337
374
  }
338
375
  :host([data-input-type=select]) .sbb-form-field__label, :host([data-input-type=sbb-select]) .sbb-form-field__label {
339
376
  padding-inline-end: var(--sbb-form-field-select-inline-padding-end);
@@ -349,14 +386,8 @@ const style = css`@charset "UTF-8";
349
386
  }
350
387
  :host([floating-label]:is(:not([data-input-focused]:not([data-input-type=sbb-select]), [data-has-popup-open]),
351
388
  [data-readonly])[data-input-empty]) .sbb-form-field__label {
352
- font-size: var(--sbb-font-size-text-m);
353
- transform: translateY(0.53125rem);
354
- }
355
- @media (min-width: calc(52.5rem)) {
356
- :host([floating-label]:is(:not([data-input-focused]:not([data-input-type=sbb-select]), [data-has-popup-open]),
357
- [data-readonly])[data-input-empty]) .sbb-form-field__label {
358
- transform: translateY(0.65625rem);
359
- }
389
+ font-size: var(--sbb-form-field-input-text-size);
390
+ transform: translateY(var(--sbb-form-field-floating-label-transform));
360
391
  }
361
392
 
362
393
  .sbb-form-field__label-ellipsis {
@@ -365,6 +396,13 @@ const style = css`@charset "UTF-8";
365
396
  text-overflow: ellipsis;
366
397
  }
367
398
 
399
+ .sbb-form-field__input {
400
+ display: flex;
401
+ }
402
+ :host([size=s]:is([data-input-type=input], [data-input-type=select])) .sbb-form-field__input {
403
+ margin-block-end: -0.125rem;
404
+ }
405
+
368
406
  .sbb-form-field__input ::slotted(:where(input, select, textarea, sbb-select)) {
369
407
  --sbb-text-font-size: var(--sbb-font-size-text-m);
370
408
  font-family: var(--sbb-typo-font-family);
@@ -388,7 +426,7 @@ const style = css`@charset "UTF-8";
388
426
  -webkit-text-fill-color: var(--sbb-form-field-text-color);
389
427
  opacity: 1;
390
428
  background-color: transparent;
391
- font-size: var(--sbb-font-size-text-m) !important;
429
+ font-size: var(--sbb-form-field-input-text-size) !important;
392
430
  font-family: var(--sbb-typo-font-family) !important;
393
431
  line-height: var(--sbb-typo-line-height-body-text) !important;
394
432
  }
@@ -429,11 +467,6 @@ const style = css`@charset "UTF-8";
429
467
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
430
468
  /* Scrollbar itself */
431
469
  /* Hide button (top and bottom of the scrollbar) */
432
- position: relative;
433
- resize: none;
434
- white-space: break-spaces;
435
- overflow-y: auto;
436
- min-height: calc(var(--sbb-typo-line-height-body-text) * 1em);
437
470
  }
438
471
  .sbb-form-field__input ::slotted(textarea)::-webkit-scrollbar {
439
472
  width: var(--sbb-scrollbar-width);
@@ -462,6 +495,16 @@ const style = css`@charset "UTF-8";
462
495
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
463
496
  }
464
497
  }
498
+ .sbb-form-field__input ::slotted(textarea) {
499
+ position: relative;
500
+ resize: none;
501
+ white-space: break-spaces;
502
+ overflow-y: auto;
503
+ min-height: calc(var(--sbb-typo-line-height-body-text) * 1em);
504
+ }
505
+ :host([size=l]) .sbb-form-field__input ::slotted(textarea) {
506
+ padding-block-end: 0.34375rem;
507
+ }
465
508
  :host([negative]) .sbb-form-field__input ::slotted(textarea) {
466
509
  --sbb-scrollbar-thumb-width: 0.125rem;
467
510
  --sbb-scrollbar-thumb-width-hover: 0.25rem;
@@ -888,4 +931,4 @@ SbbFormFieldElement = __decorateClass([
888
931
  export {
889
932
  SbbFormFieldElement
890
933
  };
891
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJJbnB1dE1vZGFsaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzRmlyZWZveCwgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuT3B0aW9uYWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9jb3JlL29ic2VydmVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IG5leHRGb3JtRmllbGRFcnJvcklkID0gMDtcblxuY29uc3Qgc3VwcG9ydGVkUG9wdXBUYWdOYW1lcyA9IFsnc2JiLWF1dG9jb21wbGV0ZScsICdzYmItYXV0b2NvbXBsZXRlLWdyaWQnLCAnc2JiLXNlbGVjdCddO1xuXG4vKipcbiAqIEl0IHdyYXBzIGFuIGlucHV0IGVsZW1lbnQgYWRkaW5nIGxhYmVsLCBlcnJvcnMsIGljb24sIGV0Yy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGlucHV0L3NlbGVjdCBvciBhIHN1cHBvcnRlZCBub24tbmF0aXZlIGVsZW1lbnQuXG4gKiBAc2xvdCBsYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgbGFiZWwuXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBlcnJvciAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGVycm9yLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAnc2VsZWN0JywgJ3RleHRhcmVhJ107XG4gIC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGVsZW1lbnQgc2VsZWN0b3JzIGluIHVubmFtZWQgc2xvdFxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgIC4uLnRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICdzYmItc2xpZGVyJyxcbiAgXTtcbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cyA9IFtcbiAgICAnaW5wdXQnLFxuICAgICdzZWxlY3QnLFxuICAgICdzYmItc2VsZWN0JyxcbiAgICAndGV4dGFyZWEnLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzID0gW1xuICAgICdlbWFpbCcsXG4gICAgJ251bWJlcicsXG4gICAgJ3Bhc3N3b3JkJyxcbiAgICAnc2VhcmNoJyxcbiAgICAndGVsJyxcbiAgICAndGV4dCcsXG4gICAgJ3VybCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICogYG5vbmVgIGRvZXMgbm90IHJlc2VydmUgYW55IHNwYWNlLlxuICAgKiBgcmVzZXJ2ZWAgZG9lcyByZXNlcnZlIG9uZSByb3cgZm9yIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdlcnJvci1zcGFjZScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGVycm9yU3BhY2U/OiAnbm9uZScgfCAncmVzZXJ2ZScgPSAnbm9uZSc7XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBvcHRpb25hbC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgb3B0aW9uYWw/OiBib29sZWFuO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIHNpemU/OiAnbCcgfCAnbScgPSAnbSc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBmaWVsZCB3aXRob3V0IGEgYm9yZGVyLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGhpZGRlbkxhYmVsID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZmxvYXRpbmctbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBmbG9hdGluZ0xhYmVsID1cbiAgICBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2lucHV0PzogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbGFiZWw/OiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gbmV3IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlcihcbiAgICAobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBpZiAobXV0YXRpb25zLnNvbWUoKG0pID0+IG0udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSkge1xuICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBPcGVuKHsgdGFyZ2V0IH06IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgaWYgKHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMuaW5jbHVkZXMoKHRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLXBvcHVwLW9wZW4nLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblBvcHVwQ2xvc2UoeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVdyYXBwZXJDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNCdXR0b25PclBvcHVwKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmNsaWNrKCk7XG4gICAgICB0aGlzLl9pbnB1dC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5sb2NhbE5hbWUgIT09ICdsYWJlbCcpIHtcbiAgICAgIHRoaXMuX2lucHV0Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzQnV0dG9uT3JQb3B1cChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLnNvbWUoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICAoZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiYgZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykgPT09ICdidXR0b24nKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dCA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgLmZpbmQoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IHRoaXMuX3N1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXMoZS5sb2NhbE5hbWUpKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuXG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkgPSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICB0aGlzLl9hcHBseUFyaWFEZXNjcmliZWRieSgpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ2RhdGEtc2JiLWludmFsaWQnXSxcbiAgICB9KTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1pbnB1dC10eXBlJywgdGhpcy5faW5wdXQubG9jYWxOYW1lKTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkpIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0LmlkKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmlkID0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbGFiZWwuaHRtbEZvciA9IHRoaXMuX2lucHV0LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLW5hdGl2ZSBpbnB1dCBlbGVtZW50cywgdGhhdCBkbyBub3Qgc3VwcG9ydCByZWZlcmVuY2VzIHZpYSB0aGUgbGFiZWwgZm9yIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIHVzZSBhcmlhLWxhYmVsbGVkYnkgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gcmVmZXJlbmNlIHRoZSBsYWJlbCBlbGVtZW50IHZpYSBpZC5cbiAgICAgIGlmICghdGhpcy5fbGFiZWwuaWQpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtbGFiZWwtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFiZWxsZWRieSA9XG4gICAgICAgIHRoaXMuX2lucHV0XG4gICAgICAgICAgLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKChsKSA9PiAhIWwgJiYgbCAhPT0gdGhpcy5fbGFiZWwhLmlkKSA/PyBbXTtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgWy4uLmxhYmVsbGVkYnksIHRoaXMuX2xhYmVsLmlkXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAvLyBUaW1lb3V0IG5lZWRlZCB0byBoYXZlIHZhbHVlIHVwZGF0ZWRcbiAgICB0aGlzLl9nZXRJbnB1dEZvcm0oKT8uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgbGV0IGlucHV0Rm9jdXNFbGVtZW50ID0gdGhpcy5faW5wdXQ7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
934
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJJbnB1dE1vZGFsaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzRmlyZWZveCwgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuT3B0aW9uYWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9jb3JlL29ic2VydmVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IG5leHRGb3JtRmllbGRFcnJvcklkID0gMDtcblxuY29uc3Qgc3VwcG9ydGVkUG9wdXBUYWdOYW1lcyA9IFsnc2JiLWF1dG9jb21wbGV0ZScsICdzYmItYXV0b2NvbXBsZXRlLWdyaWQnLCAnc2JiLXNlbGVjdCddO1xuXG4vKipcbiAqIEl0IHdyYXBzIGFuIGlucHV0IGVsZW1lbnQgYWRkaW5nIGxhYmVsLCBlcnJvcnMsIGljb24sIGV0Yy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGlucHV0L3NlbGVjdCBvciBhIHN1cHBvcnRlZCBub24tbmF0aXZlIGVsZW1lbnQuXG4gKiBAc2xvdCBsYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgbGFiZWwuXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBlcnJvciAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGVycm9yLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAnc2VsZWN0JywgJ3RleHRhcmVhJ107XG4gIC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGVsZW1lbnQgc2VsZWN0b3JzIGluIHVubmFtZWQgc2xvdFxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgIC4uLnRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICdzYmItc2xpZGVyJyxcbiAgXTtcbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cyA9IFtcbiAgICAnaW5wdXQnLFxuICAgICdzZWxlY3QnLFxuICAgICdzYmItc2VsZWN0JyxcbiAgICAndGV4dGFyZWEnLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzID0gW1xuICAgICdlbWFpbCcsXG4gICAgJ251bWJlcicsXG4gICAgJ3Bhc3N3b3JkJyxcbiAgICAnc2VhcmNoJyxcbiAgICAndGVsJyxcbiAgICAndGV4dCcsXG4gICAgJ3VybCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICogYG5vbmVgIGRvZXMgbm90IHJlc2VydmUgYW55IHNwYWNlLlxuICAgKiBgcmVzZXJ2ZWAgZG9lcyByZXNlcnZlIG9uZSByb3cgZm9yIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdlcnJvci1zcGFjZScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGVycm9yU3BhY2U/OiAnbm9uZScgfCAncmVzZXJ2ZScgPSAnbm9uZSc7XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBvcHRpb25hbC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgb3B0aW9uYWw/OiBib29sZWFuO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIHNpemU/OiAnbCcgfCAnbScgfCAncycgPSAnbSc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBmaWVsZCB3aXRob3V0IGEgYm9yZGVyLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGhpZGRlbkxhYmVsID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZmxvYXRpbmctbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBmbG9hdGluZ0xhYmVsID1cbiAgICBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2lucHV0PzogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbGFiZWw/OiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gbmV3IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlcihcbiAgICAobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBpZiAobXV0YXRpb25zLnNvbWUoKG0pID0+IG0udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSkge1xuICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBPcGVuKHsgdGFyZ2V0IH06IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgaWYgKHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMuaW5jbHVkZXMoKHRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLXBvcHVwLW9wZW4nLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblBvcHVwQ2xvc2UoeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVdyYXBwZXJDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNCdXR0b25PclBvcHVwKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmNsaWNrKCk7XG4gICAgICB0aGlzLl9pbnB1dC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5sb2NhbE5hbWUgIT09ICdsYWJlbCcpIHtcbiAgICAgIHRoaXMuX2lucHV0Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzQnV0dG9uT3JQb3B1cChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLnNvbWUoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICAoZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiYgZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykgPT09ICdidXR0b24nKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dCA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgLmZpbmQoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IHRoaXMuX3N1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXMoZS5sb2NhbE5hbWUpKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuXG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkgPSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICB0aGlzLl9hcHBseUFyaWFEZXNjcmliZWRieSgpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ2RhdGEtc2JiLWludmFsaWQnXSxcbiAgICB9KTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1pbnB1dC10eXBlJywgdGhpcy5faW5wdXQubG9jYWxOYW1lKTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkpIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0LmlkKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmlkID0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbGFiZWwuaHRtbEZvciA9IHRoaXMuX2lucHV0LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLW5hdGl2ZSBpbnB1dCBlbGVtZW50cywgdGhhdCBkbyBub3Qgc3VwcG9ydCByZWZlcmVuY2VzIHZpYSB0aGUgbGFiZWwgZm9yIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIHVzZSBhcmlhLWxhYmVsbGVkYnkgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gcmVmZXJlbmNlIHRoZSBsYWJlbCBlbGVtZW50IHZpYSBpZC5cbiAgICAgIGlmICghdGhpcy5fbGFiZWwuaWQpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtbGFiZWwtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFiZWxsZWRieSA9XG4gICAgICAgIHRoaXMuX2lucHV0XG4gICAgICAgICAgLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKChsKSA9PiAhIWwgJiYgbCAhPT0gdGhpcy5fbGFiZWwhLmlkKSA/PyBbXTtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgWy4uLmxhYmVsbGVkYnksIHRoaXMuX2xhYmVsLmlkXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAvLyBUaW1lb3V0IG5lZWRlZCB0byBoYXZlIHZhbHVlIHVwZGF0ZWRcbiAgICB0aGlzLl9nZXRJbnB1dEZvcm0oKT8uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgbGV0IGlucHV0Rm9jdXNFbGVtZW50ID0gdGhpcy5faW5wdXQ7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxJQUFJLFNBQVM7QUFDYixJQUFJLHVCQUF1QjtBQUUzQixNQUFNLHlCQUF5QixDQUFDLG9CQUFvQix5QkFBeUIsWUFBWTtBQWFsRixJQUFNLHNCQUFOLGNBQWtDLGlCQUFpQixrQkFBa0IsVUFBVSxDQUFDLEVBQUU7QUFBQSxFQUFsRixjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFHTCxTQUFpQixnQ0FBZ0MsQ0FBQyxTQUFTLFVBQVUsVUFBVTtBQUUvRSxTQUFpQiwwQkFBMEI7QUFBQSxNQUN6QyxHQUFHLEtBQUs7QUFBQSxNQUNSO0FBQUEsTUFDQTtBQUFBLElBQUE7QUFHZSxTQUFBLHlCQUF5QixDQUFDLFVBQVUsYUFBYTtBQUVsRSxTQUFpQix1Q0FBdUM7QUFBQSxNQUN0RDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQUE7QUFHRixTQUFpQixvQ0FBb0M7QUFBQSxNQUNuRDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQUE7QUFTRixTQUFPLGFBQWtDO0FBTVosU0FBTyxPQUF5QjtBQUdqQixTQUFPLGFBQWE7QUFLbkMsU0FBTyxRQUFnQztBQUdHLFNBQU8sY0FBYztBQUduQixTQUFPLGdCQUM5RTtBQUdPLFNBQVEsaUJBQTRCO0FBZ0JyQyxTQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUtsRCxTQUFRLDhCQUE4QixJQUFJO0FBQUEsTUFDeEMsQ0FBQyxjQUFnQztBQUMvQixZQUFJLFVBQVUsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLFlBQVksR0FBRztBQUNsRCxlQUFLLGdCQUFnQjtBQUFBLFFBQ3ZCO0FBQUEsTUFDRjtBQUFBLElBQUE7QUFHTSxTQUFBLHdCQUF3QixJQUFJO0VBQWdCO0FBQUE7QUFBQSxFQWxCcEQsSUFBVyxlQUErRTtBQUN4RixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFrQmdCLG9CQUEwQjtBQUN4QyxVQUFNLGtCQUFrQjtBQUNsQixVQUFBLFNBQVMsS0FBSyxPQUFPO0FBQ3RCLFNBQUEsaUJBQWlCLFlBQVksQ0FBQyxNQUF5QixLQUFLLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBQSxDQUFRO0FBQ3ZGLFNBQUEsaUJBQWlCLFlBQVksQ0FBQyxNQUF5QixLQUFLLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBQSxDQUFRO0FBQzdGLFNBQUssdUJBQXVCO0FBQzVCLFNBQUssY0FBYztBQUFBLEVBQ3JCO0FBQUEsRUFFbUIsV0FBVyxtQkFBK0M7QUFDM0UsVUFBTSxXQUFXLGlCQUFpQjtBQUU5QixRQUFBLGtCQUFrQixJQUFJLFVBQVUsR0FBRztBQUNyQyxXQUFLLGNBQWM7QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFBQSxFQUVnQix1QkFBNkI7QUFDM0MsVUFBTSxxQkFBcUI7QUFDM0IsU0FBSyw0QkFBNEI7QUFDakMsU0FBSyxzQkFBc0I7RUFDN0I7QUFBQSxFQUVRLGFBQWEsRUFBRSxVQUFtQztBQUN4RCxRQUFJLHVCQUF1QixTQUFVLE9BQXVCLFNBQVMsR0FBRztBQUNqRSxXQUFBLGdCQUFnQix1QkFBdUIsSUFBSTtBQUFBLElBQ2xEO0FBQUEsRUFDRjtBQUFBLEVBRVEsY0FBYyxFQUFFLFVBQW1DO0FBQ3pELFFBQUksdUJBQXVCLFNBQVUsT0FBdUIsU0FBUyxHQUFHO0FBQ3RFLFdBQUssZ0JBQWdCLHFCQUFxQjtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUFBLEVBRVEsb0JBQW9CLE9BQW9COztBQUMxQyxRQUFBLEtBQUssaUJBQWlCLEtBQUssR0FBRztBQUNoQztBQUFBLElBQ0Y7QUFFSSxVQUFBLFVBQUssV0FBTCxtQkFBYSxlQUFjLGNBQWM7QUFDM0MsV0FBSyxPQUFPO0FBQ1osV0FBSyxPQUFPO0lBQ0YsV0FBQSxNQUFNLE9BQW1CLGNBQWMsU0FBUztBQUMxRCxpQkFBSyxXQUFMLG1CQUFhO0FBQUEsSUFDZjtBQUFBLEVBQ0Y7QUFBQSxFQUVRLGlCQUFpQixPQUF1QjtBQUN2QyxXQUFBLE1BQ0osZUFDQTtBQUFBLE1BQ0MsQ0FBQyxPQUNFLGNBQWMsT0FBTyxlQUFlLEdBQUcsYUFBYSxNQUFNLE1BQU0sWUFDakUsS0FBSyx1QkFBdUIsU0FBVSxHQUFtQixTQUFTO0FBQUEsSUFBQTtBQUFBLEVBRTFFO0FBQUEsRUFFUSxxQkFBMkI7QUFDakMsVUFBTSxTQUFTLE1BQU0sS0FBSyxLQUFLLGlCQUFpQixPQUFPLENBQUM7QUFDN0IsUUFBQSxPQUFPLFNBQVMsR0FBRztBQUNwQyxjQUFBO0FBQUEsUUFDTixrREFBa0QsS0FBSyxFQUFFO0FBQUEsTUFBQTtBQUFBLElBRTdEO0FBQ0ssU0FBQSxTQUFTLE9BQU8sQ0FBQztBQUN0QixTQUFLLDBCQUEwQjtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLUSxtQkFBbUIsT0FBb0I7QUFDN0MsU0FBSyxTQUFVLE1BQU0sT0FDbEIsaUJBQ0EsRUFBQSxLQUFLLENBQUMsTUFBd0IsS0FBSyx3QkFBd0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztBQUNuRixTQUFLLGFBQWE7QUFFZCxRQUFBLENBQUMsS0FBSyxRQUFRO0FBQ2hCO0FBQUEsSUFDRjtBQUVBLFNBQUssZ0NBQWdDLEtBQUssT0FBTyxhQUFhLGtCQUFrQjtBQUNoRixTQUFLLHNCQUFzQjtBQUMzQixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLHVCQUF1QjtBQUV4QixRQUFBLEtBQUssT0FBTyxjQUFjLFlBQVk7QUFDbkMsV0FBQSxPQUFPLGFBQWEsUUFBUSxLQUFLLE9BQU8sYUFBYSxNQUFNLEtBQUssR0FBRztBQUFBLElBQzFFO0FBRUEsU0FBSyw0QkFBNEI7QUFDNUIsU0FBQSw0QkFBNEIsUUFBUSxLQUFLLFFBQVE7QUFBQSxNQUNwRCxZQUFZO0FBQUEsTUFDWixpQkFBaUIsQ0FBQyxZQUFZLFlBQVksU0FBUyxrQkFBa0I7QUFBQSxJQUFBLENBQ3RFO0FBQ0QsU0FBSyxhQUFhLG1CQUFtQixLQUFLLE9BQU8sU0FBUztBQUMxRCxTQUFLLDBCQUEwQjtBQUFBLEVBQ2pDO0FBQUEsRUFFUSw0QkFBa0M7O0FBQ3hDLFFBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFFBQVE7QUFDaEM7QUFBQSxJQUNGO0FBRUEsUUFBSSxLQUFLLDhCQUE4QixTQUFTLEtBQUssT0FBTyxTQUFTLEdBQUc7QUFHbEUsVUFBQSxDQUFDLEtBQUssT0FBTyxJQUFJO0FBQ2QsYUFBQSxPQUFPLEtBQUssd0JBQXdCLFFBQVE7QUFBQSxNQUNuRDtBQUVLLFdBQUEsT0FBTyxVQUFVLEtBQUssT0FBTztBQUFBLElBQUEsT0FDN0I7QUFHRCxVQUFBLENBQUMsS0FBSyxPQUFPLElBQUk7QUFDZCxhQUFBLE9BQU8sS0FBSyx3QkFBd0IsUUFBUTtBQUFBLE1BQ25EO0FBQ00sWUFBQSxlQUNKLFVBQUssT0FDRixhQUFhLGlCQUFpQixNQURqQyxtQkFFSSxNQUFNLEtBQ1AsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssTUFBTSxLQUFLLE9BQVEsUUFBTztBQUNwRCxXQUFLLE9BQU8sYUFBYSxtQkFBbUIsQ0FBQyxHQUFHLFlBQVksS0FBSyxPQUFPLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLElBQ3ZGO0FBQUEsRUFDRjtBQUFBLEVBRVEseUJBQStCOztBQUNqQyxRQUFBLENBQUMsS0FBSyxRQUFRO0FBQ2hCO0FBQUEsSUFDRjtBQUNBLFNBQUssc0JBQXNCO0FBQ3RCLFNBQUEsd0JBQXdCLElBQUk7QUFDakMsU0FBSywwQkFBMEI7QUFHMUIsZUFBQSxvQkFBQSxtQkFBaUIsaUJBQWlCLFNBQVMsTUFBTSxXQUFXLE1BQU0sS0FBSyxNQUFNLENBQUMsR0FBRztBQUFBLE1BQ3BGLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxJQUFBO0FBR3JDLFNBQUssT0FBTyxpQkFBaUIsU0FBUyxNQUFNLEtBQUssNkJBQTZCO0FBQUEsTUFDNUUsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLElBQUEsQ0FDcEM7QUFFRCxTQUFLLE9BQU8saUJBQWlCLFFBQVEsTUFBTSxLQUFLLDZCQUE2QjtBQUFBLE1BQzNFLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxJQUFBLENBQ3BDO0FBRUQsUUFBSSxvQkFBb0IsS0FBSztBQUV6QixRQUFBLEtBQUssT0FBTyxjQUFjLGNBQWM7QUFDMUMsV0FBSyxPQUFPLGlCQUFpQixlQUFlLE1BQU0sS0FBSyw2QkFBNkI7QUFBQSxRQUNsRixRQUFRLEtBQUssc0JBQXNCO0FBQUEsTUFBQSxDQUNwQztBQUVELDBCQUFxQixLQUFLLE9BQTRCO0FBQUEsSUFDeEQ7QUFFa0Isc0JBQUE7QUFBQSxNQUNoQjtBQUFBLE1BQ0EsTUFBTTtBQUNDLGFBQUEsZ0JBQWdCLHNCQUFzQixJQUFJO0FBQzFDLGFBQUE7QUFBQSxVQUNIO0FBQUEsVUFDQyx5QkFBeUIsc0JBQTJDO0FBQUEsUUFBQTtBQUFBLE1BRXpFO0FBQUEsTUFDQTtBQUFBLFFBQ0UsUUFBUSxLQUFLLHNCQUFzQjtBQUFBLE1BQ3JDO0FBQUEsSUFBQTtBQUdnQixzQkFBQTtBQUFBLE1BQ2hCO0FBQUEsTUFDQSxNQUNFLENBQUMscUJBQXFCLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLElBQUksQ0FBQztBQUFBLE1BQzFGO0FBQUEsUUFDRSxRQUFRLEtBQUssc0JBQXNCO0FBQUEsTUFDckM7QUFBQSxJQUFBO0FBQUEsRUFFSjtBQUFBLEVBRVEsZ0JBQW9EOztBQUMxRCxRQUFJLEtBQUssa0JBQWtCLG9CQUFvQixLQUFLLGtCQUFrQixtQkFBbUI7QUFDdkYsYUFBTyxLQUFLLE9BQU87QUFBQSxJQUNyQjtBQUNPLFlBQUEsVUFBSyxXQUFMLG1CQUFhLFFBQVE7QUFBQSxFQUM5QjtBQUFBLEVBRVEsNEJBQWtDOztBQUNuQyxTQUFBO0FBQUEsTUFDSDtBQUFBLE1BQ0EsS0FBSyxxQ0FBcUMsVUFBUyxVQUFLLFdBQUwsbUJBQWEsU0FBbUIsS0FDakYsS0FBSyxjQUFjO0FBQUEsSUFBQTtBQUFBLEVBRXpCO0FBQUEsRUFFUSxnQkFBeUI7O0FBQzNCLFFBQUEsS0FBSyxrQkFBa0Isa0JBQWtCO0FBRXpDLGFBQUEsS0FBSyxrQ0FBa0MsU0FBUyxLQUFLLE9BQU8sSUFBSSxLQUNoRSxLQUFLO0lBQW1CLFdBRWpCLEtBQUssa0JBQWtCLG1CQUFtQjtBQUM1QyxlQUFBLHNCQUFLLE9BQU8sb0JBQVosbUJBQTZCLEtBQUssT0FBbEMsbUJBQXNDLFVBQXRDLG1CQUE2QyxZQUFXO0FBQUEsSUFDdEQsYUFBQSxVQUFLLFdBQUwsbUJBQWEsZUFBYyxjQUFjO0FBQ2xELGVBQVEsVUFBSyxPQUE0QixnQkFBZ0IsTUFBakQsbUJBQW9ELFlBQVc7QUFBQSxJQUFBLE9BQ2xFO0FBQ0wsYUFBTyxLQUFLO0lBQ2Q7QUFBQSxFQUNGO0FBQUEsRUFFUSxxQkFBOEI7QUFDOUIsVUFBQSxRQUFTLEtBQUssT0FBNkI7QUFDakQsV0FBTyxDQUFDLElBQUksUUFBVyxJQUFJLEVBQUUsU0FBUyxLQUFLLEtBQU0sTUFBTSxRQUFRLEtBQUssS0FBSyxNQUFNLFdBQVc7QUFBQSxFQUM1RjtBQUFBLEVBRVEsZUFBcUI7QUFDdEIsU0FBQSxpQkFBaUIsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxhQUFhLFFBQVEsT0FBTyxDQUFDO0FBQ3BGLFNBQUEsaUJBQWlCLDRCQUE0QixFQUFFO0FBQUEsTUFBUSxDQUFDLE1BQzNELEVBQUUsYUFBYSxRQUFRLE9BQU87QUFBQSxJQUFBO0FBQUEsRUFFbEM7QUFBQSxFQUVRLGtCQUF3QjtBQUMxQixRQUFBLENBQUMsS0FBSyxRQUFRO0FBQ2hCO0FBQUEsSUFDRjtBQUNBLFNBQUssZ0JBQWdCLGlCQUFpQixLQUFLLE9BQU8sYUFBYSxVQUFVLENBQUM7QUFDMUUsU0FBSyxnQkFBZ0IsaUJBQWlCLEtBQUssT0FBTyxhQUFhLFVBQVUsQ0FBQztBQUNyRSxTQUFBO0FBQUEsTUFDSDtBQUFBLE1BQ0EsS0FBSyxPQUFPLGFBQWEsa0JBQWtCLEtBQ3pDLEtBQUssT0FBTyxVQUFVLFNBQVMsYUFBYSxLQUMzQyxLQUFLLE9BQU8sVUFBVSxTQUFTLFlBQVksS0FDMUMsS0FBSyxPQUFPLFVBQVUsU0FBUyxZQUFZO0FBQUEsSUFBQTtBQUFBLEVBRW5EO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLUSxtQkFBbUIsT0FBb0I7QUFDeEMsU0FBQSxpQkFBa0IsTUFBTSxPQUEyQixpQkFBaUI7QUFFOUQsZUFBQSxNQUFNLEtBQUssZ0JBQWdCO0FBRWhDLFVBQUEsQ0FBQyxHQUFHLElBQUk7QUFDUCxXQUFBLEtBQUssd0JBQXdCLEVBQUUsb0JBQW9CO0FBQUEsTUFDeEQ7QUFDSSxVQUFBLENBQUMsR0FBRyxNQUFNO0FBR1osV0FBRyxPQUFPO0FBQ1YsWUFBSSxXQUFXO0FBQ1YsYUFBQSxhQUFhLFFBQVEsUUFBUTtBQUFBLFFBQ2xDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxTQUFLLHNCQUFzQjtBQUMzQixTQUFLLGdCQUFnQixrQkFBa0IsQ0FBQyxDQUFDLEtBQUssZUFBZSxNQUFNO0FBQ25FLFNBQUssY0FBYztBQUFBLEVBQ3JCO0FBQUEsRUFFUSx3QkFBOEI7QUFDcEMsVUFBTSxNQUFNLENBQUE7QUFFWixRQUFJLEtBQUssK0JBQStCO0FBQ2xDLFVBQUEsS0FBSyxLQUFLLDZCQUE2QjtBQUFBLElBQzdDO0FBRUksUUFBQSxLQUFLLGVBQWUsUUFBUTtBQUN6QixXQUFBLGVBQWUsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQUEsSUFDbkQ7QUFFTSxVQUFBLGtCQUFrQixJQUFJLEtBQUssR0FBRztBQUNwQyxRQUFJLEtBQUssUUFBUTtBQUNNLDJCQUFBLEtBQUssUUFBUSxvQkFBb0IsZUFBZTtBQUFBLElBQ3ZFO0FBQUEsRUFDRjtBQUFBO0FBQUEsRUFHTyxRQUFjO0FBQ25CLFNBQUssMEJBQTBCO0FBQUEsRUFDakM7QUFBQTtBQUFBLEVBR08sUUFBYzs7QUFDZCxVQUFBLFVBQUssV0FBTCxtQkFBYSxlQUF5QixTQUFTO0FBQ2xEO0FBQUEsSUFDRjtBQUNDLFNBQUssT0FBNkIsUUFBUTtBQUMzQyxTQUFLLDBCQUEwQjtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGtCQUFrRjtBQUN2RixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUSxnQkFBc0I7O0FBQ3ZCLGVBQUEscUJBQUE7QUFBQTtBQUFBLE1BQ0g7QUFBQSxNQUNBLFFBQVEsQ0FBQyxZQUFZLFFBQVEsZ0JBQWdCLFlBQVksS0FBSyxRQUFRO0FBQUEsRUFDMUU7QUFBQSxFQUVtQixTQUF5Qjs7QUFDbkMsV0FBQTtBQUFBO0FBQUE7QUFBQSxJQUVpRixFQUFFO0FBQUEsc0JBQ3hFLEtBQUssbUJBQW1CO0FBQUEsNENBQ0YsS0FBSyxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpREFLYixLQUFLLGtCQUFrQjtBQUFBLGtCQUN0RCxLQUFLLFdBQ0gsa0NBQWtDLGFBQWEsS0FBSyxVQUFVLE9BQU8sQ0FBQyxhQUN0RSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBSU8sS0FBSyxrQkFBa0I7QUFBQTtBQUFBLGNBRTNDLENBQUMsVUFBVSxZQUFZLEVBQUUsVUFBUyxVQUFLLFdBQUwsbUJBQWEsU0FBbUIsSUFDaEU7QUFBQTtBQUFBO0FBQUEsZ0NBSUEsT0FBTztBQUFBO0FBQUEsNENBRXFCLEtBQUssYUFBYTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUluQixLQUFLLGtCQUFrQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWhFO0FBQ0Y7QUFyYmEsb0JBQ1ksU0FBeUI7QUFtQ3pDLGdCQUFBO0FBQUEsRUFETixTQUFTLEVBQUUsV0FBVyxlQUFlLFNBQVMsTUFBTTtBQUFBLEdBbkMxQyxvQkFvQ0osV0FBQSxjQUFBLENBQUE7QUFHNkIsZ0JBQUE7QUFBQSxFQUFuQyxTQUFTLEVBQUUsTUFBTSxTQUFTO0FBQUEsR0F2Q2hCLG9CQXVDeUIsV0FBQSxZQUFBLENBQUE7QUFHQSxnQkFBQTtBQUFBLEVBQW5DLFNBQVMsRUFBRSxTQUFTLE1BQU07QUFBQSxHQTFDaEIsb0JBMEN5QixXQUFBLFFBQUEsQ0FBQTtBQUdlLGdCQUFBO0FBQUEsRUFBbEQsU0FBUyxFQUFFLFNBQVMsTUFBTSxNQUFNLFNBQVM7QUFBQSxHQTdDL0Isb0JBNkN3QyxXQUFBLGNBQUEsQ0FBQTtBQUtmLGdCQUFBO0FBQUEsRUFBbkMsU0FBUyxFQUFFLFNBQVMsTUFBTTtBQUFBLEdBbERoQixvQkFrRHlCLFdBQUEsU0FBQSxDQUFBO0FBRzBDLGdCQUFBO0FBQUEsRUFBN0UsU0FBUyxFQUFFLFdBQVcsZ0JBQWdCLFNBQVMsTUFBTSxNQUFNLFNBQVM7QUFBQSxHQXJEMUQsb0JBcURtRSxXQUFBLGVBQUEsQ0FBQTtBQUdFLGdCQUFBO0FBQUEsRUFBL0UsU0FBUyxFQUFFLFdBQVcsa0JBQWtCLFNBQVMsTUFBTSxNQUFNLFNBQVM7QUFBQSxHQXhENUQsb0JBd0RxRSxXQUFBLGlCQUFBLENBQUE7QUFJL0QsZ0JBQUE7QUFBQSxFQUFoQixNQUFNO0FBQUEsR0E1REksb0JBNERNLFdBQUEsa0JBQUEsQ0FBQTtBQU1BLGdCQUFBO0FBQUEsRUFBaEIsTUFBTTtBQUFBLEdBbEVJLG9CQWtFTSxXQUFBLFVBQUEsQ0FBQTtBQUdBLGdCQUFBO0FBQUEsRUFBaEIsTUFBTTtBQUFBLEdBckVJLG9CQXFFTSxXQUFBLFVBQUEsQ0FBQTtBQXJFTixzQkFBTixnQkFBQTtBQUFBLEVBRk4sY0FBYyxnQkFBZ0I7QUFBQSxFQUM5QixVQUFVO0FBQUEsR0FDRSxtQkFBQTsifQ==
@@ -2,7 +2,6 @@ import { SbbActionBaseElement } from '../../core/base-elements.js';
2
2
  import { SbbHorizontalFrom } from '../../core/interfaces.js';
3
3
  import { AbstractConstructor } from '../../core/mixins.js';
4
4
  import { SbbIconNameMixinType } from '../../icon.js';
5
-
6
5
  export declare class SbbHeaderActionCommonElementMixinType implements Partial<SbbIconNameMixinType> {
7
6
  expandFrom: SbbHorizontalFrom;
8
7
  iconName?: string;
@@ -29,6 +29,8 @@ const style = css`/**
29
29
  }
30
30
 
31
31
  :host {
32
+ display: inline-block;
33
+ outline: none !important;
32
34
  --sbb-header-action-padding-inline: var(--sbb-spacing-fixed-5x);
33
35
  --sbb-header-action-color: var(--sbb-color-black);
34
36
  --sbb-header-action-background-color: transparent;
@@ -44,8 +46,6 @@ const style = css`/**
44
46
  --sbb-header-action-translate-y: 0;
45
47
  --sbb-header-action-gap: var(--sbb-spacing-fixed-2x);
46
48
  --sbb-header-first-item-margin-inline-start: calc(-1 * var(--sbb-header-action-padding-inline));
47
- display: inline-block;
48
- outline: none !important;
49
49
  }
50
50
  @media (forced-colors: active) {
51
51
  :host {
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, TemplateResult } from 'lit';
2
-
3
2
  declare const SbbHeaderElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
4
3
  /**
5
4
  * It displays a header section for the page.
@@ -1,5 +1,4 @@
1
1
  import { SbbButtonBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbHeaderButtonElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbHeaderActionCommonElementMixinType> & typeof SbbButtonBaseElement;
4
3
  /**
5
4
  * It displays a button element that can be used in the `sbb-header` component.
@@ -1,5 +1,4 @@
1
1
  import { SbbLinkBaseElement } from '../../core/base-elements.js';
2
-
3
2
  declare const SbbHeaderLinkElement_base: import('../../core/mixins.js').AbstractConstructor<import('../common.js').SbbHeaderActionCommonElementMixinType> & typeof SbbLinkBaseElement;
4
3
  /**
5
4
  * It displays a link element that can be used in the `sbb-header` component.
@@ -31,6 +31,8 @@ const style = css`/**
31
31
  }
32
32
 
33
33
  :host {
34
+ display: block;
35
+ height: var(--sbb-header-height);
34
36
  --sbb-logo-height: 1rem;
35
37
  --sbb-header-position: fixed;
36
38
  --sbb-header-transition-duration: var(
@@ -38,8 +40,6 @@ const style = css`/**
38
40
  var(--sbb-animation-duration-6x)
39
41
  );
40
42
  --sbb-header-inset-inline-end: 0;
41
- display: block;
42
- height: var(--sbb-header-height);
43
43
  }
44
44
  @media (min-width: calc(52.5rem)) {
45
45
  :host {
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
-
3
2
  /**
4
3
  * @cssprop [--sbb-icon-svg-width=auto] - Can be used to set a custom width.
5
4
  * @cssprop [--sbb-icon-svg-height=auto] - Can be used to set a custom height.
@@ -1,6 +1,5 @@
1
1
  import { LitElement, TemplateResult } from 'lit';
2
2
  import { AbstractConstructor } from '../core/mixins.js';
3
-
4
3
  export declare class SbbIconNameMixinType {
5
4
  iconName?: string;
6
5
  protected renderIconSlot(classname?: string): TemplateResult;
@@ -1,6 +1,5 @@
1
- import { PropertyValues } from 'lit';
1
+ import { PropertyValues, TemplateResult } from 'lit';
2
2
  import { SbbIconBase } from './icon-base.js';
3
-
4
3
  /**
5
4
  * It displays an icon loaded from a registered namespace.
6
5
  */
@@ -12,9 +11,17 @@ export declare class SbbIconElement extends SbbIconBase {
12
11
  */
13
12
  name: string;
14
13
  private _defaultAriaLabel;
14
+ /**
15
+ * The sbb-angular library has a sbb-icon component as well. In order to provide
16
+ * compatibility with it (as some icons are used internally inside the other sbb-angular
17
+ * components) we need to check whether the attribute svgicon is used.
18
+ */
19
+ private _sbbAngularCompatibility;
15
20
  protected fetchSvgIcon(namespace: string, name: string): Promise<string>;
16
21
  protected willUpdate(changedProperties: PropertyValues<this>): void;
22
+ attributeChangedCallback(name: string, _old: string | null, value: string | null): void;
17
23
  protected firstUpdated(changedProperties: PropertyValues<this>): void;
24
+ protected render(): TemplateResult;
18
25
  }
19
26
  declare global {
20
27
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC7C;;;;OAIG;IACiC,IAAI,EAAG,MAAM,CAAC;IAElD,OAAO,CAAC,iBAAiB,CAAM;cAEN,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBpE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;CAO/E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC7C;;;;OAIG;IACiC,IAAI,EAAG,MAAM,CAAC;IAElD,OAAO,CAAC,iBAAiB,CAAM;IAE/B;;;;OAIG;IACM,OAAO,CAAC,wBAAwB,CAAS;cAEzB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBpE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQ3D,MAAM,IAAI,cAAc;CAG5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
@@ -1,5 +1,5 @@
1
- import { state, property, customElement } from "lit/decorators.js";
2
1
  import { isServer, css, LitElement, html, nothing } from "lit";
2
+ import { state, property, customElement } from "lit/decorators.js";
3
3
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
4
4
  import { until } from "lit/directives/until.js";
5
5
  import { hostAttributes } from "./core/decorators.js";
@@ -240,6 +240,7 @@ let SbbIconElement = class extends SbbIconBase {
240
240
  constructor() {
241
241
  super(...arguments);
242
242
  this._defaultAriaLabel = "";
243
+ this._sbbAngularCompatibility = false;
243
244
  }
244
245
  async fetchSvgIcon(namespace, name) {
245
246
  if (this.getAttribute("aria-label") === this._defaultAriaLabel) {
@@ -257,16 +258,29 @@ let SbbIconElement = class extends SbbIconBase {
257
258
  this.loadSvgIcon(this.name);
258
259
  }
259
260
  }
261
+ attributeChangedCallback(name, _old, value) {
262
+ if (name === "svgicon") {
263
+ this._sbbAngularCompatibility = !!value;
264
+ } else {
265
+ super.attributeChangedCallback(name, _old, value);
266
+ }
267
+ }
260
268
  firstUpdated(changedProperties) {
261
269
  super.firstUpdated(changedProperties);
262
270
  if (!this.hasAttribute("aria-hidden")) {
263
271
  this.setAttribute("aria-hidden", "true");
264
272
  }
265
273
  }
274
+ render() {
275
+ return this._sbbAngularCompatibility ? html`<slot></slot>` : super.render();
276
+ }
266
277
  };
267
278
  __decorateClass$1([
268
279
  property({ reflect: true })
269
280
  ], SbbIconElement.prototype, "name", 2);
281
+ __decorateClass$1([
282
+ state()
283
+ ], SbbIconElement.prototype, "_sbbAngularCompatibility", 2);
270
284
  SbbIconElement = __decorateClass$1([
271
285
  customElement("sbb-icon")
272
286
  ], SbbIconElement);
@@ -302,4 +316,4 @@ export {
302
316
  isValid,
303
317
  validateContent
304
318
  };
305
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXRTdmdDb250ZW50IH0gZnJvbSAnLi9pY29uLXJlcXVlc3QuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vaWNvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy13aWR0aD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSB3aWR0aC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy1oZWlnaHQ9YXV0b10gLSBDYW4gYmUgdXNlZCB0byBzZXQgYSBjdXN0b20gaGVpZ2h0LlxuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1uYW1lc3BhY2UnOiBTYmJJY29uQmFzZS5fZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiSWNvbkJhc2UgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kZWZhdWx0TmFtZXNwYWNlID0gJ2RlZmF1bHQnO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3N2Z05hbWVzcGFjZSA9IFNiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9zdmdJY29uPzogUHJvbWlzZTxEaXJlY3RpdmVSZXN1bHQ8dHlwZW9mIFVuc2FmZUhUTUxEaXJlY3RpdmU+PjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ25vLXNhbml0aXplJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbm9TYW5pdGl6ZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkU3ZnSWNvbihpY29uTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gdGhpcy5fc3BsaXRJY29uTmFtZShpY29uTmFtZSk7XG4gICAgdGhpcy5fc3ZnTmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLW5hbWVzcGFjZScsIHRoaXMuX3N2Z05hbWVzcGFjZSk7XG5cbiAgICBjb25zdCBzdmdJY29uID0gdGhpcy5mZXRjaFN2Z0ljb24odGhpcy5fc3ZnTmFtZXNwYWNlLCBuYW1lKTtcbiAgICB0aGlzLl9zdmdJY29uID0gc3ZnSWNvbi50aGVuKCh2KSA9PiB1bnNhZmVIVE1MKHYpKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAhKGF3YWl0IHN2Z0ljb24pKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0U3ZnQ29udGVudChuYW1lc3BhY2UsIG5hbWUsICF0aGlzLm5vU2FuaXRpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3BsaXRJY29uTmFtZShpY29uTmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuIFsnJywgJyddO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0cyA9IGljb25OYW1lLnNwbGl0KCc6Jyk7XG4gICAgc3dpdGNoIChwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlIGlmIGVtcHR5LlxuICAgICAgICByZXR1cm4gW1NiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsIHRoaXMuZ2V0QXR0cmlidXRlKCdyb2xlJykgPz8gJ2ltZycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItaWNvbi1pbm5lclwiXG4gICAgICA+JHt1bnRpbChcbiAgICAgICAgdGhpcy5fc3ZnSWNvbixcbiAgICAgICAgLy8gVG8gcmVzZXJ2ZSBzcGFjZSwgd2UgbmVlZCBhbiBlbXB0eSBzdmcgdG8gYXBwbHkgZGltZW5zaW9uIHRvLlxuICAgICAgICBodG1sYDxzdmcgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiPjwvc3ZnPmAsXG4gICAgICApfTwvc3BhblxuICAgID5gO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJJY29uQmFzZSB9IGZyb20gJy4vaWNvbi1iYXNlLmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpY29uIGxvYWRlZCBmcm9tIGEgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItaWNvbicpXG5leHBvcnQgY2xhc3MgU2JiSWNvbkVsZW1lbnQgZXh0ZW5kcyBTYmJJY29uQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvdmlkZWQgbmFtZSBjb25zaXN0aW5nIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHRoZSBuYW1lIG9mIHRoZSBpY29uLlxuICAgKiBJZiB0aGUgbmFtZXNwYWNlIGlzIG1pc3NpbmcsIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBcInNiYlwiIHdpbGwgYmUgdXNlZC5cbiAgICogRS5nLiBgbmFtZWAgKHdpbGwgdXNlIFwic2JiXCIgYXMgbmFtZXNwYWNlKSBvciBgbmFtZXNwYWNlOm5hbWVgLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICBwcml2YXRlIF9kZWZhdWx0QXJpYUxhYmVsID0gJyc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBJZiB0aGUgaWNvbiBpcyBjaGFuZ2luZywgYW5kIHdlIHdlcmUgdXNpbmcgdGhlIGRlZmF1bHRBcmlhTGFiZWwsIHJlc2V0IGl0XG4gICAgaWYgKHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgPT09IHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmYXVsdEFyaWFMYWJlbCA9IGBJY29uICR7bmFtZS5yZXBsYWNlKC8tL2csICcgJyl9YDtcblxuICAgIC8vIGdlbmVyYXRlIGEgZGVmYXVsdCBsYWJlbCBpbiBjYXNlIHVzZXIgZG9lcyBub3QgcHJvdmlkZSB0aGVpciBvd25cbiAgICAvLyBhbmQgYXJpYS1oaWRkZW4gaXMgc2V0IHRvIFwiZmFsc2VcIlxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSA9PT0gJ2ZhbHNlJyAmJiAhdGhpcy5oYXNBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSAmJiBuYW1lKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5mZXRjaFN2Z0ljb24obmFtZXNwYWNlLCBuYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmFtZScpKSB7XG4gICAgICB0aGlzLmxvYWRTdmdJY29uKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pY29uJzogU2JiSWNvbkVsZW1lbnQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgJy4vaWNvbi5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkljb25OYW1lTWl4aW5UeXBlIHtcbiAgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVuZGVySWNvblNsb3QoY2xhc3NuYW1lPzogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQ7XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGFuIGljb25OYW1lIHByb3BlcnR5IGFuZCBwcm92aWRlcyBhIHRlbXBsYXRlIGZvciB0aGUgaWNvbiBzbG90LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiSWNvbk5hbWVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkljb25OYW1lTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJJY29uTmFtZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJJY29uTmFtZU1peGluVHlwZT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIG5hbWUgd2Ugd2FudCB0byB1c2UsIGNob29zZSBmcm9tIHRoZSBzbWFsbCBpY29uIHZhcmlhbnRzXG4gICAgICogZnJvbSB0aGUgdWktaWNvbnMgY2F0ZWdvcnkgZnJvbSBoZXJlXG4gICAgICogaHR0cHM6Ly9pY29ucy5hcHAuc2JiLmNoLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ljb24tbmFtZScsIHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIHJlbmRlckljb25TbG90KGNsYXNzbmFtZT86IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2xvdCBuYW1lPVwiaWNvblwiPlxuICAgICAgICAgICR7dGhpcy5pY29uTmFtZVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPSR7dGhpcy5pY29uTmFtZX0gY2xhc3M9JHtjbGFzc25hbWUgfHwgbm90aGluZ30+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIGA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkljb25OYW1lRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNLFFBQVEsQ0FBQyxRQUE0QixPQUFPLFFBQVE7QUFNN0MsTUFBQSxVQUFVLENBQUMsUUFBOEI7QUFDaEQsTUFBQSxJQUFJLGFBQWEsR0FBRztBQUV0QixRQUFJLElBQUksU0FBUyxZQUFZLE1BQU0sVUFBVTtBQUNwQyxhQUFBO0FBQUEsSUFDVDtBQUdBLGFBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSztBQUM5QyxZQUFNLE1BQU0sSUFBSSxXQUFXLENBQUMsRUFBRTtBQUMxQixVQUFBLE1BQU0sR0FBRyxLQUFLLElBQUksY0FBYyxRQUFRLElBQUksTUFBTSxHQUFHO0FBQ2hELGVBQUE7QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUVBLGFBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSztBQUM5QyxVQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFRLEdBQUc7QUFDL0IsZUFBQTtBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFDVDtBQU9PLE1BQU0sa0JBQWtCLENBQzdCLFlBQ0EsV0FBVyxNQUNYLGlCQUFpQixVQUNOO0FBQ0wsUUFBQSxNQUFNLFNBQVMsY0FBYyxLQUFLO0FBQ3hDLE1BQUksWUFBWTtBQUVoQixXQUFTLElBQUksSUFBSSxXQUFXLFNBQVMsR0FB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
319
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXRTdmdDb250ZW50IH0gZnJvbSAnLi9pY29uLXJlcXVlc3QuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vaWNvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy13aWR0aD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSB3aWR0aC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy1oZWlnaHQ9YXV0b10gLSBDYW4gYmUgdXNlZCB0byBzZXQgYSBjdXN0b20gaGVpZ2h0LlxuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1uYW1lc3BhY2UnOiBTYmJJY29uQmFzZS5fZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiSWNvbkJhc2UgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kZWZhdWx0TmFtZXNwYWNlID0gJ2RlZmF1bHQnO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3N2Z05hbWVzcGFjZSA9IFNiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9zdmdJY29uPzogUHJvbWlzZTxEaXJlY3RpdmVSZXN1bHQ8dHlwZW9mIFVuc2FmZUhUTUxEaXJlY3RpdmU+PjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ25vLXNhbml0aXplJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbm9TYW5pdGl6ZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkU3ZnSWNvbihpY29uTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gdGhpcy5fc3BsaXRJY29uTmFtZShpY29uTmFtZSk7XG4gICAgdGhpcy5fc3ZnTmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLW5hbWVzcGFjZScsIHRoaXMuX3N2Z05hbWVzcGFjZSk7XG5cbiAgICBjb25zdCBzdmdJY29uID0gdGhpcy5mZXRjaFN2Z0ljb24odGhpcy5fc3ZnTmFtZXNwYWNlLCBuYW1lKTtcbiAgICB0aGlzLl9zdmdJY29uID0gc3ZnSWNvbi50aGVuKCh2KSA9PiB1bnNhZmVIVE1MKHYpKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAhKGF3YWl0IHN2Z0ljb24pKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0U3ZnQ29udGVudChuYW1lc3BhY2UsIG5hbWUsICF0aGlzLm5vU2FuaXRpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3BsaXRJY29uTmFtZShpY29uTmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuIFsnJywgJyddO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0cyA9IGljb25OYW1lLnNwbGl0KCc6Jyk7XG4gICAgc3dpdGNoIChwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlIGlmIGVtcHR5LlxuICAgICAgICByZXR1cm4gW1NiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsIHRoaXMuZ2V0QXR0cmlidXRlKCdyb2xlJykgPz8gJ2ltZycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItaWNvbi1pbm5lclwiXG4gICAgICA+JHt1bnRpbChcbiAgICAgICAgdGhpcy5fc3ZnSWNvbixcbiAgICAgICAgLy8gVG8gcmVzZXJ2ZSBzcGFjZSwgd2UgbmVlZCBhbiBlbXB0eSBzdmcgdG8gYXBwbHkgZGltZW5zaW9uIHRvLlxuICAgICAgICBodG1sYDxzdmcgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiPjwvc3ZnPmAsXG4gICAgICApfTwvc3BhblxuICAgID5gO1xuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiSWNvbkJhc2UgfSBmcm9tICcuL2ljb24tYmFzZS5qcyc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaWNvbiBsb2FkZWQgZnJvbSBhIHJlZ2lzdGVyZWQgbmFtZXNwYWNlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWljb24nKVxuZXhwb3J0IGNsYXNzIFNiYkljb25FbGVtZW50IGV4dGVuZHMgU2JiSWNvbkJhc2Uge1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVkIG5hbWUgY29uc2lzdGluZyBvZiB0aGUgbmFtZXNwYWNlIGFuZCB0aGUgbmFtZSBvZiB0aGUgaWNvbi5cbiAgICogSWYgdGhlIG5hbWVzcGFjZSBpcyBtaXNzaW5nLCB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgXCJzYmJcIiB3aWxsIGJlIHVzZWQuXG4gICAqIEUuZy4gYG5hbWVgICh3aWxsIHVzZSBcInNiYlwiIGFzIG5hbWVzcGFjZSkgb3IgYG5hbWVzcGFjZTpuYW1lYC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdEFyaWFMYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgc2JiLWFuZ3VsYXIgbGlicmFyeSBoYXMgYSBzYmItaWNvbiBjb21wb25lbnQgYXMgd2VsbC4gSW4gb3JkZXIgdG8gcHJvdmlkZVxuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggaXQgKGFzIHNvbWUgaWNvbnMgYXJlIHVzZWQgaW50ZXJuYWxseSBpbnNpZGUgdGhlIG90aGVyIHNiYi1hbmd1bGFyXG4gICAqIGNvbXBvbmVudHMpIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgYXR0cmlidXRlIHN2Z2ljb24gaXMgdXNlZC5cbiAgICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3NiYkFuZ3VsYXJDb21wYXRpYmlsaXR5ID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBJZiB0aGUgaWNvbiBpcyBjaGFuZ2luZywgYW5kIHdlIHdlcmUgdXNpbmcgdGhlIGRlZmF1bHRBcmlhTGFiZWwsIHJlc2V0IGl0XG4gICAgaWYgKHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgPT09IHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmYXVsdEFyaWFMYWJlbCA9IGBJY29uICR7bmFtZS5yZXBsYWNlKC8tL2csICcgJyl9YDtcblxuICAgIC8vIGdlbmVyYXRlIGEgZGVmYXVsdCBsYWJlbCBpbiBjYXNlIHVzZXIgZG9lcyBub3QgcHJvdmlkZSB0aGVpciBvd25cbiAgICAvLyBhbmQgYXJpYS1oaWRkZW4gaXMgc2V0IHRvIFwiZmFsc2VcIlxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSA9PT0gJ2ZhbHNlJyAmJiAhdGhpcy5oYXNBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSAmJiBuYW1lKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5mZXRjaFN2Z0ljb24obmFtZXNwYWNlLCBuYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmFtZScpKSB7XG4gICAgICB0aGlzLmxvYWRTdmdJY29uKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgX29sZDogc3RyaW5nIHwgbnVsbCxcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgPT09ICdzdmdpY29uJykge1xuICAgICAgdGhpcy5fc2JiQW5ndWxhckNvbXBhdGliaWxpdHkgPSAhIXZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgX29sZCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5oYXNBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIHRoaXMuX3NiYkFuZ3VsYXJDb21wYXRpYmlsaXR5ID8gaHRtbGA8c2xvdD48L3Nsb3Q+YCA6IHN1cGVyLnJlbmRlcigpO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaWNvbic6IFNiYkljb25FbGVtZW50O1xuICB9XG59XG4iLCJpbXBvcnQgeyBodG1sLCB0eXBlIExpdEVsZW1lbnQsIG5vdGhpbmcsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcblxuaW1wb3J0ICcuL2ljb24uanMnO1xuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBTYmJJY29uTmFtZU1peGluVHlwZSB7XG4gIHB1YmxpYyBpY29uTmFtZT86IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlbmRlckljb25TbG90KGNsYXNzbmFtZT86IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0O1xufVxuXG4vKipcbiAqIEVuaGFuY2UgeW91ciBjb21wb25lbnQgd2l0aCBhbiBpY29uTmFtZSBwcm9wZXJ0eSBhbmQgcHJvdmlkZXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIGljb24gc2xvdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkljb25OYW1lTWl4aW4gPSA8VCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8TGl0RWxlbWVudD4+KFxuICBzdXBlckNsYXNzOiBULFxuKTogQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJJY29uTmFtZU1peGluVHlwZT4gJiBUID0+IHtcbiAgYWJzdHJhY3QgY2xhc3MgU2JiSWNvbk5hbWVFbGVtZW50IGV4dGVuZHMgc3VwZXJDbGFzcyBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiSWNvbk5hbWVNaXhpblR5cGU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgaWNvbiBuYW1lIHdlIHdhbnQgdG8gdXNlLCBjaG9vc2UgZnJvbSB0aGUgc21hbGwgaWNvbiB2YXJpYW50c1xuICAgICAqIGZyb20gdGhlIHVpLWljb25zIGNhdGVnb3J5IGZyb20gaGVyZVxuICAgICAqIGh0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdpY29uLW5hbWUnLCByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBpY29uTmFtZT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCByZW5kZXJJY29uU2xvdChjbGFzc25hbWU/OiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNsb3QgbmFtZT1cImljb25cIj5cbiAgICAgICAgICAke3RoaXMuaWNvbk5hbWVcbiAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb24gbmFtZT0ke3RoaXMuaWNvbk5hbWV9IGNsYXNzPSR7Y2xhc3NuYW1lIHx8IG5vdGhpbmd9Pjwvc2JiLWljb24+YFxuICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICA8L3Nsb3Q+XG4gICAgICBgO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTYmJJY29uTmFtZUVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkljb25OYW1lTWl4aW5UeXBlPiAmIFQ7XG59O1xuIl0sIm5hbWVzIjpbIl9fZGVjb3JhdGVDbGFzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTSxRQUFRLENBQUMsUUFBNEIsT0FBTyxRQUFRO0FBTTdDLE1BQUEsVUFBVSxDQUFDLFFBQThCO0FBQ2hELE1BQUEsSUFBSSxhQUFhLEdBQUc7QUFFdEIsUUFBSSxJQUFJLFNBQVMsWUFBWSxNQUFNLFVBQVU7QUFDcEMsYUFBQTtBQUFBLElBQ1Q7QUFHQSxhQUFTLElBQUksR0FBRyxJQUFJLElBQUksV0FBVyxRQUFRLEtBQUs7QUFDOUMsWUFBTSxNQUFNLElBQUksV0FBVyxDQUFDLEVBQUU7QUFDMUIsVUFBQSxNQUFNLEdBQUcsS0FBSyxJQUFJLGNBQWMsUUFBUSxJQUFJLE1BQU0sR0FBRztBQUNoRCxlQUFBO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxhQUFTLElBQUksR0FBRyxJQUFJLElBQUksV0FBVyxRQUFRLEtBQUs7QUFDOUMsVUFBSSxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBUSxHQUFHO0FBQy9CLGVBQUE7QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDTyxTQUFBO0FBQ1Q7QUFPTyxNQUFNLGtCQUFrQixDQUM3QixZQUNBLFdBQVcsTUFDWCxpQkFBaUIsVUFDTjtBQUNMLFFBQUEsTUFBTSxTQUFTLGNBQWMsS0FBSztBQUN4QyxNQUFJLFlBQVk7QUFFaEIsV0FBUyxJQUFJLElBQUksV0FBVyxTQUFTLEdBQUcsS0FBSyxHQUFHLEtBQUs7QUFDbkQsUUFBSSxJQUFJLFdBQVcsQ0FBQyxFQUFFLFNBQVMsa0JBQWtCLE9BQU87QUFDdEQsVUFBSSxZQUFZLElBQUksV0FBVyxDQUFDLENBQUM7QUFBQSxJQUNuQztB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
@@ -1,5 +1,4 @@
1
1
  import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
-
3
2
  export interface InterfaceImageAttributesSizesConfig {
4
3
  breakpoints: InterfaceImageAttributesSizesConfigBreakpoint[];
5
4
  }