desy-angular 12.0.0 → 13.0.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 (246) hide show
  1. package/esm2022/lib/desy-angular.module.mjs +10 -9
  2. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +5 -4
  3. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +8 -5
  4. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +11 -6
  5. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +3 -3
  6. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +6 -5
  7. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +5 -4
  8. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +4 -3
  9. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +15 -15
  10. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +1 -1
  11. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +1 -1
  12. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +6 -5
  13. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +11 -10
  14. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +10 -9
  15. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +190 -0
  16. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +34 -0
  17. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +4 -3
  18. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +5 -4
  19. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +8 -7
  20. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +4 -3
  21. package/esm2022/lib/desy-forms/components/input/input.component.mjs +8 -7
  22. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +11 -10
  23. package/esm2022/lib/desy-forms/components/label/label.component.mjs +4 -3
  24. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +6 -5
  25. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +11 -10
  26. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +7 -6
  27. package/esm2022/lib/desy-forms/components/select/select.component.mjs +8 -7
  28. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +8 -7
  29. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +4 -3
  30. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +13 -12
  31. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +5 -4
  32. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +12 -9
  33. package/esm2022/lib/desy-forms/desy-forms.module.mjs +40 -24
  34. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +1 -1
  35. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +1 -1
  36. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +1 -1
  37. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +1 -1
  38. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +1 -1
  39. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +1 -1
  40. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +1 -1
  41. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +1 -1
  42. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +1 -1
  43. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +4 -3
  44. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +15 -14
  45. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +1 -1
  46. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +1 -1
  47. package/esm2022/lib/desy-modals/services/dialog.service.mjs +2 -2
  48. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  49. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +5 -4
  50. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +4 -2
  51. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +6 -5
  52. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +246 -2
  53. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -3
  54. package/esm2022/lib/desy-nav/components/header/header.component.mjs +15 -14
  55. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +1 -1
  56. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +3 -3
  57. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +3 -3
  58. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +6 -5
  59. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +5 -4
  60. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +16 -0
  61. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +7 -3
  62. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +8 -5
  63. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +6 -5
  64. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +3 -3
  65. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +280 -31
  66. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +3 -3
  67. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +3 -3
  68. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +6 -5
  69. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +3 -3
  70. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +281 -32
  71. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +3 -3
  72. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -5
  73. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +7 -6
  74. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +8 -3
  75. package/esm2022/lib/desy-nav/desy-nav.module.mjs +6 -5
  76. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +1 -1
  77. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +1 -1
  78. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +1 -1
  79. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +2 -1
  80. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +1 -1
  81. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +1 -1
  82. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +1 -1
  83. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +1 -1
  84. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +1 -1
  85. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +1 -1
  86. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +1 -1
  87. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +1 -1
  88. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +1 -1
  89. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +1 -1
  90. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +1 -1
  91. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +1 -1
  92. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +1 -1
  93. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +1 -1
  94. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +1 -1
  95. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +1 -1
  96. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +22 -22
  97. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +2 -2
  98. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +16 -8
  99. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -5
  100. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +16 -16
  101. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +12 -7
  102. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +1 -1
  103. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +1 -1
  104. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +279 -30
  105. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +5 -4
  106. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +4 -3
  107. package/esm2022/lib/desy-views/components/card/card.component.mjs +4 -3
  108. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +13 -4
  109. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +4 -3
  110. package/esm2022/lib/desy-views/components/details/details.component.mjs +4 -3
  111. package/esm2022/lib/desy-views/components/item/item.component.mjs +11 -10
  112. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +280 -32
  113. package/esm2022/lib/desy-views/components/status/status.component.mjs +283 -32
  114. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +286 -37
  115. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +284 -35
  116. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +281 -33
  117. package/esm2022/lib/desy-views/desy-views.module.mjs +27 -32
  118. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +1 -1
  119. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +1 -1
  120. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +1 -1
  121. package/esm2022/lib/desy-views/interfaces/status-data.mjs +1 -1
  122. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +1 -1
  123. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +1 -1
  124. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +1 -1
  125. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +78 -0
  126. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +124 -2
  127. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +126 -2
  128. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +126 -2
  129. package/esm2022/lib/shared/components/index.mjs +4 -3
  130. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +329 -0
  131. package/esm2022/lib/shared/directives/accessibility-directive.mjs +52 -0
  132. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +21 -4
  133. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +2 -0
  134. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +2 -2
  135. package/esm2022/lib/shared/shared.module.mjs +12 -7
  136. package/esm2022/lib/shared/sharedExternal.module.mjs +24 -0
  137. package/esm2022/lib/shared/utils/search-utils.mjs +5 -1
  138. package/esm2022/public-api.mjs +5 -2
  139. package/fesm2022/desy-angular.mjs +4273 -965
  140. package/fesm2022/desy-angular.mjs.map +1 -1
  141. package/lib/desy-angular.module.d.ts +2 -1
  142. package/lib/desy-buttons/components/button-loader/button-loader.component.d.ts +2 -0
  143. package/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.d.ts +3 -3
  144. package/lib/desy-buttons/desy-buttons.module.d.ts +3 -3
  145. package/lib/desy-buttons/interfaces/listbox-item-data.d.ts +2 -2
  146. package/lib/desy-commons/interfaces/title-data.d.ts +2 -2
  147. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +31 -0
  148. package/lib/desy-forms/components/datepicker/datepicker.pipe.d.ts +7 -0
  149. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +5 -5
  150. package/lib/desy-forms/components/tree/tree.component.d.ts +5 -4
  151. package/lib/desy-forms/desy-forms.module.d.ts +10 -6
  152. package/lib/desy-forms/interfaces/error-message-data.d.ts +2 -2
  153. package/lib/desy-forms/interfaces/fieldset-data.d.ts +2 -2
  154. package/lib/desy-forms/interfaces/hint-data.d.ts +2 -2
  155. package/lib/desy-forms/interfaces/item-checkbox-data.d.ts +3 -3
  156. package/lib/desy-forms/interfaces/item-date-input-data.d.ts +3 -3
  157. package/lib/desy-forms/interfaces/item-input-group-data.d.ts +3 -3
  158. package/lib/desy-forms/interfaces/item-radio-data.d.ts +3 -3
  159. package/lib/desy-forms/interfaces/label-data.d.ts +2 -2
  160. package/lib/desy-forms/interfaces/select-item-data.d.ts +2 -2
  161. package/lib/desy-modals/components/modal/modal.component.d.ts +8 -8
  162. package/lib/desy-modals/interfaces/dialog-options.d.ts +2 -2
  163. package/lib/desy-modals/interfaces/modal-options.d.ts +4 -4
  164. package/lib/desy-modals/services/dialog.service.d.ts +1 -1
  165. package/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.d.ts +2 -1
  166. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +61 -0
  167. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +1 -1
  168. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +1 -1
  169. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +1 -1
  170. package/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.d.ts +8 -0
  171. package/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.d.ts +4 -2
  172. package/lib/desy-nav/components/links-list/links-list.component.d.ts +2 -1
  173. package/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.d.ts +2 -2
  174. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +75 -13
  175. package/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.d.ts +3 -3
  176. package/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.d.ts +3 -3
  177. package/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.d.ts +3 -3
  178. package/lib/desy-nav/components/menubar/menubar.component.d.ts +75 -13
  179. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +2 -2
  180. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -2
  181. package/lib/desy-nav/desy-nav.module.d.ts +29 -28
  182. package/lib/desy-nav/interfaces/breadcrumbs.data.d.ts +2 -2
  183. package/lib/desy-nav/interfaces/error-summary-data.d.ts +2 -2
  184. package/lib/desy-nav/interfaces/footer-data.d.ts +3 -3
  185. package/lib/desy-nav/interfaces/footer-logo.d.ts +1 -0
  186. package/lib/desy-nav/interfaces/header-dropdown-data.d.ts +2 -2
  187. package/lib/desy-nav/interfaces/header-mobile-text-data.d.ts +2 -2
  188. package/lib/desy-nav/interfaces/header-navigation-item-data.d.ts +2 -2
  189. package/lib/desy-nav/interfaces/header-subnav-data.d.ts +2 -2
  190. package/lib/desy-nav/interfaces/menu-horizontal-item-data.d.ts +2 -2
  191. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.d.ts +2 -2
  192. package/lib/desy-nav/interfaces/menu-navigation-item-sub-item.d.ts +2 -2
  193. package/lib/desy-nav/interfaces/menu-navigation.d.ts +2 -2
  194. package/lib/desy-nav/interfaces/menu-vertical-items-data.d.ts +2 -2
  195. package/lib/desy-nav/interfaces/menu-vertical-sub-data.d.ts +2 -2
  196. package/lib/desy-nav/interfaces/menu-vertical-sub-items-data.d.ts +2 -2
  197. package/lib/desy-nav/interfaces/menubar-item-sub.d.ts +2 -2
  198. package/lib/desy-nav/interfaces/menubar-item.d.ts +3 -3
  199. package/lib/desy-nav/interfaces/nav-item.data.d.ts +2 -2
  200. package/lib/desy-nav/interfaces/notification-items-data.d.ts +2 -2
  201. package/lib/desy-nav/interfaces/notification-options.d.ts +4 -4
  202. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +4 -4
  203. package/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.d.ts +3 -3
  204. package/lib/desy-pagination/desy-pagination.module.d.ts +3 -1
  205. package/lib/desy-tables/components/table/table.component.d.ts +3 -0
  206. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +1 -1
  207. package/lib/desy-tables/directives/focus-clicked-cell.directive.d.ts +1 -0
  208. package/lib/desy-tables/interfaces/cell-data.d.ts +2 -2
  209. package/lib/desy-tables/interfaces/wrapper-data.d.ts +2 -2
  210. package/lib/desy-views/components/accordion/accordion.component.d.ts +75 -13
  211. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +5 -1
  212. package/lib/desy-views/components/item/item.component.d.ts +7 -7
  213. package/lib/desy-views/components/media-object/media-object.component.d.ts +75 -13
  214. package/lib/desy-views/components/status/status.component.d.ts +75 -13
  215. package/lib/desy-views/components/status-item/status-item.component.d.ts +77 -15
  216. package/lib/desy-views/components/tabs/tabs.component.d.ts +77 -15
  217. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +75 -13
  218. package/lib/desy-views/desy-views.module.d.ts +30 -31
  219. package/lib/desy-views/interfaces/accordion-item.data.d.ts +2 -2
  220. package/lib/desy-views/interfaces/alert-options.d.ts +2 -2
  221. package/lib/desy-views/interfaces/description-item.data.d.ts +2 -2
  222. package/lib/desy-views/interfaces/status-data.d.ts +2 -2
  223. package/lib/desy-views/interfaces/tabs-items-data.d.ts +2 -2
  224. package/lib/desy-views/interfaces/tabs-panel-data.d.ts +2 -2
  225. package/lib/desy-views/interfaces/term-definition.data.d.ts +2 -2
  226. package/lib/shared/components/accessibility/accessibility-attributes.d.ts +1 -0
  227. package/lib/shared/components/accessibility/accessibility.component.d.ts +78 -17
  228. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +79 -16
  229. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +79 -16
  230. package/lib/shared/components/index.d.ts +3 -2
  231. package/lib/shared/components/spinner/spinner.component.d.ts +86 -0
  232. package/lib/shared/directives/accessibility-directive.d.ts +16 -0
  233. package/lib/shared/directives/custom-inner-content.directive.d.ts +3 -2
  234. package/lib/shared/interfaces/accessibility-data.d.ts +77 -0
  235. package/lib/shared/shared.module.d.ts +4 -3
  236. package/lib/shared/sharedExternal.module.d.ts +8 -0
  237. package/package.json +2 -2
  238. package/public-api.d.ts +4 -1
  239. package/esm2022/lib/desy-forms/interfaces/accesibility-data.mjs +0 -2
  240. package/esm2022/lib/desy-pagination/interfaces/index.mjs +0 -2
  241. package/esm2022/lib/desy-views/components/spinner/spinner.component.mjs +0 -81
  242. package/esm2022/lib/shared/interfaces/accesibility-data.mjs +0 -2
  243. package/lib/desy-forms/interfaces/accesibility-data.d.ts +0 -15
  244. package/lib/desy-pagination/interfaces/index.d.ts +0 -1
  245. package/lib/desy-views/components/spinner/spinner.component.d.ts +0 -24
  246. package/lib/shared/interfaces/accesibility-data.d.ts +0 -16
@@ -5,29 +5,92 @@ import { TabItemComponent } from './tab-item/tab-item.component';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  import * as i2 from "../../../shared/directives/custom-inner-content.directive";
8
- import * as i3 from "../../../shared/pipes/make-html-list.pipe";
8
+ import * as i3 from "../../../shared/directives/accessibility-directive";
9
+ import * as i4 from "../../../shared/pipes/make-html-list.pipe";
9
10
  export class TabsComponent extends AccessibilityComponent {
10
11
  constructor(changeDetector) {
11
12
  super();
12
13
  this.changeDetector = changeDetector;
14
+ this.role = null;
15
+ this.ariaLabel = null;
16
+ this.ariaDescribedBy = null;
17
+ this.ariaLabelledBy = null;
18
+ this.ariaHidden = null;
19
+ this.ariaDisabled = null;
20
+ this.ariaControls = null;
21
+ this.ariaCurrent = null;
22
+ this.ariaLive = null;
23
+ this.ariaExpanded = null;
24
+ this.ariaErrorMessage = null;
25
+ this.ariaHasPopup = null;
26
+ this.ariaModal = null;
27
+ this.ariaChecked = null;
28
+ this.ariaPressed = null;
29
+ this.ariaReadonly = null;
30
+ this.ariaRequired = null;
31
+ this.ariaSelected = null;
32
+ this.ariaValuemin = null;
33
+ this.ariaValuemax = null;
34
+ this.ariaValuenow = null;
35
+ this.ariaValuetext = null;
36
+ this.ariaOrientation = null;
37
+ this.ariaLevel = null;
38
+ this.ariaMultiselectable = null;
39
+ this.ariaPlaceholder = null;
40
+ this.ariaPosinset = null;
41
+ this.ariaSetsize = null;
42
+ this.ariaSort = null;
43
+ this.ariaBusy = null;
44
+ this.ariaDropeffect = null;
45
+ this.ariaGrabbed = null;
46
+ this.ariaActivedescendant = null;
47
+ this.ariaAtomic = null;
48
+ this.ariaAutocomplete = null;
49
+ this.ariaBraillelabel = null;
50
+ this.ariaBrailleroledescription = null;
51
+ this.ariaColcount = null;
52
+ this.ariaColindex = null;
53
+ this.ariaColindextext = null;
54
+ this.ariaColspan = null;
55
+ this.ariaDescription = null;
56
+ this.ariaDetails = null;
57
+ this.ariaFlowto = null;
58
+ this.ariaInvalid = null;
59
+ this.ariaKeyshortcuts = null;
60
+ this.ariaOwns = null;
61
+ this.ariaRelevant = null;
62
+ this.ariaRoledescription = null;
63
+ this.ariaRowcount = null;
64
+ this.ariaRowindex = null;
65
+ this.ariaRowindextext = null;
66
+ this.ariaRowspan = null;
67
+ this.tabindex = null;
68
+ this.title = null;
69
+ this.alt = null;
70
+ this.lang = null;
71
+ this.accesskey = null;
72
+ this.autocomplete = null;
73
+ this.autofocus = null;
74
+ this.contenteditable = null;
75
+ this.dir = null;
76
+ this.draggable = null;
77
+ this.enterkeyhint = null;
78
+ this.hidden = null;
79
+ this.inputmode = null;
80
+ this.spellcheck = null;
81
+ this.translate = null;
82
+ this.ariaMultiline = null;
83
+ this.for = null;
84
+ this.form = null;
85
+ this.headers = null;
86
+ this.placeholder = null;
87
+ this.readonly = null;
88
+ this.required = null;
13
89
  this.currentTab = 0;
14
90
  }
15
91
  ngOnChanges(changes) {
16
92
  this.classes = this.classes ? 'c-tabs ' + this.classes : 'c-tabs';
17
93
  this.idData = this.id ? this.id : null;
18
- this.roleData = this.role ? this.role : null;
19
- this.ariaDescribedbyData = this.ariaDescribedBy ? this.ariaDescribedBy : null;
20
- this.ariaErrormessageData = this.ariaErrorMessage ? this.ariaErrorMessage : null;
21
- this.ariaLabelData = this.ariaLabel ? this.ariaLabel : null;
22
- this.ariaLabelledbyData = this.ariaLabelledBy ? this.ariaLabelledBy : null;
23
- this.ariaHiddenData = this.ariaHidden ? this.ariaHidden : null;
24
- this.ariaDisabledData = this.ariaDisabled ? this.ariaDisabled : null;
25
- this.ariaControlsData = this.ariaControls ? this.ariaControls : null;
26
- this.ariaCurrentData = this.ariaCurrent ? this.ariaCurrent : null;
27
- this.ariaLiveData = this.ariaLive ? this.ariaLive : null;
28
- this.ariaExpandedData = this.ariaExpanded ? this.ariaExpanded : null;
29
- this.ariaHaspopupData = this.ariaHasPopup ? this.ariaHasPopup : null;
30
- this.tabindexData = this.tabindex ? this.tabindex : null;
31
94
  }
32
95
  ngAfterViewInit() {
33
96
  const items = this.getItems();
@@ -116,11 +179,11 @@ export class TabsComponent extends AccessibilityComponent {
116
179
  return item[tab].panel && item[tab].panel.text ? `<p>${StringUtils.escapeHtml(item[tab].panel.text)}</p>` : null;
117
180
  }
118
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabsComponent, selector: "desy-tabs", inputs: { id: "id", idPrefix: "idPrefix", headingLevel: "headingLevel", title: "title", tablistAriaLabel: "tablistAriaLabel", items: "items", classes: "classes" }, host: { properties: { "class": "this.classes", "attr.id": "this.idData", "attr.role": "this.roleData", "attr.aria-describedby": "this.ariaDescribedbyData", "attr.aria-errormessage": "this.ariaErrormessageData", "attr.aria-label": "this.ariaLabelData", "attr.aria-labelledby": "this.ariaLabelledbyData", "attr.aria-hidden": "this.ariaHiddenData", "attr.aria-disabled": "this.ariaDisabledData", "attr.aria-controls": "this.ariaControlsData", "attr.aria-current": "this.ariaCurrentData", "attr.aria-live": "this.ariaLiveData", "attr.aria-expanded": "this.ariaExpandedData", "attr.aria-haspopup": "this.ariaHaspopupData", "attr.tabindex": "this.tabindexData" } }, queries: [{ propertyName: "itemComponents", predicate: TabItemComponent }], viewQueries: [{ propertyName: "tabSrOnly", first: true, predicate: ["tabSrOnly"], descendants: true }, { propertyName: "tabSelectors", predicate: ["tabSelector"], descendants: true }, { propertyName: "tabSelectorContentWrapper", predicate: ["tabSelectorContentWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\">{{title ? title: 'Contenido'}}</h1>\n <h2 *ngSwitchCase=\"2\">{{title ? title: 'Contenido'}}</h2>\n <h3 *ngSwitchCase=\"3\">{{title ? title: 'Contenido'}}</h3>\n <h4 *ngSwitchCase=\"4\">{{title ? title: 'Contenido'}}</h4>\n <h5 *ngSwitchCase=\"5\">{{title ? title: 'Contenido'}}</h5>\n <h2 *ngSwitchDefault>{{title ? title: 'Contenido'}}</h2>\n</div>\n\n<ng-container *ngIf=\"getItems()\">\n <div class=\"c-tabs__tabs\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <button #tabSelector\n (click)=\"selectTab(i)\"\n (keydown.home)=\"focusFirstTab($event)\"\n (keydown.end)=\"focusLastTab($event)\"\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\n (keydown.arrowright)=\"focusNextTab(i)\"\n class=\"group c-tabs__link\"\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\n [class.c-tabs__link--is-active]=\"currentTab === i ? true : false\"\n [attr.id]=\"getItemId(i)\"\n [attr.role]=\"(item.role ? role : 'tab')\"\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\n [attr.aria-hidden]=\"item.ariaHidden\"\n [attr.aria-controls]=\"'tab-' + getItemId(i)\"\n [attr.aria-current]=\"item.ariaCurrent\"\n [attr.aria-live]=\"item.ariaLive\"\n [attr.aria-expanded]=\"item.ariaExpanded\"\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\n [attr.disabled]=\"isDisabled(item)\"\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none group-focus:bg-warning-base group-focus:shadow-outline-focus group-focus:outline-none\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\n </span>\n </button>\n </ng-container>\n </div>\n\n <div [class]=\"['c-tabs__panel', currentPanel?.classes] | makeHtmlList\"\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\n [attr.aria-describedby]=\"currentPanel?.ariaDescribedBy\"\n [attr.aria-errormessage]=\"currentPanel?.ariaErrorMessage\"\n [attr.aria-label]=\"currentPanel?.ariaLabel\"\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\n [attr.aria-hidden]=\"currentPanel?.ariaHidden\"\n [attr.aria-disabled]=\"currentPanel?.ariaDisabled\"\n [attr.aria-controls]=\"currentPanel?.ariaControls\"\n [attr.aria-current]=\"currentPanel?.ariaCurrent\"\n [attr.aria-live]=\"currentPanel?.ariaLive\"\n [attr.aria-expanded]=\"currentPanel?.ariaExpanded\"\n [attr.aria-haspopup]=\"currentPanel?.ariaHasPopup\"\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\n <div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\n <h3 *ngSwitchDefault #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n </div>\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\n </div>\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "pipe", type: i3.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabsComponent, selector: "desy-tabs", inputs: { id: "id", idPrefix: "idPrefix", headingLevel: "headingLevel", titleModal: "titleModal", tablistAriaLabel: "tablistAriaLabel", items: "items", classes: "classes" }, host: { properties: { "class": "this.classes", "attr.id": "this.idData", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel", "attr.aria-describedby": "this.ariaDescribedBy", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-hidden": "this.ariaHidden", "attr.aria-disabled": "this.ariaDisabled", "attr.aria-controls": "this.ariaControls", "attr.aria-current": "this.ariaCurrent", "attr.aria-live": "this.ariaLive", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-errormessage": "this.ariaErrorMessage", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-modal": "this.ariaModal", "attr.aria-checked": "this.ariaChecked", "attr.aria-pressed": "this.ariaPressed", "attr.aria-readonly": "this.ariaReadonly", "attr.aria-required": "this.ariaRequired", "attr.aria-selected": "this.ariaSelected", "attr.aria-valuemin": "this.ariaValuemin", "attr.aria-valuemax": "this.ariaValuemax", "attr.aria-valuenow": "this.ariaValuenow", "attr.aria-valuetext": "this.ariaValuetext", "attr.aria-orientation": "this.ariaOrientation", "attr.aria-level": "this.ariaLevel", "attr.aria-multiselectable": "this.ariaMultiselectable", "attr.aria-placeholder": "this.ariaPlaceholder", "attr.aria-posinset": "this.ariaPosinset", "attr.aria-setsize": "this.ariaSetsize", "attr.aria-sort": "this.ariaSort", "attr.aria-busy": "this.ariaBusy", "attr.aria-dropeffect": "this.ariaDropeffect", "attr.aria-grabbed": "this.ariaGrabbed", "attr.aria-activedescendant": "this.ariaActivedescendant", "attr.aria-atomic": "this.ariaAtomic", "attr.aria-autocomplete": "this.ariaAutocomplete", "attr.aria-braillelabel": "this.ariaBraillelabel", "attr.aria-brailleroledescription": "this.ariaBrailleroledescription", "attr.aria-colcount": "this.ariaColcount", "attr.aria-colindex": "this.ariaColindex", "attr.aria-colindextext": "this.ariaColindextext", "attr.aria-colspan": "this.ariaColspan", "attr.aria-description": "this.ariaDescription", "attr.aria-details": "this.ariaDetails", "attr.aria-flowto": "this.ariaFlowto", "attr.aria-invalid": "this.ariaInvalid", "attr.aria-keyshortcuts": "this.ariaKeyshortcuts", "attr.aria-owns": "this.ariaOwns", "attr.aria-relevant": "this.ariaRelevant", "attr.aria-roledescription": "this.ariaRoledescription", "attr.aria-rowcount": "this.ariaRowcount", "attr.aria-rowindex": "this.ariaRowindex", "attr.aria-rowindextext": "this.ariaRowindextext", "attr.aria-rowspan": "this.ariaRowspan", "attr.tabindex": "this.tabindex", "attr.title": "this.title", "attr.alt": "this.alt", "attr.lang": "this.lang", "attr.accesskey": "this.accesskey", "attr.autocomplete": "this.autocomplete", "attr.autofocus": "this.autofocus", "attr.contenteditable": "this.contenteditable", "attr.dir": "this.dir", "attr.draggable": "this.draggable", "attr.enterkeyhint": "this.enterkeyhint", "attr.hidden": "this.hidden", "attr.inputmode": "this.inputmode", "attr.spellcheck": "this.spellcheck", "attr.translate": "this.translate", "attr.aria-multiline": "this.ariaMultiline", "attr.for": "this.for", "attr.form": "this.form", "attr.headers": "this.headers", "attr.placeholder": "this.placeholder", "attr.readonly": "this.readonly", "attr.required": "this.required" } }, queries: [{ propertyName: "itemComponents", predicate: TabItemComponent }], viewQueries: [{ propertyName: "tabSrOnly", first: true, predicate: ["tabSrOnly"], descendants: true }, { propertyName: "tabSelectors", predicate: ["tabSelector"], descendants: true }, { propertyName: "tabSelectorContentWrapper", predicate: ["tabSelectorContentWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\">{{title ? title: 'Contenido'}}</h1>\n <h2 *ngSwitchCase=\"2\">{{title ? title: 'Contenido'}}</h2>\n <h3 *ngSwitchCase=\"3\">{{title ? title: 'Contenido'}}</h3>\n <h4 *ngSwitchCase=\"4\">{{title ? title: 'Contenido'}}</h4>\n <h5 *ngSwitchCase=\"5\">{{title ? title: 'Contenido'}}</h5>\n <h2 *ngSwitchDefault>{{title ? title: 'Contenido'}}</h2>\n</div>\n\n<ng-container *ngIf=\"getItems()\">\n <div class=\"c-tabs__tabs\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <button #tabSelector\n (click)=\"selectTab(i)\"\n (keydown.home)=\"focusFirstTab($event)\"\n (keydown.end)=\"focusLastTab($event)\"\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\n (keydown.arrowright)=\"focusNextTab(i)\"\n class=\"group c-tabs__link\"\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\n [class.c-tabs__link--is-active]=\"currentTab === i ? true : false\"\n [desyAppAccessibility]=\"item\"\n [attr.id]=\"getItemId(i)\"\n [attr.role]=\"(item.role ? item.role : 'tab')\"\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\n [attr.aria-controls]=\"'tab-' + getItemId(i)\"\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\n [attr.disabled]=\"isDisabled(item)\"\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none group-focus:bg-warning-base group-focus:shadow-outline-focus group-focus:outline-none\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\n </span>\n </button>\n </ng-container>\n </div>\n\n <div [class]=\"['c-tabs__panel', currentPanel?.classes] | makeHtmlList\"\n [desyAppAccessibility]=\"currentPanel\"\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\n <div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\n <h3 *ngSwitchDefault #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n </div>\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\n </div>\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i3.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
120
183
  }
121
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabsComponent, decorators: [{
122
185
  type: Component,
123
- args: [{ selector: 'desy-tabs', template: "<div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\">{{title ? title: 'Contenido'}}</h1>\n <h2 *ngSwitchCase=\"2\">{{title ? title: 'Contenido'}}</h2>\n <h3 *ngSwitchCase=\"3\">{{title ? title: 'Contenido'}}</h3>\n <h4 *ngSwitchCase=\"4\">{{title ? title: 'Contenido'}}</h4>\n <h5 *ngSwitchCase=\"5\">{{title ? title: 'Contenido'}}</h5>\n <h2 *ngSwitchDefault>{{title ? title: 'Contenido'}}</h2>\n</div>\n\n<ng-container *ngIf=\"getItems()\">\n <div class=\"c-tabs__tabs\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <button #tabSelector\n (click)=\"selectTab(i)\"\n (keydown.home)=\"focusFirstTab($event)\"\n (keydown.end)=\"focusLastTab($event)\"\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\n (keydown.arrowright)=\"focusNextTab(i)\"\n class=\"group c-tabs__link\"\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\n [class.c-tabs__link--is-active]=\"currentTab === i ? true : false\"\n [attr.id]=\"getItemId(i)\"\n [attr.role]=\"(item.role ? role : 'tab')\"\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\n [attr.aria-describedby]=\"item.ariaDescribedBy\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-labelledby]=\"item.ariaLabelledBy\"\n [attr.aria-hidden]=\"item.ariaHidden\"\n [attr.aria-controls]=\"'tab-' + getItemId(i)\"\n [attr.aria-current]=\"item.ariaCurrent\"\n [attr.aria-live]=\"item.ariaLive\"\n [attr.aria-expanded]=\"item.ariaExpanded\"\n [attr.aria-haspopup]=\"item.ariaHasPopup\"\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\n [attr.disabled]=\"isDisabled(item)\"\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none group-focus:bg-warning-base group-focus:shadow-outline-focus group-focus:outline-none\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\n </span>\n </button>\n </ng-container>\n </div>\n\n <div [class]=\"['c-tabs__panel', currentPanel?.classes] | makeHtmlList\"\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\n [attr.aria-describedby]=\"currentPanel?.ariaDescribedBy\"\n [attr.aria-errormessage]=\"currentPanel?.ariaErrorMessage\"\n [attr.aria-label]=\"currentPanel?.ariaLabel\"\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\n [attr.aria-hidden]=\"currentPanel?.ariaHidden\"\n [attr.aria-disabled]=\"currentPanel?.ariaDisabled\"\n [attr.aria-controls]=\"currentPanel?.ariaControls\"\n [attr.aria-current]=\"currentPanel?.ariaCurrent\"\n [attr.aria-live]=\"currentPanel?.ariaLive\"\n [attr.aria-expanded]=\"currentPanel?.ariaExpanded\"\n [attr.aria-haspopup]=\"currentPanel?.ariaHasPopup\"\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\n <div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\n <h3 *ngSwitchDefault #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n </div>\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\n </div>\n</ng-container>" }]
186
+ args: [{ selector: 'desy-tabs', template: "<div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\">{{title ? title: 'Contenido'}}</h1>\n <h2 *ngSwitchCase=\"2\">{{title ? title: 'Contenido'}}</h2>\n <h3 *ngSwitchCase=\"3\">{{title ? title: 'Contenido'}}</h3>\n <h4 *ngSwitchCase=\"4\">{{title ? title: 'Contenido'}}</h4>\n <h5 *ngSwitchCase=\"5\">{{title ? title: 'Contenido'}}</h5>\n <h2 *ngSwitchDefault>{{title ? title: 'Contenido'}}</h2>\n</div>\n\n<ng-container *ngIf=\"getItems()\">\n <div class=\"c-tabs__tabs\" role=\"tablist\" [attr.aria-label]=tablistAriaLabel>\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <button #tabSelector\n (click)=\"selectTab(i)\"\n (keydown.home)=\"focusFirstTab($event)\"\n (keydown.end)=\"focusLastTab($event)\"\n (keydown.arrowleft)=\"focusPreviousTab(i)\"\n (keydown.arrowright)=\"focusNextTab(i)\"\n class=\"group c-tabs__link\"\n [ngClass]=\"{'opacity-50 pointer-events-none': isDisabled(item)}\"\n [class.c-tabs__link--is-active]=\"currentTab === i ? true : false\"\n [desyAppAccessibility]=\"item\"\n [attr.id]=\"getItemId(i)\"\n [attr.role]=\"(item.role ? item.role : 'tab')\"\n [attr.aria-selected]=\"currentTab === i ? 'true' : 'false'\"\n [attr.aria-controls]=\"'tab-' + getItemId(i)\"\n [attr.tabindex]=\"(currentTab !== i || item.disabled ? '-1' : null)\"\n [attr.disabled]=\"isDisabled(item)\"\n [attr.aria-disabled]=\"isDisabled(item) ? 'true' : (ariaDisabled ? ariaDisabled : null)\">\n <span #tabSelectorContentWrapper class=\"flex items-center pointer-events-none group-focus:bg-warning-base group-focus:shadow-outline-focus group-focus:outline-none\">\n <ng-container *desyCustomInnerContent=\"{ component: item.contentComponent, html: item.html, text: item.text}\"></ng-container>\n </span>\n </button>\n </ng-container>\n </div>\n\n <div [class]=\"['c-tabs__panel', currentPanel?.classes] | makeHtmlList\"\n [desyAppAccessibility]=\"currentPanel\"\n [attr.id]=\"'tab-' + getItemId(currentTab)\"\n [attr.role]=\"(currentPanel?.role ? currentPanel?.role : 'tabpanel')\"\n [attr.aria-labelledby]=\"getItemId(currentTab)\"\n [attr.tabindex]=\"(currentPanel?.tabindex ? currentPanel?.tabindex : '0')\">\n <div [ngSwitch]=\"headingLevel\" class=\"c-tabs__panel-heading\">\n <h1 *ngSwitchCase=\"1\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h1>\n <h2 *ngSwitchCase=\"2\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h2>\n <h3 *ngSwitchCase=\"3\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n <h4 *ngSwitchCase=\"4\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h4>\n <h5 *ngSwitchCase=\"5\" #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h5>\n <h3 *ngSwitchDefault #tabSrOnly class=\"inline-flex items-center mb-base lg:mb-0 font-semibold\"></h3>\n </div>\n <ng-container *desyCustomInnerContent=\"{ component: getItemPanel(currentTab), template: currentPanel?.html, html: getPanelContent(currentTab) }\"></ng-container>\n </div>\n</ng-container>" }]
124
187
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { itemComponents: [{
125
188
  type: ContentChildren,
126
189
  args: [TabItemComponent]
@@ -139,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
139
202
  type: Input
140
203
  }], headingLevel: [{
141
204
  type: Input
142
- }], title: [{
205
+ }], titleModal: [{
143
206
  type: Input
144
207
  }], tablistAriaLabel: [{
145
208
  type: Input
@@ -153,44 +216,230 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
153
216
  }], idData: [{
154
217
  type: HostBinding,
155
218
  args: ['attr.id']
156
- }], roleData: [{
219
+ }], role: [{
157
220
  type: HostBinding,
158
221
  args: ['attr.role']
159
- }], ariaDescribedbyData: [{
160
- type: HostBinding,
161
- args: ['attr.aria-describedby']
162
- }], ariaErrormessageData: [{
163
- type: HostBinding,
164
- args: ['attr.aria-errormessage']
165
- }], ariaLabelData: [{
222
+ }], ariaLabel: [{
166
223
  type: HostBinding,
167
224
  args: ['attr.aria-label']
168
- }], ariaLabelledbyData: [{
225
+ }], ariaDescribedBy: [{
226
+ type: HostBinding,
227
+ args: ['attr.aria-describedby']
228
+ }], ariaLabelledBy: [{
169
229
  type: HostBinding,
170
230
  args: ['attr.aria-labelledby']
171
- }], ariaHiddenData: [{
231
+ }], ariaHidden: [{
172
232
  type: HostBinding,
173
233
  args: ['attr.aria-hidden']
174
- }], ariaDisabledData: [{
234
+ }], ariaDisabled: [{
175
235
  type: HostBinding,
176
236
  args: ['attr.aria-disabled']
177
- }], ariaControlsData: [{
237
+ }], ariaControls: [{
178
238
  type: HostBinding,
179
239
  args: ['attr.aria-controls']
180
- }], ariaCurrentData: [{
240
+ }], ariaCurrent: [{
181
241
  type: HostBinding,
182
242
  args: ['attr.aria-current']
183
- }], ariaLiveData: [{
243
+ }], ariaLive: [{
184
244
  type: HostBinding,
185
245
  args: ['attr.aria-live']
186
- }], ariaExpandedData: [{
246
+ }], ariaExpanded: [{
187
247
  type: HostBinding,
188
248
  args: ['attr.aria-expanded']
189
- }], ariaHaspopupData: [{
249
+ }], ariaErrorMessage: [{
250
+ type: HostBinding,
251
+ args: ['attr.aria-errormessage']
252
+ }], ariaHasPopup: [{
190
253
  type: HostBinding,
191
254
  args: ['attr.aria-haspopup']
192
- }], tabindexData: [{
255
+ }], ariaModal: [{
256
+ type: HostBinding,
257
+ args: ['attr.aria-modal']
258
+ }], ariaChecked: [{
259
+ type: HostBinding,
260
+ args: ['attr.aria-checked']
261
+ }], ariaPressed: [{
262
+ type: HostBinding,
263
+ args: ['attr.aria-pressed']
264
+ }], ariaReadonly: [{
265
+ type: HostBinding,
266
+ args: ['attr.aria-readonly']
267
+ }], ariaRequired: [{
268
+ type: HostBinding,
269
+ args: ['attr.aria-required']
270
+ }], ariaSelected: [{
271
+ type: HostBinding,
272
+ args: ['attr.aria-selected']
273
+ }], ariaValuemin: [{
274
+ type: HostBinding,
275
+ args: ['attr.aria-valuemin']
276
+ }], ariaValuemax: [{
277
+ type: HostBinding,
278
+ args: ['attr.aria-valuemax']
279
+ }], ariaValuenow: [{
280
+ type: HostBinding,
281
+ args: ['attr.aria-valuenow']
282
+ }], ariaValuetext: [{
283
+ type: HostBinding,
284
+ args: ['attr.aria-valuetext']
285
+ }], ariaOrientation: [{
286
+ type: HostBinding,
287
+ args: ['attr.aria-orientation']
288
+ }], ariaLevel: [{
289
+ type: HostBinding,
290
+ args: ['attr.aria-level']
291
+ }], ariaMultiselectable: [{
292
+ type: HostBinding,
293
+ args: ['attr.aria-multiselectable']
294
+ }], ariaPlaceholder: [{
295
+ type: HostBinding,
296
+ args: ['attr.aria-placeholder']
297
+ }], ariaPosinset: [{
298
+ type: HostBinding,
299
+ args: ['attr.aria-posinset']
300
+ }], ariaSetsize: [{
301
+ type: HostBinding,
302
+ args: ['attr.aria-setsize']
303
+ }], ariaSort: [{
304
+ type: HostBinding,
305
+ args: ['attr.aria-sort']
306
+ }], ariaBusy: [{
307
+ type: HostBinding,
308
+ args: ['attr.aria-busy']
309
+ }], ariaDropeffect: [{
310
+ type: HostBinding,
311
+ args: ['attr.aria-dropeffect']
312
+ }], ariaGrabbed: [{
313
+ type: HostBinding,
314
+ args: ['attr.aria-grabbed']
315
+ }], ariaActivedescendant: [{
316
+ type: HostBinding,
317
+ args: ['attr.aria-activedescendant']
318
+ }], ariaAtomic: [{
319
+ type: HostBinding,
320
+ args: ['attr.aria-atomic']
321
+ }], ariaAutocomplete: [{
322
+ type: HostBinding,
323
+ args: ['attr.aria-autocomplete']
324
+ }], ariaBraillelabel: [{
325
+ type: HostBinding,
326
+ args: ['attr.aria-braillelabel']
327
+ }], ariaBrailleroledescription: [{
328
+ type: HostBinding,
329
+ args: ['attr.aria-brailleroledescription']
330
+ }], ariaColcount: [{
331
+ type: HostBinding,
332
+ args: ['attr.aria-colcount']
333
+ }], ariaColindex: [{
334
+ type: HostBinding,
335
+ args: ['attr.aria-colindex']
336
+ }], ariaColindextext: [{
337
+ type: HostBinding,
338
+ args: ['attr.aria-colindextext']
339
+ }], ariaColspan: [{
340
+ type: HostBinding,
341
+ args: ['attr.aria-colspan']
342
+ }], ariaDescription: [{
343
+ type: HostBinding,
344
+ args: ['attr.aria-description']
345
+ }], ariaDetails: [{
346
+ type: HostBinding,
347
+ args: ['attr.aria-details']
348
+ }], ariaFlowto: [{
349
+ type: HostBinding,
350
+ args: ['attr.aria-flowto']
351
+ }], ariaInvalid: [{
352
+ type: HostBinding,
353
+ args: ['attr.aria-invalid']
354
+ }], ariaKeyshortcuts: [{
355
+ type: HostBinding,
356
+ args: ['attr.aria-keyshortcuts']
357
+ }], ariaOwns: [{
358
+ type: HostBinding,
359
+ args: ['attr.aria-owns']
360
+ }], ariaRelevant: [{
361
+ type: HostBinding,
362
+ args: ['attr.aria-relevant']
363
+ }], ariaRoledescription: [{
364
+ type: HostBinding,
365
+ args: ['attr.aria-roledescription']
366
+ }], ariaRowcount: [{
367
+ type: HostBinding,
368
+ args: ['attr.aria-rowcount']
369
+ }], ariaRowindex: [{
370
+ type: HostBinding,
371
+ args: ['attr.aria-rowindex']
372
+ }], ariaRowindextext: [{
373
+ type: HostBinding,
374
+ args: ['attr.aria-rowindextext']
375
+ }], ariaRowspan: [{
376
+ type: HostBinding,
377
+ args: ['attr.aria-rowspan']
378
+ }], tabindex: [{
193
379
  type: HostBinding,
194
380
  args: ['attr.tabindex']
381
+ }], title: [{
382
+ type: HostBinding,
383
+ args: ['attr.title']
384
+ }], alt: [{
385
+ type: HostBinding,
386
+ args: ['attr.alt']
387
+ }], lang: [{
388
+ type: HostBinding,
389
+ args: ['attr.lang']
390
+ }], accesskey: [{
391
+ type: HostBinding,
392
+ args: ['attr.accesskey']
393
+ }], autocomplete: [{
394
+ type: HostBinding,
395
+ args: ['attr.autocomplete']
396
+ }], autofocus: [{
397
+ type: HostBinding,
398
+ args: ['attr.autofocus']
399
+ }], contenteditable: [{
400
+ type: HostBinding,
401
+ args: ['attr.contenteditable']
402
+ }], dir: [{
403
+ type: HostBinding,
404
+ args: ['attr.dir']
405
+ }], draggable: [{
406
+ type: HostBinding,
407
+ args: ['attr.draggable']
408
+ }], enterkeyhint: [{
409
+ type: HostBinding,
410
+ args: ['attr.enterkeyhint']
411
+ }], hidden: [{
412
+ type: HostBinding,
413
+ args: ['attr.hidden']
414
+ }], inputmode: [{
415
+ type: HostBinding,
416
+ args: ['attr.inputmode']
417
+ }], spellcheck: [{
418
+ type: HostBinding,
419
+ args: ['attr.spellcheck']
420
+ }], translate: [{
421
+ type: HostBinding,
422
+ args: ['attr.translate']
423
+ }], ariaMultiline: [{
424
+ type: HostBinding,
425
+ args: ['attr.aria-multiline']
426
+ }], for: [{
427
+ type: HostBinding,
428
+ args: ['attr.for']
429
+ }], form: [{
430
+ type: HostBinding,
431
+ args: ['attr.form']
432
+ }], headers: [{
433
+ type: HostBinding,
434
+ args: ['attr.headers']
435
+ }], placeholder: [{
436
+ type: HostBinding,
437
+ args: ['attr.placeholder']
438
+ }], readonly: [{
439
+ type: HostBinding,
440
+ args: ['attr.readonly']
441
+ }], required: [{
442
+ type: HostBinding,
443
+ args: ['attr.required']
195
444
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXZpZXdzL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNVLGlCQUFpQixFQUNoQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFNakUsTUFBTSxPQUFPLGFBQWMsU0FBUSxzQkFBc0I7SUFxQ3ZELFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBSHJELGVBQVUsR0FBRyxDQUFDLENBQUM7SUFLZixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNsRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElB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Z0JBQ0ksZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDRSxnQkFBZ0I7c0JBQWxELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNDLGVBQWU7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUNELFlBQVk7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNNLGdCQUFnQjtzQkFBbEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBQ0UsZ0JBQWdCO3NCQUFsRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDSCxZQUFZO3NCQUF6QyxXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQgeyBUYWJzSXRlbXNEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiSXRlbUNvbXBvbmVudCkgaXRlbUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUYWJJdGVtQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZHJlbigndGFiU2VsZWN0b3InKSB0YWJTZWxlY3RvcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZHJlbigndGFiU2VsZWN0b3JDb250ZW50V3JhcHBlcicpIHRhYlNlbGVjdG9yQ29udGVudFdyYXBwZXI6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgndGFiU3JPbmx5JykgdGFiU3JPbmx5OiBFbGVtZW50UmVmO1xuXG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGluZ0xldmVsOiBudW1iZXI7XG5cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGFibGlzdEFyaWFMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBpdGVtczogVGFic0l0ZW1zRGF0YVtdO1xuXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc2VzOiBhbnk7XG5cbiAgLy9BY2Nlc3NpYmlsaXR5XG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGlkRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGVEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZGJ5RGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2UnKSBhcmlhRXJyb3JtZXNzYWdlRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpIGFyaWFMYWJlbERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWxsZWRieScpIGFyaWFMYWJlbGxlZGJ5RGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKSBhcmlhSGlkZGVuRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpIGFyaWFEaXNhYmxlZERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY29udHJvbHMnKSBhcmlhQ29udHJvbHNEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWN1cnJlbnQnKSBhcmlhQ3VycmVudERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGl2ZScpIGFyaWFMaXZlRGF0YTogYW55O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZERhdGE6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKSBhcmlhSGFzcG9wdXBEYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYmluZGV4RGF0YTogYW55O1xuXG4gIGN1cnJlbnRUYWIgPSAwO1xuICBjdXJyZW50UGFuZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3NlcyA9IHRoaXMuY2xhc3NlcyA/ICdjLXRhYnMgJyArIHRoaXMuY2xhc3NlcyA6ICdjLXRhYnMnO1xuICAgIHRoaXMuaWREYXRhID0gdGhpcy5pZCA/IHRoaXMuaWQgOiBudWxsO1xuICAgIHRoaXMucm9sZURhdGEgPSB0aGlzLnJvbGUgPyB0aGlzLnJvbGUgOiBudWxsO1xuICAgIHRoaXMuYXJpYURlc2NyaWJlZGJ5RGF0YSA9IHRoaXMuYXJpYURlc2NyaWJlZEJ5ID8gdGhpcy5hcmlhRGVzY3JpYmVkQnkgOiBudWxsO1xuICAgIHRoaXMuYXJpYUVycm9ybWVzc2FnZURhdGEgPSB0aGlzLmFyaWFFcnJvck1lc3NhZ2UgPyB0aGlzLmFyaWFFcnJvck1lc3NhZ2UgOiBudWxsO1xuICAgIHRoaXMuYXJpYUxhYmVsRGF0YSA9IHRoaXMuYXJpYUxhYmVsID8gdGhpcy5hcmlhTGFiZWwgOiBudWxsO1xuICAgIHRoaXMuYXJpYUxhYmVsbGVkYnlEYXRhID0gdGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBudWxsO1xuICAgIHRoaXMuYXJpYUhpZGRlbkRhdGEgPSB0aGlzLmFyaWFIaWRkZW4gPyB0aGlzLmFyaWFIaWRkZW4gOiBudWxsO1xuICAgIHRoaXMuYXJpYURpc2FibGVkRGF0YSA9IHRoaXMuYXJpYURpc2FibGVkID8gdGhpcy5hcmlhRGlzYWJsZWQgOiBudWxsO1xuICAgIHRoaXMuYXJpYUNvbnRyb2xzRGF0YSA9IHRoaXMuYXJpYUNvbnRyb2xzID8gdGhpcy5hcmlhQ29udHJvbHMgOiBudWxsO1xuICAgIHRoaXMuYXJpYUN1cnJlbnREYXRhID0gdGhpcy5hcmlhQ3VycmVudCA/IHRoaXMuYXJpYUN1cnJlbnQgOiBudWxsO1xuICAgIHRoaXMuYXJpYUxpdmVEYXRhID0gdGhpcy5hcmlhTGl2ZSA/IHRoaXMuYXJpYUxpdmUgOiBudWxsO1xuICAgIHRoaXMuYXJpYUV4cGFuZGVkRGF0YSA9IHRoaXMuYXJpYUV4cGFuZGVkID8gdGhpcy5hcmlhRXhwYW5kZWQgOiBudWxsO1xuICAgIHRoaXMuYXJpYUhhc3BvcHVwRGF0YSA9IHRoaXMuYXJpYUhhc1BvcHVwID8gdGhpcy5hcmlhSGFzUG9wdXAgOiBudWxsO1xuICAgIHRoaXMudGFiaW5kZXhEYXRhID0gdGhpcy50YWJpbmRleCA/IHRoaXMudGFiaW5kZXggOiBudWxsO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGlmIChpdGVtcykge1xuICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IGl0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiAoIXZhbHVlLmRpc2FibGVkICYmIHZhbHVlLmFjdGl2ZSkpO1xuICAgICAgdGhpcy5zZWxlY3RUYWIoc2VsZWN0ZWRJdGVtICE9PSAtMSA/IHNlbGVjdGVkSXRlbSA6IGl0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiAhdmFsdWUuZGlzYWJsZWQpKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXRJdGVtcygpOiBUYWJzSXRlbXNEYXRhW10gfCBUYWJJdGVtQ29tcG9uZW50W10ge1xuICAgIGNvbnN0IGl0ZW1zID0gKHRoaXMuaXRlbUNvbXBvbmVudHMubGVuZ3RoID4gMCkgPyB0aGlzLml0ZW1Db21wb25lbnRzLnRvQXJyYXkoKSA6IHRoaXMuaXRlbXM7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbVBhbmVsKHRhYjogbnVtYmVyKTogVGFiSXRlbUNvbXBvbmVudCB7XG4gICAgbGV0IHBhbmVsO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1t0YWJdO1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgVGFiSXRlbUNvbXBvbmVudCkge1xuICAgICAgcGFuZWwgPSBpdGVtLnBhbmVsQ29tcG9uZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFuZWw7XG4gIH1cblxuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaWRQcmVmaXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlkUHJlZml4O1xuICAgIH1cbiAgfVxuXG4gIGdldEl0ZW1JZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBpZiAoaXRlbVtpbmRleF0uaWQpIHtcbiAgICAgIGlkID0gaXRlbVtpbmRleF0uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkID0gdGhpcy5nZXRJZFByZWZpeCgpICsgJy0nICsgaW5kZXg7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoaXRlbTogVGFic0l0ZW1zRGF0YSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IG51bGw7XG4gIH1cblxuXG4gIHNlbGVjdFRhYihpOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSBpO1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5nZXRJdGVtcygpW2ldO1xuICAgIHRoaXMuY3VycmVudFBhbmVsID0gY3VycmVudEl0ZW0gaW5zdGFuY2VvZiBUYWJJdGVtQ29tcG9uZW50ID8gY3VycmVudEl0ZW0ucGFuZWxDb21wb25lbnQgOiBjdXJyZW50SXRlbS5wYW5lbDtcbiAgICB0aGlzLnRhYlNyT25seS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMudGFiU2VsZWN0b3JDb250ZW50V3JhcHBlci50b0FycmF5KClbdGhpcy5jdXJyZW50VGFiXS5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgfVxuXG4gIGZvY3VzRmlyc3RUYWIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZWRUYWJzID0gdGhpcy50YWJTZWxlY3RvcnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gIWl0ZW1baW5kZXhdLmRpc2FibGVkKTtcbiAgICBlbmFibGVkVGFic1swXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c0xhc3RUYWIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZWRUYWJzID0gdGhpcy50YWJTZWxlY3RvcnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gIWl0ZW1baW5kZXhdLmRpc2FibGVkKTtcbiAgICBlbmFibGVkVGFic1tlbmFibGVkVGFicy5sZW5ndGggLSAxXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c05leHRUYWIoZm9jdXNlZFRhYjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBsZXQgbmV4dFRhYiA9IChmb2N1c2VkVGFiICsgMSkgJSBpdGVtLmxlbmd0aDtcbiAgICB3aGlsZSAobmV4dFRhYiAhPT0gZm9jdXNlZFRhYikge1xuICAgICAgaWYgKCFpdGVtW25leHRUYWJdLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMudGFiU2VsZWN0b3JzLmZpbmQoKGksIGluZGV4KSA9PiBpbmRleCA9PT0gbmV4dFRhYikubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5leHRUYWIgPSAobmV4dFRhYiArIDEpICUgaXRlbS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNQcmV2aW91c1RhYihmb2N1c2VkVGFiOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGxldCBwcmV2aW91c1RhYiA9IChmb2N1c2VkVGFiIC0gMSArIGl0ZW0ubGVuZ3RoKSAlIGl0ZW0ubGVuZ3RoO1xuICAgIHdoaWxlIChwcmV2aW91c1RhYiAhPT0gZm9jdXNlZFRhYikge1xuICAgICAgaWYgKCFpdGVtW3ByZXZpb3VzVGFiXS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnRhYlNlbGVjdG9ycy5maW5kKChpLCBpbmRleCkgPT4gaW5kZXggPT09IHByZXZpb3VzVGFiKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJldmlvdXNUYWIgPSAocHJldmlvdXNUYWIgLSAxICsgaXRlbS5sZW5ndGgpICUgaXRlbS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFuZWxDb250ZW50KHRhYjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIHJldHVybiBpdGVtW3RhYl0ucGFuZWwgJiYgaXRlbVt0YWJdLnBhbmVsLnRleHQgPyBgPHA+JHtTdHJpbmdVdGlscy5lc2NhcGVIdG1sKGl0ZW1bdGFiXS5wYW5lbC50ZXh0KX08L3A+YCA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgW25nU3dpdGNoXT1cImhlYWRpbmdMZXZlbFwiIGNsYXNzPVwiYy10YWJzX19wYW5lbC1oZWFkaW5nXCI+XG4gIDxoMSAqbmdTd2l0Y2hDYXNlPVwiMVwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDE+XG4gIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDI+XG4gIDxoMyAqbmdTd2l0Y2hDYXNlPVwiM1wiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDM+XG4gIDxoNCAqbmdTd2l0Y2hDYXNlPVwiNFwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDQ+XG4gIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDU+XG4gIDxoMiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldEl0ZW1zKClcIj5cbiAgPGRpdiBjbGFzcz1cImMtdGFic19fdGFic1wiIHJvbGU9XCJ0YWJsaXN0XCIgW2F0dHIuYXJpYS1sYWJlbF09dGFibGlzdEFyaWFMYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uICN0YWJTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmhvbWUpPVwiZm9jdXNGaXJzdFRhYigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbmQpPVwiZm9jdXNMYXN0VGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93bGVmdCk9XCJmb2N1c1ByZXZpb3VzVGFiKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImZvY3VzTmV4dFRhYihpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBjLXRhYnNfX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS01MCBwb2ludGVyLWV2ZW50cy1ub25lJzogaXNEaXNhYmxlZChpdGVtKX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jLXRhYnNfX2xpbmstLWlzLWFjdGl2ZV09XCJjdXJyZW50VGFiID09PSBpID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJnZXRJdGVtSWQoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiKGl0ZW0ucm9sZSA/IHJvbGUgOiAndGFiJylcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiY3VycmVudFRhYiA9PT0gaSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIml0ZW0uYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIml0ZW0uYXJpYUhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCIndGFiLScgKyBnZXRJdGVtSWQoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiaXRlbS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpdGVtLmFyaWFFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiKGN1cnJlbnRUYWIgIT09IGkgfHwgaXRlbS5kaXNhYmxlZCA/ICctMScgOiBudWxsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGl0ZW0pID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAjdGFiU2VsZWN0b3JDb250ZW50V3JhcHBlciBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHBvaW50ZXItZXZlbnRzLW5vbmUgZ3JvdXAtZm9jdXM6Ymctd2FybmluZy1iYXNlIGdyb3VwLWZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIGdyb3VwLWZvY3VzOm91dGxpbmUtbm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGl0ZW0uY29udGVudENvbXBvbmVudCwgaHRtbDogaXRlbS5odG1sLCB0ZXh0OiBpdGVtLnRleHR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgW2NsYXNzXT1cIlsnYy10YWJzX19wYW5lbCcsIGN1cnJlbnRQYW5lbD8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICBbYXR0ci5pZF09XCIndGFiLScgKyBnZXRJdGVtSWQoY3VycmVudFRhYilcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cIihjdXJyZW50UGFuZWw/LnJvbGUgPyBjdXJyZW50UGFuZWw/LnJvbGUgOiAndGFicGFuZWwnKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiY3VycmVudFBhbmVsPy5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJjdXJyZW50UGFuZWw/LmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImN1cnJlbnRQYW5lbD8uYXJpYUxhYmVsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImdldEl0ZW1JZChjdXJyZW50VGFiKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImN1cnJlbnRQYW5lbD8uYXJpYUhpZGRlblwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY3VycmVudFBhbmVsPy5hcmlhRGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImN1cnJlbnRQYW5lbD8uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImN1cnJlbnRQYW5lbD8uYXJpYUN1cnJlbnRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxpdmVdPVwiY3VycmVudFBhbmVsPy5hcmlhTGl2ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY3VycmVudFBhbmVsPy5hcmlhRXhwYW5kZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImN1cnJlbnRQYW5lbD8uYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiKGN1cnJlbnRQYW5lbD8udGFiaW5kZXggPyBjdXJyZW50UGFuZWw/LnRhYmluZGV4IDogJzAnKVwiPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cImhlYWRpbmdMZXZlbFwiIGNsYXNzPVwiYy10YWJzX19wYW5lbC1oZWFkaW5nXCI+XG4gICAgICA8aDEgKm5nU3dpdGNoQ2FzZT1cIjFcIiAjdGFiU3JPbmx5IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIG1iLWJhc2UgbGc6bWItMCBmb250LXNlbWlib2xkXCI+PC9oMT5cbiAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiICN0YWJTck9ubHkgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWItYmFzZSBsZzptYi0wIGZvbnQtc2VtaWJvbGRcIj48L2gyPlxuICAgICAgPGgzICpuZ1N3aXRjaENhc2U9XCIzXCIgI3RhYlNyT25seSBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi1iYXNlIGxnOm1iLTAgZm9udC1zZW1pYm9sZFwiPjwvaDM+XG4gICAgICA8aDQgKm5nU3dpdGNoQ2FzZT1cIjRcIiAjdGFiU3JPbmx5IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIG1iLWJhc2UgbGc6bWItMCBmb250LXNlbWlib2xkXCI+PC9oND5cbiAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiICN0YWJTck9ubHkgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWItYmFzZSBsZzptYi0wIGZvbnQtc2VtaWJvbGRcIj48L2g1PlxuICAgICAgPGgzICpuZ1N3aXRjaERlZmF1bHQgI3RhYlNyT25seSBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi1iYXNlIGxnOm1iLTAgZm9udC1zZW1pYm9sZFwiPjwvaDM+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBnZXRJdGVtUGFuZWwoY3VycmVudFRhYiksIHRlbXBsYXRlOiBjdXJyZW50UGFuZWw/Lmh0bWwsIGh0bWw6IGdldFBhbmVsQ29udGVudChjdXJyZW50VGFiKSB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LXZpZXdzL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktdmlld3MvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNVLGlCQUFpQixFQUNoQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUVMLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBTWpFLE1BQU0sT0FBTyxhQUFjLFNBQVEsc0JBQXNCO0lBbUd2RCxZQUFvQixjQUFpQztRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQURVLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQS9FM0IsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNkLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDbkIsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDaEMsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDbEMsZUFBVSxHQUFXLElBQUksQ0FBQztRQUN4QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM3QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUM5QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLGlCQUFZ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O3NCQUFuRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDVixHQUFHO3NCQUEzQixXQUFXO3VCQUFDLFVBQVU7Z0JBQ1EsU0FBUztzQkFBdkMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ0ssWUFBWTtzQkFBN0MsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBQ0osTUFBTTtzQkFBakMsV0FBVzt1QkFBQyxhQUFhO2dCQUNLLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNHLFVBQVU7c0JBQXpDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUNDLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNPLGFBQWE7c0JBQWhELFdBQVc7dUJBQUMscUJBQXFCO2dCQUNULEdBQUc7c0JBQTNCLFdBQVc7dUJBQUMsVUFBVTtnQkFDRyxJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVc7Z0JBQ0ssT0FBTztzQkFBbkMsV0FBVzt1QkFBQyxjQUFjO2dCQUNNLFdBQVc7c0JBQTNDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNELFFBQVE7c0JBQXJDLFdBQVc7dUJBQUMsZUFBZTtnQkFDRSxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7IFN0cmluZ1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQgeyBUYWJzSXRlbXNEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS90YWItaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiSXRlbUNvbXBvbmVudCkgaXRlbUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUYWJJdGVtQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZHJlbigndGFiU2VsZWN0b3InKSB0YWJTZWxlY3RvcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZHJlbigndGFiU2VsZWN0b3JDb250ZW50V3JhcHBlcicpIHRhYlNlbGVjdG9yQ29udGVudFdyYXBwZXI6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgndGFiU3JPbmx5JykgdGFiU3JPbmx5OiBFbGVtZW50UmVmO1xuXG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgaWRQcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGluZ0xldmVsOiBudW1iZXI7XG5cbiAgQElucHV0KCkgdGl0bGVNb2RhbDogc3RyaW5nO1xuICBASW5wdXQoKSB0YWJsaXN0QXJpYUxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGl0ZW1zOiBUYWJzSXRlbXNEYXRhW107XG5cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzZXM6IGFueTtcblxuICAvL0FjY2Vzc2liaWxpdHlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaWREYXRhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZEJ5OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JykgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpIGFyaWFIaWRkZW46IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJykgYXJpYURpc2FibGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb250cm9scycpIGFyaWFDb250cm9sczogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY3VycmVudCcpIGFyaWFDdXJyZW50OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1saXZlJykgYXJpYUxpdmU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgYXJpYUV4cGFuZGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2UnKSBhcmlhRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oYXNwb3B1cCcpIGFyaWFIYXNQb3B1cDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbW9kYWwnKSBhcmlhTW9kYWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNoZWNrZWQnKSBhcmlhQ2hlY2tlZDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcHJlc3NlZCcpIGFyaWFQcmVzc2VkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yZWFkb25seScpIGFyaWFSZWFkb25seTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcmVxdWlyZWQnKSBhcmlhUmVxdWlyZWQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJykgYXJpYVNlbGVjdGVkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZW1pbicpIGFyaWFWYWx1ZW1pbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtdmFsdWVtYXgnKSBhcmlhVmFsdWVtYXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXZhbHVlbm93JykgYXJpYVZhbHVlbm93OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS12YWx1ZXRleHQnKSBhcmlhVmFsdWV0ZXh0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vcmllbnRhdGlvbicpIGFyaWFPcmllbnRhdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKSBhcmlhTGV2ZWw6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZScpIGFyaWFNdWx0aXNlbGVjdGFibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXBsYWNlaG9sZGVyJykgYXJpYVBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1wb3NpbnNldCcpIGFyaWFQb3NpbnNldDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2V0c2l6ZScpIGFyaWFTZXRzaXplOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1zb3J0JykgYXJpYVNvcnQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWJ1c3knKSBhcmlhQnVzeTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZHJvcGVmZmVjdCcpIGFyaWFEcm9wZWZmZWN0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1ncmFiYmVkJykgYXJpYUdyYWJiZWQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKSBhcmlhQWN0aXZlZGVzY2VuZGFudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXRvbWljJykgYXJpYUF0b21pYzogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYXV0b2NvbXBsZXRlJykgYXJpYUF1dG9jb21wbGV0ZTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYnJhaWxsZWxhYmVsJykgYXJpYUJyYWlsbGVsYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtYnJhaWxsZXJvbGVkZXNjcmlwdGlvbicpIGFyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb2xjb3VudCcpIGFyaWFDb2xjb3VudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtY29saW5kZXgnKSBhcmlhQ29saW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbGluZGV4dGV4dCcpIGFyaWFDb2xpbmRleHRleHQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWNvbHNwYW4nKSBhcmlhQ29sc3Bhbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpcHRpb24nKSBhcmlhRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRldGFpbHMnKSBhcmlhRGV0YWlsczogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZmxvd3RvJykgYXJpYUZsb3d0bzogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaW52YWxpZCcpIGFyaWFJbnZhbGlkOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1rZXlzaG9ydGN1dHMnKSBhcmlhS2V5c2hvcnRjdXRzOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1vd25zJykgYXJpYU93bnM6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJlbGV2YW50JykgYXJpYVJlbGV2YW50OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yb2xlZGVzY3JpcHRpb24nKSBhcmlhUm9sZWRlc2NyaXB0aW9uOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yb3djb3VudCcpIGFyaWFSb3djb3VudDogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm93aW5kZXgnKSBhcmlhUm93aW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd2luZGV4dGV4dCcpIGFyaWFSb3dpbmRleHRleHQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd3NwYW4nKSBhcmlhUm93c3Bhbjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JykgdGFiaW5kZXg6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpIHRpdGxlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYWx0JykgYWx0OiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIubGFuZycpIGxhbmc6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hY2Nlc3NrZXknKSBhY2Nlc3NrZXk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hdXRvY29tcGxldGUnKSBhdXRvY29tcGxldGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hdXRvZm9jdXMnKSBhdXRvZm9jdXM6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5jb250ZW50ZWRpdGFibGUnKSBjb250ZW50ZWRpdGFibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXInKSBkaXI6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5kcmFnZ2FibGUnKSBkcmFnZ2FibGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5lbnRlcmtleWhpbnQnKSBlbnRlcmtleWhpbnQ6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5oaWRkZW4nKSBoaWRkZW46IGJvb2xlYW4gPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaW5wdXRtb2RlJykgaW5wdXRtb2RlOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3BlbGxjaGVjaycpIHNwZWxsY2hlY2s6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci50cmFuc2xhdGUnKSB0cmFuc2xhdGU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW11bHRpbGluZScpIGFyaWFNdWx0aWxpbmU6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5mb3InKSBmb3I6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5mb3JtJykgZm9ybTogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhlYWRlcnMnKSBoZWFkZXJzOiBzdHJpbmcgPSBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlYWRvbmx5JykgcmVhZG9ubHk6IHN0cmluZyA9IG51bGw7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yZXF1aXJlZCcpIHJlcXVpcmVkOiBzdHJpbmcgPSBudWxsO1xuXG4gIGN1cnJlbnRUYWIgPSAwO1xuICBjdXJyZW50UGFuZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuY2xhc3NlcyA9IHRoaXMuY2xhc3NlcyA/ICdjLXRhYnMgJyArIHRoaXMuY2xhc3NlcyA6ICdjLXRhYnMnO1xuICAgIHRoaXMuaWREYXRhID0gdGhpcy5pZCA/IHRoaXMuaWQgOiBudWxsO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGlmIChpdGVtcykge1xuICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IGl0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiAoIXZhbHVlLmRpc2FibGVkICYmIHZhbHVlLmFjdGl2ZSkpO1xuICAgICAgdGhpcy5zZWxlY3RUYWIoc2VsZWN0ZWRJdGVtICE9PSAtMSA/IHNlbGVjdGVkSXRlbSA6IGl0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiAhdmFsdWUuZGlzYWJsZWQpKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXRJdGVtcygpOiBUYWJzSXRlbXNEYXRhW10gfCBUYWJJdGVtQ29tcG9uZW50W10ge1xuICAgIGNvbnN0IGl0ZW1zID0gKHRoaXMuaXRlbUNvbXBvbmVudHMubGVuZ3RoID4gMCkgPyB0aGlzLml0ZW1Db21wb25lbnRzLnRvQXJyYXkoKSA6IHRoaXMuaXRlbXM7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgZ2V0SXRlbVBhbmVsKHRhYjogbnVtYmVyKTogVGFiSXRlbUNvbXBvbmVudCB7XG4gICAgbGV0IHBhbmVsO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1t0YWJdO1xuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgVGFiSXRlbUNvbXBvbmVudCkge1xuICAgICAgcGFuZWwgPSBpdGVtLnBhbmVsQ29tcG9uZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFuZWw7XG4gIH1cblxuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaWRQcmVmaXgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlkUHJlZml4O1xuICAgIH1cbiAgfVxuXG4gIGdldEl0ZW1JZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgaWQ7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBpZiAoaXRlbVtpbmRleF0uaWQpIHtcbiAgICAgIGlkID0gaXRlbVtpbmRleF0uaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkID0gdGhpcy5nZXRJZFByZWZpeCgpICsgJy0nICsgaW5kZXg7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoaXRlbTogVGFic0l0ZW1zRGF0YSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IG51bGw7XG4gIH1cblxuXG4gIHNlbGVjdFRhYihpOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSBpO1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5nZXRJdGVtcygpW2ldO1xuICAgIHRoaXMuY3VycmVudFBhbmVsID0gY3VycmVudEl0ZW0gaW5zdGFuY2VvZiBUYWJJdGVtQ29tcG9uZW50ID8gY3VycmVudEl0ZW0ucGFuZWxDb21wb25lbnQgOiBjdXJyZW50SXRlbS5wYW5lbDtcbiAgICB0aGlzLnRhYlNyT25seS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMudGFiU2VsZWN0b3JDb250ZW50V3JhcHBlci50b0FycmF5KClbdGhpcy5jdXJyZW50VGFiXS5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgfVxuXG4gIGZvY3VzRmlyc3RUYWIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZWRUYWJzID0gdGhpcy50YWJTZWxlY3RvcnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gIWl0ZW1baW5kZXhdLmRpc2FibGVkKTtcbiAgICBlbmFibGVkVGFic1swXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c0xhc3RUYWIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuYWJsZWRUYWJzID0gdGhpcy50YWJTZWxlY3RvcnMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gIWl0ZW1baW5kZXhdLmRpc2FibGVkKTtcbiAgICBlbmFibGVkVGFic1tlbmFibGVkVGFicy5sZW5ndGggLSAxXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c05leHRUYWIoZm9jdXNlZFRhYjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZ2V0SXRlbXMoKTtcbiAgICBsZXQgbmV4dFRhYiA9IChmb2N1c2VkVGFiICsgMSkgJSBpdGVtLmxlbmd0aDtcbiAgICB3aGlsZSAobmV4dFRhYiAhPT0gZm9jdXNlZFRhYikge1xuICAgICAgaWYgKCFpdGVtW25leHRUYWJdLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMudGFiU2VsZWN0b3JzLmZpbmQoKGksIGluZGV4KSA9PiBpbmRleCA9PT0gbmV4dFRhYikubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5leHRUYWIgPSAobmV4dFRhYiArIDEpICUgaXRlbS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNQcmV2aW91c1RhYihmb2N1c2VkVGFiOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGxldCBwcmV2aW91c1RhYiA9IChmb2N1c2VkVGFiIC0gMSArIGl0ZW0ubGVuZ3RoKSAlIGl0ZW0ubGVuZ3RoO1xuICAgIHdoaWxlIChwcmV2aW91c1RhYiAhPT0gZm9jdXNlZFRhYikge1xuICAgICAgaWYgKCFpdGVtW3ByZXZpb3VzVGFiXS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnRhYlNlbGVjdG9ycy5maW5kKChpLCBpbmRleCkgPT4gaW5kZXggPT09IHByZXZpb3VzVGFiKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJldmlvdXNUYWIgPSAocHJldmlvdXNUYWIgLSAxICsgaXRlbS5sZW5ndGgpICUgaXRlbS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFuZWxDb250ZW50KHRhYjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIHJldHVybiBpdGVtW3RhYl0ucGFuZWwgJiYgaXRlbVt0YWJdLnBhbmVsLnRleHQgPyBgPHA+JHtTdHJpbmdVdGlscy5lc2NhcGVIdG1sKGl0ZW1bdGFiXS5wYW5lbC50ZXh0KX08L3A+YCA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgW25nU3dpdGNoXT1cImhlYWRpbmdMZXZlbFwiIGNsYXNzPVwiYy10YWJzX19wYW5lbC1oZWFkaW5nXCI+XG4gIDxoMSAqbmdTd2l0Y2hDYXNlPVwiMVwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDE+XG4gIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDI+XG4gIDxoMyAqbmdTd2l0Y2hDYXNlPVwiM1wiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDM+XG4gIDxoNCAqbmdTd2l0Y2hDYXNlPVwiNFwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDQ+XG4gIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiPnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDU+XG4gIDxoMiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dGl0bGUgPyB0aXRsZTogJ0NvbnRlbmlkbyd9fTwvaDI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldEl0ZW1zKClcIj5cbiAgPGRpdiBjbGFzcz1cImMtdGFic19fdGFic1wiIHJvbGU9XCJ0YWJsaXN0XCIgW2F0dHIuYXJpYS1sYWJlbF09dGFibGlzdEFyaWFMYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uICN0YWJTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmhvbWUpPVwiZm9jdXNGaXJzdFRhYigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbmQpPVwiZm9jdXNMYXN0VGFiKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93bGVmdCk9XCJmb2N1c1ByZXZpb3VzVGFiKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImZvY3VzTmV4dFRhYihpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBjLXRhYnNfX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS01MCBwb2ludGVyLWV2ZW50cy1ub25lJzogaXNEaXNhYmxlZChpdGVtKX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jLXRhYnNfX2xpbmstLWlzLWFjdGl2ZV09XCJjdXJyZW50VGFiID09PSBpID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiZ2V0SXRlbUlkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIihpdGVtLnJvbGUgPyBpdGVtLnJvbGUgOiAndGFiJylcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiY3VycmVudFRhYiA9PT0gaSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiJ3RhYi0nICsgZ2V0SXRlbUlkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIoY3VycmVudFRhYiAhPT0gaSB8fCBpdGVtLmRpc2FibGVkID8gJy0xJyA6IG51bGwpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoaXRlbSkgPyAndHJ1ZScgOiAoYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbClcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICN0YWJTZWxlY3RvckNvbnRlbnRXcmFwcGVyIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZSBncm91cC1mb2N1czpiZy13YXJuaW5nLWJhc2UgZ3JvdXAtZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMgZ3JvdXAtZm9jdXM6b3V0bGluZS1ub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGNvbXBvbmVudDogaXRlbS5jb250ZW50Q29tcG9uZW50LCBodG1sOiBpdGVtLmh0bWwsIHRleHQ6IGl0ZW0udGV4dH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBbY2xhc3NdPVwiWydjLXRhYnNfX3BhbmVsJywgY3VycmVudFBhbmVsPy5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJjdXJyZW50UGFuZWxcIlxuICAgICAgICBbYXR0ci5pZF09XCIndGFiLScgKyBnZXRJdGVtSWQoY3VycmVudFRhYilcIlxuICAgICAgICBbYXR0ci5yb2xlXT1cIihjdXJyZW50UGFuZWw/LnJvbGUgPyBjdXJyZW50UGFuZWw/LnJvbGUgOiAndGFicGFuZWwnKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJnZXRJdGVtSWQoY3VycmVudFRhYilcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCIoY3VycmVudFBhbmVsPy50YWJpbmRleCA/IGN1cnJlbnRQYW5lbD8udGFiaW5kZXggOiAnMCcpXCI+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwiaGVhZGluZ0xldmVsXCIgY2xhc3M9XCJjLXRhYnNfX3BhbmVsLWhlYWRpbmdcIj5cbiAgICAgIDxoMSAqbmdTd2l0Y2hDYXNlPVwiMVwiICN0YWJTck9ubHkgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWItYmFzZSBsZzptYi0wIGZvbnQtc2VtaWJvbGRcIj48L2gxPlxuICAgICAgPGgyICpuZ1N3aXRjaENhc2U9XCIyXCIgI3RhYlNyT25seSBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi1iYXNlIGxnOm1iLTAgZm9udC1zZW1pYm9sZFwiPjwvaDI+XG4gICAgICA8aDMgKm5nU3dpdGNoQ2FzZT1cIjNcIiAjdGFiU3JPbmx5IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIG1iLWJhc2UgbGc6bWItMCBmb250LXNlbWlib2xkXCI+PC9oMz5cbiAgICAgIDxoNCAqbmdTd2l0Y2hDYXNlPVwiNFwiICN0YWJTck9ubHkgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWItYmFzZSBsZzptYi0wIGZvbnQtc2VtaWJvbGRcIj48L2g0PlxuICAgICAgPGg1ICpuZ1N3aXRjaENhc2U9XCI1XCIgI3RhYlNyT25seSBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBtYi1iYXNlIGxnOm1iLTAgZm9udC1zZW1pYm9sZFwiPjwvaDU+XG4gICAgICA8aDMgKm5nU3dpdGNoRGVmYXVsdCAjdGFiU3JPbmx5IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIG1iLWJhc2UgbGc6bWItMCBmb250LXNlbWlib2xkXCI+PC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGdldEl0ZW1QYW5lbChjdXJyZW50VGFiKSwgdGVtcGxhdGU6IGN1cnJlbnRQYW5lbD8uaHRtbCwgaHRtbDogZ2V0UGFuZWxDb250ZW50KGN1cnJlbnRUYWIpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=