@eui/ecl 18.0.0-next.4 → 18.0.0-next.41

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 (621) hide show
  1. package/assets/i18n-ecl/bg.json +3 -1
  2. package/assets/i18n-ecl/cs.json +3 -1
  3. package/assets/i18n-ecl/da.json +3 -1
  4. package/assets/i18n-ecl/de.json +4 -2
  5. package/assets/i18n-ecl/el.json +4 -2
  6. package/assets/i18n-ecl/en.json +4 -2
  7. package/assets/i18n-ecl/es.json +4 -2
  8. package/assets/i18n-ecl/et.json +3 -1
  9. package/assets/i18n-ecl/fi.json +4 -2
  10. package/assets/i18n-ecl/fr.json +4 -2
  11. package/assets/i18n-ecl/ga.json +4 -2
  12. package/assets/i18n-ecl/hr.json +3 -1
  13. package/assets/i18n-ecl/hu.json +4 -2
  14. package/assets/i18n-ecl/it.json +4 -2
  15. package/assets/i18n-ecl/lt.json +4 -2
  16. package/assets/i18n-ecl/lv.json +4 -2
  17. package/assets/i18n-ecl/mt.json +4 -2
  18. package/assets/i18n-ecl/nl.json +4 -2
  19. package/assets/i18n-ecl/pl.json +4 -2
  20. package/assets/i18n-ecl/pt.json +4 -2
  21. package/assets/i18n-ecl/ro.json +4 -2
  22. package/assets/i18n-ecl/sk.json +4 -2
  23. package/assets/i18n-ecl/sl.json +4 -2
  24. package/assets/i18n-ecl/sv.json +3 -1
  25. package/docs/classes/{EclMessageCloseEvent.html → EclNotificationCloseEvent.html} +3 -3
  26. package/docs/components/EclAccordionComponent.html +2 -2
  27. package/docs/components/EclAccordionItemComponent.html +3 -3
  28. package/docs/components/EclAppComponent.html +2 -2
  29. package/docs/components/EclBannerComponent.html +2 -2
  30. package/docs/components/EclBlockquoteComponent.html +2 -2
  31. package/docs/components/EclBreadcrumbComponent.html +2 -2
  32. package/docs/components/EclBreadcrumbSegmentComponent.html +3 -3
  33. package/docs/components/EclButtonComponent.html +2 -2
  34. package/docs/components/EclCardBodyComponent.html +2 -2
  35. package/docs/components/EclCardComponent.html +2 -2
  36. package/docs/components/EclCarouselComponent.html +71 -26
  37. package/docs/components/EclCarouselItemComponent.html +2 -2
  38. package/docs/components/EclCategoryFilterComponent.html +2 -2
  39. package/docs/components/EclCategoryFilterItemComponent.html +2 -2
  40. package/docs/components/EclCategoryFilterListComponent.html +2 -2
  41. package/docs/components/EclCheckboxHelpComponent.html +2 -2
  42. package/docs/components/EclCheckboxLabelComponent.html +29 -5
  43. package/docs/components/EclContentBlockComponent.html +2 -2
  44. package/docs/components/EclContentItemComponent.html +2 -2
  45. package/docs/components/EclDateBlockComponent.html +2 -2
  46. package/docs/components/EclDescriptionListDefinitionComponent.html +2 -2
  47. package/docs/components/EclExpandableComponent.html +2 -2
  48. package/docs/components/EclFactFiguresComponent.html +2 -2
  49. package/docs/components/EclFactFiguresDescriptionComponent.html +2 -2
  50. package/docs/components/EclFactFiguresItemComponent.html +2 -2
  51. package/docs/components/EclFactFiguresTitleComponent.html +2 -2
  52. package/docs/components/EclFactFiguresValueComponent.html +2 -2
  53. package/docs/components/EclFactFiguresViewAllComponent.html +2 -2
  54. package/docs/components/EclFeaturedComponent.html +7 -7
  55. package/docs/components/EclFeaturedItemComponent.html +3 -3
  56. package/docs/components/EclFeaturedItemDescriptionComponent.html +2 -2
  57. package/docs/components/{EclPageHeaderDescriptionContainerComponent.html → EclFeaturedItemFooterComponent.html} +14 -209
  58. package/docs/components/EclFileComponent.html +3 -3
  59. package/docs/components/EclFileItemComponent.html +2 -2
  60. package/docs/components/EclFileItemsComponent.html +2 -2
  61. package/docs/components/EclFileTaxonomyComponent.html +2 -2
  62. package/docs/components/EclFormGroupComponent.html +2 -2
  63. package/docs/components/EclFormLabelComponent.html +7 -7
  64. package/docs/components/EclGalleryComponent.html +27 -144
  65. package/docs/components/EclGalleryFooterComponent.html +3 -3
  66. package/docs/components/EclGalleryItemComponent.html +4 -92
  67. package/docs/components/EclIconComponent.html +4 -6
  68. package/docs/components/EclInpageNavigationComponent.html +104 -3
  69. package/docs/components/EclInpageNavigationItemComponent.html +3 -3
  70. package/docs/components/EclListIllustrationComponent.html +2 -2
  71. package/docs/components/EclListIllustrationItemComponent.html +2 -2
  72. package/docs/components/{EclSpinnerComponent.html → EclLoadingIndicatorComponent.html} +13 -13
  73. package/docs/components/EclMediaContainerComponent.html +11 -161
  74. package/docs/components/EclMenuComponent.html +3 -3
  75. package/docs/components/EclMenuItemComponent.html +3 -3
  76. package/docs/components/EclMenuMegaComponent.html +2 -26
  77. package/docs/components/EclMenuMegaItemComponent.html +68 -4
  78. package/docs/components/EclModalBodyComponent.html +2 -2
  79. package/docs/components/EclModalComponent.html +2 -2
  80. package/docs/components/EclModalFooterComponent.html +2 -2
  81. package/docs/components/EclModalHeaderComponent.html +2 -2
  82. package/docs/components/EclMultiselectComponent.html +39 -3
  83. package/docs/components/EclMultiselectDropdownComponent.html +32 -3
  84. package/docs/components/EclMultiselectInputComponent.html +136 -4
  85. package/docs/components/EclMultiselectOptgroupComponent.html +2 -2
  86. package/docs/components/EclMultiselectOptionComponent.html +34 -4
  87. package/docs/components/EclNavigationListComponent.html +85 -3
  88. package/docs/components/EclNavigationListImageComponent.html +2 -2
  89. package/docs/components/EclNavigationListItemComponent.html +30 -7
  90. package/docs/components/EclNewsTickerComponent.html +2 -2
  91. package/docs/components/EclNewsTickerItemComponent.html +2 -2
  92. package/docs/components/{EclMessageComponent.html → EclNotificationComponent.html} +103 -48
  93. package/docs/components/EclPageHeaderComponent.html +15 -34
  94. package/docs/components/EclPaginationComponent.html +7 -7
  95. package/docs/components/EclPaginationItemComponent.html +172 -6
  96. package/docs/components/EclPopoverComponent.html +265 -77
  97. package/docs/components/EclRadioHelpComponent.html +2 -2
  98. package/docs/components/EclRadioLabelComponent.html +2 -2
  99. package/docs/components/EclRangeValueComponent.html +2 -2
  100. package/docs/components/EclRatingFieldComponent.html +2 -2
  101. package/docs/components/EclSearchFormComponent.html +46 -3
  102. package/docs/components/EclSelectContainerComponent.html +2 -2
  103. package/docs/components/EclSiteFooterComponent.html +4 -4
  104. package/docs/components/EclSiteFooterFixedContentECComponent.html +4 -4
  105. package/docs/components/EclSiteFooterFixedContentEUComponent.html +4 -4
  106. package/docs/components/EclSiteHeaderActionComponent.html +2 -2
  107. package/docs/components/EclSiteHeaderBannerTopComponent.html +104 -3
  108. package/docs/components/EclSiteHeaderComponent.html +74 -76
  109. package/docs/components/EclSiteHeaderEnvironmentComponent.html +2 -2
  110. package/docs/components/EclSiteHeaderLanguageComponent.html +16 -4
  111. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +16 -4
  112. package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
  113. package/docs/components/{EclSiteHeaderMessageComponent.html → EclSiteHeaderNotificationComponent.html} +8 -8
  114. package/docs/components/EclSiteHeaderSearchComponent.html +2 -2
  115. package/docs/components/EclSocialMediaFollowComponent.html +3 -3
  116. package/docs/components/EclSocialMediaFollowItemComponent.html +28 -4
  117. package/docs/components/EclSocialMediaShareComponent.html +2 -2
  118. package/docs/components/EclSocialMediaShareItemComponent.html +2 -2
  119. package/docs/components/EclStickyContainerComponent.html +77 -4
  120. package/docs/components/EclTabComponent.html +5 -74
  121. package/docs/components/EclTabLabelComponent.html +2 -2
  122. package/docs/components/EclTabMoreComponent.html +3 -97
  123. package/docs/components/EclTableSortButtonComponent.html +72 -27
  124. package/docs/components/EclTabsComponent.html +3 -27
  125. package/docs/components/EclTagComponent.html +54 -7
  126. package/docs/components/EclTimelineComponent.html +2 -2
  127. package/docs/components/EclTimelineItemComponent.html +2 -2
  128. package/docs/components/EclTimelineItemTogglerComponent.html +2 -2
  129. package/docs/dependencies.html +39 -29
  130. package/docs/directives/EclCheckboxDirective.html +26 -2
  131. package/docs/directives/{EclSiteFooterLogoImageDesktopDirective.html → EclFeaturedItemFooterLinkDirective.html} +9 -17
  132. package/docs/directives/{EclMessageTitleDirective.html → EclFeaturedItemFooterPictureDirective.html} +4 -4
  133. package/docs/directives/EclLinkDirective.html +3 -3
  134. package/docs/directives/{EclSpinnerLabelDirective.html → EclLoadingIndicatorLabelDirective.html} +4 -4
  135. package/docs/directives/{EclPopoverItemDirective.html → EclLoadingIndicatorOverlayDirective.html} +4 -4
  136. package/docs/directives/EclMediaContainerItemDirective.html +0 -76
  137. package/docs/directives/{EclPopoverLinkDirective.html → EclNotificationTitleDirective.html} +4 -4
  138. package/docs/directives/EclPageHeaderDescriptionContainerDirective.html +498 -0
  139. package/docs/directives/EclPageHeaderInfoDirective.html +498 -0
  140. package/docs/directives/EclPageHeaderTitleDirective.html +50 -52
  141. package/docs/directives/EclSiteFooterListDirective.html +2 -2
  142. package/docs/directives/EclSiteFooterSectionDirective.html +4 -4
  143. package/docs/directives/EclSiteFooterTitleDirective.html +1 -1
  144. package/docs/directives/EclSiteHeaderImageDirective.html +498 -0
  145. package/docs/directives/EclSiteHeaderLinkDirective.html +498 -0
  146. package/docs/directives/EclSiteHeaderPictureDirective.html +498 -0
  147. package/docs/directives/EclTableDirective.html +1 -1
  148. package/docs/directives/EclTableHeaderDirective.html +32 -1
  149. package/docs/directives/{EclPopoverListDirective.html → EclTagSetDirective.html} +4 -4
  150. package/docs/index.html +2 -2
  151. package/docs/js/menu-wc.js +193 -146
  152. package/docs/js/menu-wc_es5.js +1 -1
  153. package/docs/js/search/search_index.js +2 -2
  154. package/docs/miscellaneous/variables.html +44 -58
  155. package/docs/modules/EclAllModule.html +12 -12
  156. package/docs/modules/EclFeaturedModule.html +32 -8
  157. package/docs/modules/{EclMessageComponentModule.html → EclLoadingIndicatorComponentModule.html} +13 -7
  158. package/docs/modules/{EclSpinnerComponentModule.html → EclNotificationComponentModule.html} +7 -7
  159. package/docs/modules/EclTagComponentModule.html +6 -0
  160. package/docs/modules.html +18 -18
  161. package/esm2022/lib/components/ecl-accordion/ecl-accordion-item.component.mjs +6 -7
  162. package/esm2022/lib/components/ecl-accordion/ecl-accordion.component.mjs +4 -4
  163. package/esm2022/lib/components/ecl-accordion/ecl-accordion.module.mjs +5 -5
  164. package/esm2022/lib/components/ecl-app/ecl-app.component.mjs +4 -4
  165. package/esm2022/lib/components/ecl-app/ecl-app.module.mjs +5 -5
  166. package/esm2022/lib/components/ecl-banner/ecl-banner-credit.directive.mjs +4 -4
  167. package/esm2022/lib/components/ecl-banner/ecl-banner-description.directive.mjs +7 -7
  168. package/esm2022/lib/components/ecl-banner/ecl-banner-picture.directive.mjs +7 -7
  169. package/esm2022/lib/components/ecl-banner/ecl-banner-title.directive.mjs +7 -7
  170. package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +4 -4
  171. package/esm2022/lib/components/ecl-banner/ecl-banner.module.mjs +5 -5
  172. package/esm2022/lib/components/ecl-base.directive.mjs +4 -4
  173. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote-picture.directive.mjs +7 -7
  174. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.component.mjs +4 -4
  175. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.module.mjs +5 -5
  176. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.mjs +5 -5
  177. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.mjs +4 -4
  178. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.module.mjs +5 -5
  179. package/esm2022/lib/components/ecl-button/ecl-button-label.directive.mjs +4 -4
  180. package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +4 -4
  181. package/esm2022/lib/components/ecl-button/ecl-button.module.mjs +5 -5
  182. package/esm2022/lib/components/ecl-card/ecl-card-body.component.mjs +4 -4
  183. package/esm2022/lib/components/ecl-card/ecl-card-picture.directive.mjs +7 -7
  184. package/esm2022/lib/components/ecl-card/ecl-card.component.mjs +4 -4
  185. package/esm2022/lib/components/ecl-card/ecl-card.module.mjs +5 -5
  186. package/esm2022/lib/components/ecl-carousel/ecl-carousel-item.component.mjs +4 -4
  187. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +4 -6
  188. package/esm2022/lib/components/ecl-carousel/ecl-carousel.module.mjs +5 -5
  189. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.mjs +4 -4
  190. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.mjs +4 -4
  191. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.mjs +4 -4
  192. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter.module.mjs +5 -5
  193. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-help.component.mjs +7 -6
  194. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-input.directive.mjs +4 -4
  195. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-label.component.mjs +14 -18
  196. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.directive.mjs +18 -19
  197. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.module.mjs +5 -5
  198. package/esm2022/lib/components/ecl-content-block/ecl-content-block-elements.directive.mjs +52 -52
  199. package/esm2022/lib/components/ecl-content-block/ecl-content-block.component.mjs +4 -4
  200. package/esm2022/lib/components/ecl-content-block/ecl-content-block.module.mjs +5 -5
  201. package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +7 -7
  202. package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +4 -4
  203. package/esm2022/lib/components/ecl-content-item/ecl-content-item.module.mjs +5 -5
  204. package/esm2022/lib/components/ecl-date-block/ecl-date-block.component.mjs +4 -4
  205. package/esm2022/lib/components/ecl-date-block/ecl-date-block.module.mjs +5 -5
  206. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.directive.mjs +4 -4
  207. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.module.mjs +5 -5
  208. package/esm2022/lib/components/ecl-expandable/ecl-expandable.component.mjs +4 -4
  209. package/esm2022/lib/components/ecl-expandable/ecl-expandable.module.mjs +5 -5
  210. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-description.component.mjs +4 -4
  211. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-item.component.mjs +4 -4
  212. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-title.component.mjs +4 -4
  213. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-value.component.mjs +4 -4
  214. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-view-all.component.mjs +4 -4
  215. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.component.mjs +4 -4
  216. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.module.mjs +5 -5
  217. package/esm2022/lib/components/ecl-featured/ecl-featured-item-description.component.mjs +4 -4
  218. package/esm2022/lib/components/ecl-featured/ecl-featured-item-footer.component.mjs +19 -0
  219. package/esm2022/lib/components/ecl-featured/ecl-featured-item-link.directive.mjs +37 -4
  220. package/esm2022/lib/components/ecl-featured/ecl-featured-item.component.mjs +5 -6
  221. package/esm2022/lib/components/ecl-featured/ecl-featured.component.mjs +11 -16
  222. package/esm2022/lib/components/ecl-featured/ecl-featured.module.mjs +18 -8
  223. package/esm2022/lib/components/ecl-featured/index.mjs +2 -1
  224. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.directive.mjs +4 -4
  225. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.module.mjs +5 -5
  226. package/esm2022/lib/components/ecl-file/ecl-file-download.directive.mjs +7 -7
  227. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +4 -4
  228. package/esm2022/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.mjs +4 -4
  229. package/esm2022/lib/components/ecl-file/ecl-file-picture.directive.mjs +10 -10
  230. package/esm2022/lib/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.mjs +4 -4
  231. package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +5 -5
  232. package/esm2022/lib/components/ecl-file/ecl-file.module.mjs +5 -5
  233. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.directive.mjs +4 -4
  234. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.module.mjs +5 -5
  235. package/esm2022/lib/components/ecl-form-group/ecl-form-group.component.mjs +4 -4
  236. package/esm2022/lib/components/ecl-form-group/ecl-form-group.module.mjs +5 -5
  237. package/esm2022/lib/components/ecl-form-label/ecl-form-label.component.mjs +15 -30
  238. package/esm2022/lib/components/ecl-form-label/ecl-form-label.module.mjs +5 -5
  239. package/esm2022/lib/components/ecl-gallery/ecl-gallery-footer.component.mjs +7 -8
  240. package/esm2022/lib/components/ecl-gallery/ecl-gallery-item.component.mjs +10 -29
  241. package/esm2022/lib/components/ecl-gallery/ecl-gallery-media.directive.mjs +7 -7
  242. package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +20 -78
  243. package/esm2022/lib/components/ecl-gallery/ecl-gallery.module.mjs +5 -5
  244. package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +4 -4
  245. package/esm2022/lib/components/ecl-help-block/ecl-help-block.module.mjs +5 -5
  246. package/esm2022/lib/components/ecl-icon/ecl-icon.component.mjs +8 -13
  247. package/esm2022/lib/components/ecl-icon/ecl-icon.module.mjs +5 -5
  248. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.mjs +5 -5
  249. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +34 -16
  250. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.module.mjs +9 -9
  251. package/esm2022/lib/components/ecl-label/ecl-label.directive.mjs +4 -4
  252. package/esm2022/lib/components/ecl-label/ecl-label.module.mjs +5 -5
  253. package/esm2022/lib/components/ecl-link/ecl-link-label.directive.mjs +4 -4
  254. package/esm2022/lib/components/ecl-link/ecl-link.directive.mjs +7 -7
  255. package/esm2022/lib/components/ecl-link/ecl-link.module.mjs +5 -5
  256. package/esm2022/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.mjs +4 -4
  257. package/esm2022/lib/components/ecl-list/ecl-description-list-definition-item.directive.mjs +7 -7
  258. package/esm2022/lib/components/ecl-list/ecl-list.directive.mjs +19 -19
  259. package/esm2022/lib/components/ecl-list/ecl-list.module.mjs +5 -5
  260. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-icon.directive.mjs +4 -4
  261. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +4 -4
  262. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.mjs +7 -7
  263. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.component.mjs +4 -4
  264. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.module.mjs +5 -5
  265. package/esm2022/lib/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.mjs +19 -0
  266. package/esm2022/lib/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.mjs +20 -0
  267. package/esm2022/lib/components/ecl-loading-indicator/ecl-loading-indicator.component.mjs +43 -0
  268. package/esm2022/lib/components/ecl-loading-indicator/ecl-loading-indicator.module.mjs +21 -0
  269. package/esm2022/lib/components/ecl-loading-indicator/index.mjs +5 -0
  270. package/esm2022/lib/components/ecl-media-container/ecl-media-container-iframe.directive.mjs +4 -4
  271. package/esm2022/lib/components/ecl-media-container/ecl-media-container-item.directive.mjs +5 -16
  272. package/esm2022/lib/components/ecl-media-container/ecl-media-container-picture.directive.mjs +4 -4
  273. package/esm2022/lib/components/ecl-media-container/ecl-media-container.component.mjs +9 -32
  274. package/esm2022/lib/components/ecl-media-container/ecl-media-container.module.mjs +5 -5
  275. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +5 -5
  276. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu.component.mjs +11 -14
  277. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +39 -21
  278. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.mjs +6 -18
  279. package/esm2022/lib/components/ecl-menu/ecl-menu.module.mjs +5 -5
  280. package/esm2022/lib/components/ecl-modal/ecl-modal-body-fixed.directive.mjs +4 -4
  281. package/esm2022/lib/components/ecl-modal/ecl-modal-body.component.mjs +4 -4
  282. package/esm2022/lib/components/ecl-modal/ecl-modal-close.directive.mjs +4 -4
  283. package/esm2022/lib/components/ecl-modal/ecl-modal-footer.component.mjs +4 -4
  284. package/esm2022/lib/components/ecl-modal/ecl-modal-header.component.mjs +4 -4
  285. package/esm2022/lib/components/ecl-modal/ecl-modal-trigger.directive.mjs +4 -4
  286. package/esm2022/lib/components/ecl-modal/ecl-modal.component.mjs +4 -4
  287. package/esm2022/lib/components/ecl-modal/ecl-modal.module.mjs +5 -5
  288. package/esm2022/lib/components/ecl-multiselect/boldText.pipe.mjs +4 -4
  289. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +25 -32
  290. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.mjs +36 -22
  291. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.mjs +4 -4
  292. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.mjs +12 -17
  293. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option.directive.mjs +4 -4
  294. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +23 -18
  295. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.module.mjs +5 -5
  296. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-image/ecl-navigation-list-image.component.mjs +4 -4
  297. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.mjs +17 -12
  298. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-picture.directive.mjs +7 -7
  299. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.component.mjs +25 -14
  300. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.module.mjs +5 -5
  301. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.mjs +4 -4
  302. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.component.mjs +4 -4
  303. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.module.mjs +5 -5
  304. package/esm2022/lib/components/ecl-notification/ecl-notification-title.directive.mjs +20 -0
  305. package/esm2022/lib/components/ecl-notification/ecl-notification.component.mjs +82 -0
  306. package/esm2022/lib/components/ecl-notification/ecl-notification.module.mjs +23 -0
  307. package/esm2022/lib/components/ecl-notification/index.mjs +4 -0
  308. package/esm2022/lib/components/ecl-page-header/ecl-page-header-background.directive.mjs +7 -7
  309. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description.directive.mjs +27 -17
  310. package/esm2022/lib/components/ecl-page-header/ecl-page-header-info.directive.mjs +21 -0
  311. package/esm2022/lib/components/ecl-page-header/ecl-page-header-meta.directive.mjs +7 -7
  312. package/esm2022/lib/components/ecl-page-header/ecl-page-header-title.directive.mjs +13 -7
  313. package/esm2022/lib/components/ecl-page-header/ecl-page-header.component.mjs +18 -29
  314. package/esm2022/lib/components/ecl-page-header/ecl-page-header.module.mjs +13 -10
  315. package/esm2022/lib/components/ecl-page-header/index.mjs +2 -2
  316. package/esm2022/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +39 -31
  317. package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +14 -28
  318. package/esm2022/lib/components/ecl-pagination/ecl-pagination.module.mjs +5 -5
  319. package/esm2022/lib/components/ecl-popover/ecl-popover-content.directive.mjs +4 -4
  320. package/esm2022/lib/components/ecl-popover/ecl-popover-toggle.directive.mjs +4 -4
  321. package/esm2022/lib/components/ecl-popover/ecl-popover.component.mjs +178 -37
  322. package/esm2022/lib/components/ecl-popover/ecl-popover.module.mjs +11 -20
  323. package/esm2022/lib/components/ecl-popover/index.mjs +1 -2
  324. package/esm2022/lib/components/ecl-radio/ecl-radio-help.component.mjs +4 -4
  325. package/esm2022/lib/components/ecl-radio/ecl-radio-input.directive.mjs +4 -4
  326. package/esm2022/lib/components/ecl-radio/ecl-radio-label.component.mjs +4 -4
  327. package/esm2022/lib/components/ecl-radio/ecl-radio.directive.mjs +4 -4
  328. package/esm2022/lib/components/ecl-radio/ecl-radio.module.mjs +5 -5
  329. package/esm2022/lib/components/ecl-range/ecl-range-value.component.mjs +4 -4
  330. package/esm2022/lib/components/ecl-range/ecl-range.directive.mjs +4 -4
  331. package/esm2022/lib/components/ecl-range/ecl-range.module.mjs +5 -5
  332. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.component.mjs +4 -4
  333. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.module.mjs +5 -5
  334. package/esm2022/lib/components/ecl-search-form/ecl-search-form.component.mjs +21 -19
  335. package/esm2022/lib/components/ecl-search-form/ecl-search-form.module.mjs +5 -5
  336. package/esm2022/lib/components/ecl-select/ecl-select-container.component.mjs +4 -4
  337. package/esm2022/lib/components/ecl-select/ecl-select.directive.mjs +4 -4
  338. package/esm2022/lib/components/ecl-select/ecl-select.module.mjs +5 -5
  339. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.mjs +12 -19
  340. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-column.directive.mjs +10 -10
  341. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-description.directive.mjs +4 -4
  342. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.mjs +13 -33
  343. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.mjs +21 -27
  344. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.mjs +13 -27
  345. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.mjs +10 -15
  346. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.mjs +8 -13
  347. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.component.mjs +11 -16
  348. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.module.mjs +6 -9
  349. package/esm2022/lib/components/ecl-site-header/action/ecl-site-header-action.component.mjs +4 -4
  350. package/esm2022/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.mjs +14 -7
  351. package/esm2022/lib/components/ecl-site-header/cta/ecl-site-header-cta.directive.mjs +4 -4
  352. package/esm2022/lib/components/ecl-site-header/ecl-site-header-environment/ecl-site-header-environment.component.mjs +5 -5
  353. package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +12 -14
  354. package/esm2022/lib/components/ecl-site-header/ecl-site-header.module.mjs +21 -11
  355. package/esm2022/lib/components/ecl-site-header/index.mjs +3 -2
  356. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +14 -12
  357. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language.component.mjs +12 -11
  358. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login-details.directive.mjs +7 -7
  359. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +4 -4
  360. package/esm2022/lib/components/ecl-site-header/notification/ecl-site-header-notification.component.mjs +18 -0
  361. package/esm2022/lib/components/ecl-site-header/notification/index.mjs +2 -0
  362. package/esm2022/lib/components/ecl-site-header/picture/ecl-site-header-picture.directive.mjs +55 -0
  363. package/esm2022/lib/components/ecl-site-header/{message → picture}/index.mjs +2 -2
  364. package/esm2022/lib/components/ecl-site-header/search/ecl-site-header-search.component.mjs +4 -4
  365. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.mjs +14 -10
  366. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-link.directive.mjs +4 -4
  367. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +7 -12
  368. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.mjs +7 -6
  369. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +4 -4
  370. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-link.directive.mjs +4 -4
  371. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +4 -4
  372. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.module.mjs +5 -5
  373. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.component.mjs +43 -20
  374. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.module.mjs +5 -5
  375. package/esm2022/lib/components/ecl-table/ecl-table-sort-button.component.mjs +10 -9
  376. package/esm2022/lib/components/ecl-table/ecl-table.directive.mjs +37 -36
  377. package/esm2022/lib/components/ecl-table/ecl-table.module.mjs +5 -5
  378. package/esm2022/lib/components/ecl-tabs/ecl-tab-label.component.mjs +4 -4
  379. package/esm2022/lib/components/ecl-tabs/ecl-tab-more.component.mjs +9 -18
  380. package/esm2022/lib/components/ecl-tabs/ecl-tab.component.mjs +11 -23
  381. package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +9 -11
  382. package/esm2022/lib/components/ecl-tabs/ecl-tabs.module.mjs +5 -5
  383. package/esm2022/lib/components/ecl-tag/ecl-tag-set.directive.mjs +20 -0
  384. package/esm2022/lib/components/ecl-tag/ecl-tag.component.mjs +18 -10
  385. package/esm2022/lib/components/ecl-tag/ecl-tag.module.mjs +9 -8
  386. package/esm2022/lib/components/ecl-tag/index.mjs +2 -1
  387. package/esm2022/lib/components/ecl-text-area/ecl-text-area.directive.mjs +4 -4
  388. package/esm2022/lib/components/ecl-text-area/ecl-text-area.module.mjs +5 -5
  389. package/esm2022/lib/components/ecl-text-input/ecl-text-input.directive.mjs +4 -4
  390. package/esm2022/lib/components/ecl-text-input/ecl-text-input.module.mjs +5 -5
  391. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-label.directive.mjs +4 -4
  392. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-title.directive.mjs +4 -4
  393. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-toggler.component.mjs +4 -4
  394. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +4 -4
  395. package/esm2022/lib/components/ecl-timeline/ecl-timeline.component.mjs +4 -4
  396. package/esm2022/lib/components/ecl-timeline/ecl-timeline.module.mjs +5 -5
  397. package/esm2022/lib/components/index.mjs +3 -3
  398. package/esm2022/lib/services/ecl-default-language.service.mjs +4 -4
  399. package/esm2022/lib/services/ecl-rtl.service.mjs +4 -4
  400. package/esm2022/lib/services/ecl-theme.service.mjs +4 -4
  401. package/esm2022/lib/shared/ecl-all.module.mjs +15 -15
  402. package/esm2022/lib/utils/directives/ecl-click-outside/ecl-click-outside.directive.mjs +4 -4
  403. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.directive.mjs +4 -4
  404. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.module.mjs +5 -5
  405. package/fesm2022/eui-ecl.mjs +6539 -6169
  406. package/fesm2022/eui-ecl.mjs.map +4 -4
  407. package/lib/components/ecl-accordion/ecl-accordion-item.component.d.ts.map +1 -1
  408. package/lib/components/ecl-banner/ecl-banner.component.d.ts.map +1 -1
  409. package/lib/components/ecl-base.directive.d.ts.map +1 -1
  410. package/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.d.ts.map +1 -1
  411. package/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.d.ts.map +1 -1
  412. package/lib/components/ecl-button/ecl-button.component.d.ts.map +1 -1
  413. package/lib/components/ecl-carousel/ecl-carousel-item.component.d.ts.map +1 -1
  414. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts +2 -2
  415. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts.map +1 -1
  416. package/lib/components/ecl-checkbox/ecl-checkbox-help.component.d.ts +1 -0
  417. package/lib/components/ecl-checkbox/ecl-checkbox-help.component.d.ts.map +1 -1
  418. package/lib/components/ecl-checkbox/ecl-checkbox-label.component.d.ts +7 -3
  419. package/lib/components/ecl-checkbox/ecl-checkbox-label.component.d.ts.map +1 -1
  420. package/lib/components/ecl-checkbox/ecl-checkbox.directive.d.ts +9 -5
  421. package/lib/components/ecl-checkbox/ecl-checkbox.directive.d.ts.map +1 -1
  422. package/lib/components/ecl-expandable/ecl-expandable.component.d.ts.map +1 -1
  423. package/lib/components/ecl-featured/ecl-featured-item-footer.component.d.ts +8 -0
  424. package/lib/components/ecl-featured/ecl-featured-item-footer.component.d.ts.map +1 -0
  425. package/lib/components/ecl-featured/ecl-featured-item-link.directive.d.ts +10 -0
  426. package/lib/components/ecl-featured/ecl-featured-item-link.directive.d.ts.map +1 -1
  427. package/lib/components/ecl-featured/ecl-featured.component.d.ts +3 -2
  428. package/lib/components/ecl-featured/ecl-featured.component.d.ts.map +1 -1
  429. package/lib/components/ecl-featured/ecl-featured.module.d.ts +5 -4
  430. package/lib/components/ecl-featured/ecl-featured.module.d.ts.map +1 -1
  431. package/lib/components/ecl-featured/index.d.ts +1 -0
  432. package/lib/components/ecl-featured/index.d.ts.map +1 -1
  433. package/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts.map +1 -1
  434. package/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.d.ts.map +1 -1
  435. package/lib/components/ecl-form-label/ecl-form-label.component.d.ts +8 -4
  436. package/lib/components/ecl-form-label/ecl-form-label.component.d.ts.map +1 -1
  437. package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts +4 -10
  438. package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts.map +1 -1
  439. package/lib/components/ecl-gallery/ecl-gallery.component.d.ts +15 -38
  440. package/lib/components/ecl-gallery/ecl-gallery.component.d.ts.map +1 -1
  441. package/lib/components/ecl-icon/ecl-icon.component.d.ts +1 -1
  442. package/lib/components/ecl-icon/ecl-icon.component.d.ts.map +1 -1
  443. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts +10 -2
  444. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts.map +1 -1
  445. package/lib/components/ecl-link/ecl-link.directive.d.ts +3 -3
  446. package/lib/components/ecl-link/ecl-link.directive.d.ts.map +1 -1
  447. package/lib/components/ecl-list/ecl-list.directive.d.ts.map +1 -1
  448. package/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.d.ts.map +1 -1
  449. package/lib/components/ecl-list-illustration/ecl-list-illustration.component.d.ts.map +1 -1
  450. package/lib/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.d.ts +7 -0
  451. package/lib/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.d.ts.map +1 -0
  452. package/lib/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.d.ts +8 -0
  453. package/lib/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.d.ts.map +1 -0
  454. package/lib/components/ecl-loading-indicator/ecl-loading-indicator.component.d.ts +14 -0
  455. package/lib/components/ecl-loading-indicator/ecl-loading-indicator.component.d.ts.map +1 -0
  456. package/lib/components/ecl-loading-indicator/ecl-loading-indicator.module.d.ts +12 -0
  457. package/lib/components/ecl-loading-indicator/ecl-loading-indicator.module.d.ts.map +1 -0
  458. package/lib/components/ecl-loading-indicator/index.d.ts +5 -0
  459. package/lib/components/ecl-loading-indicator/index.d.ts.map +1 -0
  460. package/lib/components/ecl-media-container/ecl-media-container-item.directive.d.ts +1 -8
  461. package/lib/components/ecl-media-container/ecl-media-container-item.directive.d.ts.map +1 -1
  462. package/lib/components/ecl-media-container/ecl-media-container.component.d.ts +2 -23
  463. package/lib/components/ecl-media-container/ecl-media-container.component.d.ts.map +1 -1
  464. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts +2 -1
  465. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts.map +1 -1
  466. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.d.ts +11 -5
  467. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.d.ts.map +1 -1
  468. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.d.ts +1 -5
  469. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.d.ts.map +1 -1
  470. package/lib/components/ecl-modal/ecl-modal-body.component.d.ts.map +1 -1
  471. package/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.d.ts +3 -0
  472. package/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.d.ts.map +1 -1
  473. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts +17 -7
  474. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts.map +1 -1
  475. package/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.d.ts +5 -3
  476. package/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.d.ts.map +1 -1
  477. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts +8 -3
  478. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
  479. package/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.d.ts +4 -3
  480. package/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.d.ts.map +1 -1
  481. package/lib/components/ecl-navigation-list/ecl-navigation-list.component.d.ts +10 -3
  482. package/lib/components/ecl-navigation-list/ecl-navigation-list.component.d.ts.map +1 -1
  483. package/lib/components/ecl-news-ticker/ecl-news-ticker.component.d.ts.map +1 -1
  484. package/lib/components/ecl-notification/ecl-notification-title.directive.d.ts +8 -0
  485. package/lib/components/ecl-notification/ecl-notification-title.directive.d.ts.map +1 -0
  486. package/lib/components/ecl-notification/ecl-notification.component.d.ts +26 -0
  487. package/lib/components/ecl-notification/ecl-notification.component.d.ts.map +1 -0
  488. package/lib/components/ecl-notification/ecl-notification.module.d.ts +14 -0
  489. package/lib/components/ecl-notification/ecl-notification.module.d.ts.map +1 -0
  490. package/lib/components/ecl-notification/index.d.ts +4 -0
  491. package/lib/components/ecl-notification/index.d.ts.map +1 -0
  492. package/lib/components/ecl-page-header/ecl-page-header-description.directive.d.ts +5 -0
  493. package/lib/components/ecl-page-header/ecl-page-header-description.directive.d.ts.map +1 -1
  494. package/lib/components/ecl-page-header/ecl-page-header-info.directive.d.ts +8 -0
  495. package/lib/components/ecl-page-header/ecl-page-header-info.directive.d.ts.map +1 -0
  496. package/lib/components/ecl-page-header/ecl-page-header-title.directive.d.ts +4 -2
  497. package/lib/components/ecl-page-header/ecl-page-header-title.directive.d.ts.map +1 -1
  498. package/lib/components/ecl-page-header/ecl-page-header.component.d.ts +6 -11
  499. package/lib/components/ecl-page-header/ecl-page-header.component.d.ts.map +1 -1
  500. package/lib/components/ecl-page-header/ecl-page-header.module.d.ts +4 -4
  501. package/lib/components/ecl-page-header/ecl-page-header.module.d.ts.map +1 -1
  502. package/lib/components/ecl-page-header/index.d.ts +1 -1
  503. package/lib/components/ecl-page-header/index.d.ts.map +1 -1
  504. package/lib/components/ecl-pagination/ecl-pagination-item.component.d.ts +16 -5
  505. package/lib/components/ecl-pagination/ecl-pagination-item.component.d.ts.map +1 -1
  506. package/lib/components/ecl-pagination/ecl-pagination.component.d.ts +8 -4
  507. package/lib/components/ecl-pagination/ecl-pagination.component.d.ts.map +1 -1
  508. package/lib/components/ecl-popover/ecl-popover.component.d.ts +29 -6
  509. package/lib/components/ecl-popover/ecl-popover.component.d.ts.map +1 -1
  510. package/lib/components/ecl-popover/ecl-popover.module.d.ts +5 -5
  511. package/lib/components/ecl-popover/ecl-popover.module.d.ts.map +1 -1
  512. package/lib/components/ecl-popover/index.d.ts +0 -1
  513. package/lib/components/ecl-popover/index.d.ts.map +1 -1
  514. package/lib/components/ecl-search-form/ecl-search-form.component.d.ts +3 -0
  515. package/lib/components/ecl-search-form/ecl-search-form.component.d.ts.map +1 -1
  516. package/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.d.ts +2 -1
  517. package/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.d.ts.map +1 -1
  518. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.d.ts +0 -8
  519. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.d.ts.map +1 -1
  520. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.d.ts +4 -2
  521. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.d.ts.map +1 -1
  522. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.d.ts +8 -4
  523. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.d.ts.map +1 -1
  524. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.d.ts +2 -1
  525. package/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.d.ts.map +1 -1
  526. package/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.d.ts +2 -1
  527. package/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.d.ts.map +1 -1
  528. package/lib/components/ecl-site-footer/ecl-site-footer.component.d.ts +2 -1
  529. package/lib/components/ecl-site-footer/ecl-site-footer.component.d.ts.map +1 -1
  530. package/lib/components/ecl-site-footer/ecl-site-footer.module.d.ts +1 -1
  531. package/lib/components/ecl-site-footer/ecl-site-footer.module.d.ts.map +1 -1
  532. package/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.d.ts +1 -0
  533. package/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.d.ts.map +1 -1
  534. package/lib/components/ecl-site-header/ecl-site-header.component.d.ts +6 -4
  535. package/lib/components/ecl-site-header/ecl-site-header.component.d.ts.map +1 -1
  536. package/lib/components/ecl-site-header/ecl-site-header.module.d.ts +11 -10
  537. package/lib/components/ecl-site-header/ecl-site-header.module.d.ts.map +1 -1
  538. package/lib/components/ecl-site-header/index.d.ts +2 -1
  539. package/lib/components/ecl-site-header/index.d.ts.map +1 -1
  540. package/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.d.ts +3 -1
  541. package/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.d.ts.map +1 -1
  542. package/lib/components/ecl-site-header/language/ecl-site-header-language.component.d.ts +3 -2
  543. package/lib/components/ecl-site-header/language/ecl-site-header-language.component.d.ts.map +1 -1
  544. package/lib/components/ecl-site-header/notification/ecl-site-header-notification.component.d.ts +8 -0
  545. package/lib/components/ecl-site-header/notification/ecl-site-header-notification.component.d.ts.map +1 -0
  546. package/lib/components/ecl-site-header/notification/index.d.ts +2 -0
  547. package/lib/components/ecl-site-header/notification/index.d.ts.map +1 -0
  548. package/lib/components/ecl-site-header/picture/ecl-site-header-picture.directive.d.ts +18 -0
  549. package/lib/components/ecl-site-header/picture/ecl-site-header-picture.directive.d.ts.map +1 -0
  550. package/lib/components/ecl-site-header/picture/index.d.ts +2 -0
  551. package/lib/components/ecl-site-header/picture/index.d.ts.map +1 -0
  552. package/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.d.ts +2 -1
  553. package/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.d.ts.map +1 -1
  554. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.d.ts +2 -1
  555. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.d.ts.map +1 -1
  556. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.d.ts +4 -3
  557. package/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.d.ts.map +1 -1
  558. package/lib/components/ecl-sticky-container/ecl-sticky-container.component.d.ts +14 -2
  559. package/lib/components/ecl-sticky-container/ecl-sticky-container.component.d.ts.map +1 -1
  560. package/lib/components/ecl-table/ecl-table-sort-button.component.d.ts +2 -2
  561. package/lib/components/ecl-table/ecl-table-sort-button.component.d.ts.map +1 -1
  562. package/lib/components/ecl-table/ecl-table.directive.d.ts +7 -4
  563. package/lib/components/ecl-table/ecl-table.directive.d.ts.map +1 -1
  564. package/lib/components/ecl-tabs/ecl-tab-more.component.d.ts +2 -2
  565. package/lib/components/ecl-tabs/ecl-tab-more.component.d.ts.map +1 -1
  566. package/lib/components/ecl-tabs/ecl-tab.component.d.ts +5 -4
  567. package/lib/components/ecl-tabs/ecl-tab.component.d.ts.map +1 -1
  568. package/lib/components/ecl-tabs/ecl-tabs.component.d.ts +2 -5
  569. package/lib/components/ecl-tabs/ecl-tabs.component.d.ts.map +1 -1
  570. package/lib/components/ecl-tag/ecl-tag-set.directive.d.ts +8 -0
  571. package/lib/components/ecl-tag/ecl-tag-set.directive.d.ts.map +1 -0
  572. package/lib/components/ecl-tag/ecl-tag.component.d.ts +6 -7
  573. package/lib/components/ecl-tag/ecl-tag.component.d.ts.map +1 -1
  574. package/lib/components/ecl-tag/ecl-tag.module.d.ts +4 -3
  575. package/lib/components/ecl-tag/ecl-tag.module.d.ts.map +1 -1
  576. package/lib/components/ecl-tag/index.d.ts +1 -0
  577. package/lib/components/ecl-tag/index.d.ts.map +1 -1
  578. package/lib/components/index.d.ts +2 -2
  579. package/lib/components/index.d.ts.map +1 -1
  580. package/lib/services/ecl-default-language.service.d.ts +2 -1
  581. package/lib/services/ecl-default-language.service.d.ts.map +1 -1
  582. package/lib/services/ecl-theme.service.d.ts +1 -1
  583. package/lib/services/ecl-theme.service.d.ts.map +1 -1
  584. package/lib/shared/ecl-all.module.d.ts +20 -20
  585. package/package.json +1 -1
  586. package/docs/classes/EclGalleryDownloadEvent.html +0 -382
  587. package/esm2022/lib/components/ecl-message/ecl-message-title.directive.mjs +0 -20
  588. package/esm2022/lib/components/ecl-message/ecl-message.component.mjs +0 -88
  589. package/esm2022/lib/components/ecl-message/ecl-message.module.mjs +0 -22
  590. package/esm2022/lib/components/ecl-message/index.mjs +0 -4
  591. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.mjs +0 -47
  592. package/esm2022/lib/components/ecl-popover/ecl-popover-list.directive.mjs +0 -52
  593. package/esm2022/lib/components/ecl-site-header/message/ecl-site-header-message.component.mjs +0 -18
  594. package/esm2022/lib/components/ecl-spinner/ecl-spinner-label.directive.mjs +0 -19
  595. package/esm2022/lib/components/ecl-spinner/ecl-spinner.component.mjs +0 -51
  596. package/esm2022/lib/components/ecl-spinner/ecl-spinner.module.mjs +0 -20
  597. package/esm2022/lib/components/ecl-spinner/index.mjs +0 -4
  598. package/lib/components/ecl-message/ecl-message-title.directive.d.ts +0 -8
  599. package/lib/components/ecl-message/ecl-message-title.directive.d.ts.map +0 -1
  600. package/lib/components/ecl-message/ecl-message.component.d.ts +0 -21
  601. package/lib/components/ecl-message/ecl-message.component.d.ts.map +0 -1
  602. package/lib/components/ecl-message/ecl-message.module.d.ts +0 -13
  603. package/lib/components/ecl-message/ecl-message.module.d.ts.map +0 -1
  604. package/lib/components/ecl-message/index.d.ts +0 -4
  605. package/lib/components/ecl-message/index.d.ts.map +0 -1
  606. package/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.d.ts +0 -19
  607. package/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.d.ts.map +0 -1
  608. package/lib/components/ecl-popover/ecl-popover-list.directive.d.ts +0 -18
  609. package/lib/components/ecl-popover/ecl-popover-list.directive.d.ts.map +0 -1
  610. package/lib/components/ecl-site-header/message/ecl-site-header-message.component.d.ts +0 -8
  611. package/lib/components/ecl-site-header/message/ecl-site-header-message.component.d.ts.map +0 -1
  612. package/lib/components/ecl-site-header/message/index.d.ts +0 -2
  613. package/lib/components/ecl-site-header/message/index.d.ts.map +0 -1
  614. package/lib/components/ecl-spinner/ecl-spinner-label.directive.d.ts +0 -7
  615. package/lib/components/ecl-spinner/ecl-spinner-label.directive.d.ts.map +0 -1
  616. package/lib/components/ecl-spinner/ecl-spinner.component.d.ts +0 -12
  617. package/lib/components/ecl-spinner/ecl-spinner.component.d.ts.map +0 -1
  618. package/lib/components/ecl-spinner/ecl-spinner.module.d.ts +0 -11
  619. package/lib/components/ecl-spinner/ecl-spinner.module.d.ts.map +0 -1
  620. package/lib/components/ecl-spinner/index.d.ts +0 -4
  621. package/lib/components/ecl-spinner/index.d.ts.map +0 -1
@@ -295,12 +295,12 @@ export class EclMenuItemComponent extends ECLBaseDirective {
295
295
  this.isMobileBreakpoint = result.matches;
296
296
  });
297
297
  }
298
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.2", ngImport: i0, type: EclMenuItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ApplicationRef }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
299
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-next.2", type: EclMenuItemComponent, selector: "ecl-menu-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemCaret: "menuItemCaret", menuItemHover: "menuItemHover", menuItemHoverOut: "menuItemHoverOut", menuMegaItemSelect: "menuMegaItemSelect", menuItemFocus: "menuItemFocus", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "mouseenter": "onItemMouseEnter($event)", "mouseleave": "onItemMouseLeave($event)" }, properties: { "attr.role": "this.role", "class": "this.cssClasses", "class.ecl-menu__item--has-children": "this.hasEclChildrenDataAttribute", "attr.aria-haspopup": "this.hasEclChildrenDataAttribute", "attr.aria-expanded": "this.isAriaExpanded" } }, queries: [{ propertyName: "submenu", first: true, predicate: i0.forwardRef(() => EclMenuMegaComponent), descendants: true }], viewQueries: [{ propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }, { propertyName: "menuButton", first: true, predicate: EclButtonComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a\n #menuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.5", ngImport: i0, type: EclMenuItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ApplicationRef }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
299
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-next.5", type: EclMenuItemComponent, selector: "ecl-menu-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemCaret: "menuItemCaret", menuItemHover: "menuItemHover", menuItemHoverOut: "menuItemHoverOut", menuMegaItemSelect: "menuMegaItemSelect", menuItemFocus: "menuItemFocus", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "mouseenter": "onItemMouseEnter($event)", "mouseleave": "onItemMouseLeave($event)" }, properties: { "attr.role": "this.role", "class": "this.cssClasses", "class.ecl-menu__item--has-children": "this.hasEclChildrenDataAttribute", "attr.aria-haspopup": "this.hasEclChildrenDataAttribute", "attr.aria-expanded": "this.isAriaExpanded" } }, queries: [{ propertyName: "submenu", first: true, predicate: i0.forwardRef(() => EclMenuMegaComponent), descendants: true }], viewQueries: [{ propertyName: "menuLink", first: true, predicate: ["menuLink"], descendants: true }, { propertyName: "menuButton", first: true, predicate: EclButtonComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a\n #menuLink\n variant=\"standalone\"\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n variant=\"standalone\"\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n isIconOnly\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"ghost\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n isIconOnly\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"ghost\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
300
300
  }
301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2", ngImport: i0, type: EclMenuItemComponent, decorators: [{
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.5", ngImport: i0, type: EclMenuItemComponent, decorators: [{
302
302
  type: Component,
303
- args: [{ selector: 'ecl-menu-item', encapsulation: ViewEncapsulation.None, template: "<a\n #menuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"primary\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
303
+ args: [{ selector: 'ecl-menu-item', encapsulation: ViewEncapsulation.None, template: "<a\n #menuLink\n variant=\"standalone\"\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n #menuLink\n variant=\"standalone\"\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<button\n eclButton\n isIconOnly\n *ngIf=\"hasChildren && isMobileBreakpoint\"\n variant=\"ghost\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<button\n eclButton\n isIconOnly\n *ngIf=\"hasChildren && !isMobileBreakpoint\"\n variant=\"ghost\"\n class=\"ecl-menu__button-caret\"\n type=\"button\"\n aria-label=\"Access item's children\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n</button>\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n" }]
304
304
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ApplicationRef }, { type: i1.BreakpointObserver }], propDecorators: { id: [{
305
305
  type: Input
306
306
  }], label: [{
@@ -362,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
362
362
  type: HostListener,
363
363
  args: ['mouseleave', ['$event']]
364
364
  }] } });
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBRXZCLHNCQUFzQixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBYXRFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFrQnRELElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxLQUFLLENB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QkFDaEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTTdCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQXlDakMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU10QyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtbWVudS1pdGVtLm1vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBFY2xNZW51SXRlbUNhcmV0RXZlbnQsXG4gICAgRWNsTWVudUl0ZW1Gb2N1c0V2ZW50LFxuICAgIEVjbE1lbnVJdGVtSG92ZXJFdmVudCxcbiAgICBFY2xNZW51SXRlbUhvdmVyT3V0RXZlbnQsXG4gICAgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQsXG4gICAgRWNsTWVudUl0ZW1QYXJlbnRGb2N1c0V2ZW50LFxuICAgIEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQsXG59IGZyb20gJy4uL2NvbW1vbi9lY2wtbWVudS1pdGVtLmV2ZW50JztcbmltcG9ydCB7IEVjbE1lbnVNZWdhQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLW1lbnUtbWVnYS9lY2wtbWVudS1tZWdhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbXMsIFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuXG5jb25zdCBlbnVtIENvbFRyaWdnZXIge1xuICAgIENPTDFfVFJJR0dFUiA9IDUsXG4gICAgQ09MMl9UUklHR0VSID0gOSxcbiAgICBDT0wzX1RSSUdHRVIgPSAxMyxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtbWVudS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTWVudUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgRWNsTWVudUl0ZW0sIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nIHwgYW55W10gPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBxdWVyeVBhcmFtc0hhbmRsaW5nOiBRdWVyeVBhcmFtc0hhbmRsaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBocmVmID0gJyc7XG4gICAgQElucHV0KCkgdGFyZ2V0ID0gJyc7XG4gICAgQElucHV0KCkgaXNDdXJyZW50ID0gZmFsc2U7XG5cbiAgICBpc0V4cGFuZGVkOiBib29sZWFuO1xuICAgIGlzRnVsbCA9IGZhbHNlO1xuICAgIGlzSG92ZXJlZCA9IGZhbHNlO1xuICAgIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGl0ZW0nO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtbWVudV9faXRlbScpLFxuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnQgPyAnZWNsLW1lbnVfX2l0ZW0tLWN1cnJlbnQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPyAnZWNsLW1lbnVfX2l0ZW0tLWV4cGFuZGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5nZXRDbGFzc0RlcGVuZGluZ0NoaWxkcmVuQ250KCksXG4gICAgICAgIF1cbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEVjbE1lbnVNZWdhQ29tcG9uZW50KSkgc3VibWVudTogRWNsTWVudU1lZ2FDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbWVudUxpbmsnKSBtZW51TGluazogRWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZChFY2xCdXR0b25Db21wb25lbnQpIG1lbnVCdXR0b246IEVjbEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIEBPdXRwdXQoKSBtZW51SXRlbVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1TZWxlY3RFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1DYXJldCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1DYXJldEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUhvdmVyRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtSG92ZXJPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudU1lZ2FJdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbVNlbGVjdEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUZvY3VzRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1LZXlkb3duRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1tZW51X19pdGVtLS1oYXMtY2hpbGRyZW4nKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJylcbiAgICBnZXQgaGFzRWNsQ2hpbGRyZW5EYXRhQXR0cmlidXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIGdldCBpc0FyaWFFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4gPyB0aGlzLmlzSG92ZXJlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnN1Ym1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkcmVuKCk6IEFycmF5PEVjbE1lbnVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuID8gdGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMudG9BcnJheSgpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgYXJmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSBjZGtCcmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1Gb2N1cyhldnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUZvY3VzLm5leHQobmV3IEVjbE1lbnVJdGVtRm9jdXNFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1TZWxlY3QubmV4dChuZXcgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCh0aGlzLCBldnQpKTtcblxuICAgICAgICBpZiAoIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2FyZXRDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNhcmV0Lm5leHQobmV3IEVjbE1lbnVJdGVtQ2FyZXRFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbkl0ZW1Nb3VzZUVudGVyKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtSG92ZXIubmV4dChuZXcgRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KHRoaXMsIGV2dCkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG9uSXRlbU1vdXNlTGVhdmUoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Ib3Zlck91dC5uZXh0KG5ldyBFY2xNZW51SXRlbUhvdmVyT3V0RXZlbnQodGhpcywgZXZ0KSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51KSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1lbnUubWVudUl0ZW1TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVNZWdhSXRlbVNlbGVjdC5uZXh0KG5ldyBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KGl0Lm1lbnVJdGVtLCBpdC5kb21FdmVudCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1Ym1lbnUubWVudU1lZ2FJdGVtUGFyZW50Rm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXQ6IEVjbE1lbnVJdGVtUGFyZW50Rm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25Gb2N1c0Zyb21TdWJtZW51KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzU3VibWVudUFueVNlbGVjdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzRnJvbVN1Ym1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkZvY3VzRnJvbU5leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1c0Zyb21QcmV2KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25LZXlkb3duKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICgoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdE1lZ2FNZW51SXRlbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19MRUZUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkxpbmtLZXlkb3duKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICgoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua05leHRGb2N1cyhldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19SSUdIVDoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25MaW5rTmV4dEZvY3VzKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtFc2NhcGUoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrTWVudUl0ZW0obWF4TGluZXM6IG51bWJlciwgaXNNb2JpbGVCcmVha3BvaW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChtYXhMaW5lcyA8IDEpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY3VycmVudExpbmsgPSB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJywgJ2ZsZXgtc3RhcnQnKTtcbiAgICAgICAgY29uc3QgbGlua1N0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudExpbmspO1xuXG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuZ2V0TWVudUl0ZW1MaW5rTWF4SGVpZ2h0KGxpbmtTdHlsZSwgbWF4TGluZXMpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TGluay5vZmZzZXRIZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTWVudUl0ZW1MaW5rV2lkdGgoY3VycmVudExpbmssIG1heExpbmVzLCBsaW5rU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkxpbmtFc2NhcGUoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW51QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51TGluay5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Rmlyc3RNZWdhTWVudUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VibWVudS5zZWxlY3RGaXJzdFN1Ykl0ZW0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTGlua0ZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTGlua05leHRGb2N1cyhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25CdXR0b25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51QnV0dG9uLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1lbnVJdGVtTGlua01heEhlaWdodChsaW5rU3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sIG1heExpbmVzOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQobGlua1N0eWxlLmxpbmVIZWlnaHQsIDEwKSAqIG1heExpbmVzICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdUb3AsIDEwKSArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nQm90dG9tLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VNZW51SXRlbUxpbmtXaWR0aChjdXJyZW50TGluazogSFRNTEFuY2hvckVsZW1lbnQsIG1heExpbmVzOiBudW1iZXIsIGxpbmtTdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGN1cnJlbnRMaW5rLCAnd2hpdGUtc3BhY2UnLCAnbm93cmFwJyk7XG4gICAgICAgIGNvbnN0IGxpbmtXaWR0aCA9IGN1cnJlbnRMaW5rLm9mZnNldFdpZHRoO1xuICAgICAgICBpZiAobWF4TGluZXMgPT09IDEpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gYCR7bGlua1dpZHRoICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdMZWZ0LCAxMCkgKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ1JpZ2h0LCAxMCl9cHhgO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjdXJyZW50TGluaywgJ3doaXRlLXNwYWNlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dFNpemUgPSBjdXJyZW50TGluay50ZXh0Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGV0dGVyV2lkdGggPSBNYXRoLmNlaWwobGlua1dpZHRoIC8gdGV4dFNpemUpO1xuICAgICAgICBjb25zdCB3b3Jkc0FycmF5ID0gY3VycmVudExpbmsudGV4dC50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZ29hbFdpZHRoID0gTWF0aC5jZWlsKGxpbmtXaWR0aCAvIG1heExpbmVzKTtcbiAgICAgICAgY29uc3QgZmlyc3RXb3JkID0gd29yZHNBcnJheVswXTtcbiAgICAgICAgbGV0IGNudCA9IDE7XG4gICAgICAgIGxldCB3b3JkV2lkdGggPSBNYXRoLmNlaWwoKGZpcnN0V29yZC5sZW5ndGggKyAxKSAqIGxldHRlcldpZHRoKTtcbiAgICAgICAgd2hpbGUgKHdvcmRXaWR0aCA8IGdvYWxXaWR0aCkge1xuICAgICAgICAgICAgd29yZFdpZHRoICs9IE1hdGguY2VpbCgod29yZHNBcnJheVtjbnRdLmxlbmd0aCArIDEpICogbGV0dGVyV2lkdGgpO1xuICAgICAgICAgICAgY250Kys7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudExpbmsuc3R5bGUud2lkdGggPSBgJHt3b3JkV2lkdGggKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ0xlZnQsIDEwKSArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nUmlnaHQsIDEwKX1weGA7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudExpbmssICd3aGl0ZS1zcGFjZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2xhc3NEZXBlbmRpbmdDaGlsZHJlbkNudCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MMV9UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MMl9UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MM19UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGdWxsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VjbC1tZW51X19pdGVtLS1mdWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNTdWJtZW51QW55U2VsZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VibWVudSAmJiAhIXRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmZpbmQoKGl0KSA9PiBpdC5pc0N1cnJlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXQsIEJyZWFrcG9pbnRzLlRhYmxldCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgPSByZXN1bHQubWF0Y2hlcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxhXG4gICAgI21lbnVMaW5rXG4gICAgKm5nSWY9XCJocmVmXCJcbiAgICBbaHJlZl09XCJocmVmXCJcbiAgICBbdGFyZ2V0XT1cInRhcmdldFwiXG4gICAgY2xhc3M9XCJlY2wtbWVudV9fbGlua1wiXG4gICAgW2NsYXNzLmVjbC1tZW51X19saW5rLS1jdXJyZW50XT1cImlzQ3VycmVudFwiXG4gICAgKGZvY3VzKT1cIm9uSXRlbUZvY3VzKCRldmVudClcIlxuICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJvbkxpbmtLZXlkb3duKCRldmVudClcIj5cbiAgICB7eyBsYWJlbCB9fVxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48YVxuICAgICNtZW51TGlua1xuICAgICpuZ0lmPVwiIWhyZWZcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGlua1wiXG4gICAgW3F1ZXJ5UGFyYW1zXT1cInF1ZXJ5UGFyYW1zXCJcbiAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJxdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19saW5rXCJcbiAgICBbY2xhc3MuZWNsLW1lbnVfX2xpbmstLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcbiAgICAoZm9jdXMpPVwib25JdGVtRm9jdXMoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uTGlua0tleWRvd24oJGV2ZW50KVwiPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cbjxidXR0b25cbiAgICBlY2xCdXR0b25cbiAgICAqbmdJZj1cImhhc0NoaWxkcmVuICYmIGlzTW9iaWxlQnJlYWtwb2ludFwiXG4gICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2J1dHRvbi1jYXJldFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgYXJpYS1sYWJlbD1cIkFjY2VzcyBpdGVtJ3MgY2hpbGRyZW5cIlxuICAgIChjbGljayk9XCJvbkl0ZW1DYXJldENsaWNrKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uQnV0dG9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwieHNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgY2xhc3M9XCJlY2wtYnV0dG9uX19pY29uXCI+PC9lY2wtaWNvbj5cbjwvYnV0dG9uPlxuPGJ1dHRvblxuICAgIGVjbEJ1dHRvblxuICAgICpuZ0lmPVwiaGFzQ2hpbGRyZW4gJiYgIWlzTW9iaWxlQnJlYWtwb2ludFwiXG4gICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2J1dHRvbi1jYXJldFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgYXJpYS1sYWJlbD1cIkFjY2VzcyBpdGVtJ3MgY2hpbGRyZW5cIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNBcmlhRXhwYW5kZWRcIlxuICAgIChrZXlkb3duKT1cIm9uQnV0dG9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwieHNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgY2xhc3M9XCJlY2wtYnV0dG9uX19pY29uXCI+PC9lY2wtaWNvbj5cbjwvYnV0dG9uPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLW1lbnUtbWVnYVwiPjwvbmctY29udGVudD5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUvZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBRXZCLHNCQUFzQixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBYXRFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFrQnRELElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxLQUFLLENB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QkFDaEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTTdCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQXlDakMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU10QyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtbWVudS1pdGVtLm1vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBFY2xNZW51SXRlbUNhcmV0RXZlbnQsXG4gICAgRWNsTWVudUl0ZW1Gb2N1c0V2ZW50LFxuICAgIEVjbE1lbnVJdGVtSG92ZXJFdmVudCxcbiAgICBFY2xNZW51SXRlbUhvdmVyT3V0RXZlbnQsXG4gICAgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQsXG4gICAgRWNsTWVudUl0ZW1QYXJlbnRGb2N1c0V2ZW50LFxuICAgIEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQsXG59IGZyb20gJy4uL2NvbW1vbi9lY2wtbWVudS1pdGVtLmV2ZW50JztcbmltcG9ydCB7IEVjbE1lbnVNZWdhQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLW1lbnUtbWVnYS9lY2wtbWVudS1tZWdhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbXMsIFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuXG5jb25zdCBlbnVtIENvbFRyaWdnZXIge1xuICAgIENPTDFfVFJJR0dFUiA9IDUsXG4gICAgQ09MMl9UUklHR0VSID0gOSxcbiAgICBDT0wzX1RSSUdHRVIgPSAxMyxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtbWVudS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTWVudUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgRWNsTWVudUl0ZW0sIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nIHwgYW55W10gPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBxdWVyeVBhcmFtc0hhbmRsaW5nOiBRdWVyeVBhcmFtc0hhbmRsaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBocmVmID0gJyc7XG4gICAgQElucHV0KCkgdGFyZ2V0ID0gJyc7XG4gICAgQElucHV0KCkgaXNDdXJyZW50ID0gZmFsc2U7XG5cbiAgICBpc0V4cGFuZGVkOiBib29sZWFuO1xuICAgIGlzRnVsbCA9IGZhbHNlO1xuICAgIGlzSG92ZXJlZCA9IGZhbHNlO1xuICAgIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIGlzVmlzaWJsZSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGl0ZW0nO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtbWVudV9faXRlbScpLFxuICAgICAgICAgICAgdGhpcy5pc0N1cnJlbnQgPyAnZWNsLW1lbnVfX2l0ZW0tLWN1cnJlbnQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPyAnZWNsLW1lbnVfX2l0ZW0tLWV4cGFuZGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5nZXRDbGFzc0RlcGVuZGluZ0NoaWxkcmVuQ250KCksXG4gICAgICAgIF1cbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEVjbE1lbnVNZWdhQ29tcG9uZW50KSkgc3VibWVudTogRWNsTWVudU1lZ2FDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbWVudUxpbmsnKSBtZW51TGluazogRWxlbWVudFJlZjxIVE1MQW5jaG9yRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZChFY2xCdXR0b25Db21wb25lbnQpIG1lbnVCdXR0b246IEVjbEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIEBPdXRwdXQoKSBtZW51SXRlbVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1TZWxlY3RFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1DYXJldCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1DYXJldEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUhvdmVyRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtSG92ZXJPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtSG92ZXJPdXRFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbWVudU1lZ2FJdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbVNlbGVjdEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBtZW51SXRlbUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xNZW51SXRlbUZvY3VzRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1LZXlkb3duRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1tZW51X19pdGVtLS1oYXMtY2hpbGRyZW4nKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJylcbiAgICBnZXQgaGFzRWNsQ2hpbGRyZW5EYXRhQXR0cmlidXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDaGlsZHJlbiB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIGdldCBpc0FyaWFFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4gPyB0aGlzLmlzSG92ZXJlZCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnN1Ym1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkcmVuKCk6IEFycmF5PEVjbE1lbnVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0NoaWxkcmVuID8gdGhpcy5zdWJtZW51LmVjbE1lbnVNZWdhSXRlbXMudG9BcnJheSgpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgYXJmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSBjZGtCcmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1Gb2N1cyhldnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUZvY3VzLm5leHQobmV3IEVjbE1lbnVJdGVtRm9jdXNFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1TZWxlY3QubmV4dChuZXcgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCh0aGlzLCBldnQpKTtcblxuICAgICAgICBpZiAoIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2FyZXRDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNhcmV0Lm5leHQobmV3IEVjbE1lbnVJdGVtQ2FyZXRFdmVudCh0aGlzLCBldnQpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbkl0ZW1Nb3VzZUVudGVyKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtSG92ZXIubmV4dChuZXcgRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KHRoaXMsIGV2dCkpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIG9uSXRlbU1vdXNlTGVhdmUoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1Ib3Zlck91dC5uZXh0KG5ldyBFY2xNZW51SXRlbUhvdmVyT3V0RXZlbnQodGhpcywgZXZ0KSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdWJtZW51KSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1lbnUubWVudUl0ZW1TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVNZWdhSXRlbVNlbGVjdC5uZXh0KG5ldyBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KGl0Lm1lbnVJdGVtLCBpdC5kb21FdmVudCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1Ym1lbnUubWVudU1lZ2FJdGVtUGFyZW50Rm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXQ6IEVjbE1lbnVJdGVtUGFyZW50Rm9jdXNFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25Gb2N1c0Zyb21TdWJtZW51KCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzU3VibWVudUFueVNlbGVjdGlvbnMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzRnJvbVN1Ym1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkZvY3VzRnJvbU5leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1c0Zyb21QcmV2KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTGlua0ZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25LZXlkb3duKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICgoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdE1lZ2FNZW51SXRlbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19MRUZUOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtGb2N1cygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtS2V5ZG93bi5uZXh0KG5ldyBFY2xNZW51SXRlbUtleWRvd25FdmVudCh0aGlzLCBldnQgYXMgS2V5Ym9hcmRFdmVudCkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkxpbmtLZXlkb3duKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICgoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTGlua05leHRGb2N1cyhldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19SSUdIVDoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25MaW5rTmV4dEZvY3VzKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxpbmtFc2NhcGUoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrTWVudUl0ZW0obWF4TGluZXM6IG51bWJlciwgaXNNb2JpbGVCcmVha3BvaW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChtYXhMaW5lcyA8IDEpIHJldHVybjtcblxuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY3VycmVudExpbmsgPSB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChpc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJywgJ2ZsZXgtc3RhcnQnKTtcbiAgICAgICAgY29uc3QgbGlua1N0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY3VycmVudExpbmspO1xuXG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuZ2V0TWVudUl0ZW1MaW5rTWF4SGVpZ2h0KGxpbmtTdHlsZSwgbWF4TGluZXMpO1xuXG4gICAgICAgIGlmIChjdXJyZW50TGluay5vZmZzZXRIZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTWVudUl0ZW1MaW5rV2lkdGgoY3VycmVudExpbmssIG1heExpbmVzLCBsaW5rU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudEl0ZW0sICdhbGlnbkl0ZW1zJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkxpbmtFc2NhcGUoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW51QnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51TGluay5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Rmlyc3RNZWdhTWVudUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VibWVudS5zZWxlY3RGaXJzdFN1Ykl0ZW0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTGlua0ZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTGlua05leHRGb2N1cyhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMub25CdXR0b25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUtleWRvd24ubmV4dChuZXcgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQodGhpcywgZXZ0IGFzIEtleWJvYXJkRXZlbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25CdXR0b25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51QnV0dG9uLmVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1lbnVJdGVtTGlua01heEhlaWdodChsaW5rU3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sIG1heExpbmVzOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQobGlua1N0eWxlLmxpbmVIZWlnaHQsIDEwKSAqIG1heExpbmVzICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdUb3AsIDEwKSArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nQm90dG9tLCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VNZW51SXRlbUxpbmtXaWR0aChjdXJyZW50TGluazogSFRNTEFuY2hvckVsZW1lbnQsIG1heExpbmVzOiBudW1iZXIsIGxpbmtTdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGN1cnJlbnRMaW5rLCAnd2hpdGUtc3BhY2UnLCAnbm93cmFwJyk7XG4gICAgICAgIGNvbnN0IGxpbmtXaWR0aCA9IGN1cnJlbnRMaW5rLm9mZnNldFdpZHRoO1xuICAgICAgICBpZiAobWF4TGluZXMgPT09IDEpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rLnN0eWxlLndpZHRoID0gYCR7bGlua1dpZHRoICsgcGFyc2VJbnQobGlua1N0eWxlLnBhZGRpbmdMZWZ0LCAxMCkgKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ1JpZ2h0LCAxMCl9cHhgO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjdXJyZW50TGluaywgJ3doaXRlLXNwYWNlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dFNpemUgPSBjdXJyZW50TGluay50ZXh0Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGV0dGVyV2lkdGggPSBNYXRoLmNlaWwobGlua1dpZHRoIC8gdGV4dFNpemUpO1xuICAgICAgICBjb25zdCB3b3Jkc0FycmF5ID0gY3VycmVudExpbmsudGV4dC50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZ29hbFdpZHRoID0gTWF0aC5jZWlsKGxpbmtXaWR0aCAvIG1heExpbmVzKTtcbiAgICAgICAgY29uc3QgZmlyc3RXb3JkID0gd29yZHNBcnJheVswXTtcbiAgICAgICAgbGV0IGNudCA9IDE7XG4gICAgICAgIGxldCB3b3JkV2lkdGggPSBNYXRoLmNlaWwoKGZpcnN0V29yZC5sZW5ndGggKyAxKSAqIGxldHRlcldpZHRoKTtcbiAgICAgICAgd2hpbGUgKHdvcmRXaWR0aCA8IGdvYWxXaWR0aCkge1xuICAgICAgICAgICAgd29yZFdpZHRoICs9IE1hdGguY2VpbCgod29yZHNBcnJheVtjbnRdLmxlbmd0aCArIDEpICogbGV0dGVyV2lkdGgpO1xuICAgICAgICAgICAgY250Kys7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudExpbmsuc3R5bGUud2lkdGggPSBgJHt3b3JkV2lkdGggKyBwYXJzZUludChsaW5rU3R5bGUucGFkZGluZ0xlZnQsIDEwKSArIHBhcnNlSW50KGxpbmtTdHlsZS5wYWRkaW5nUmlnaHQsIDEwKX1weGA7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY3VycmVudExpbmssICd3aGl0ZS1zcGFjZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2xhc3NEZXBlbmRpbmdDaGlsZHJlbkNudCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MMV9UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MMl9UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmxlbmd0aCA8IENvbFRyaWdnZXIuQ09MM19UUklHR0VSKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdlY2wtbWVudV9faXRlbS0tY29sMyc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGdWxsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VjbC1tZW51X19pdGVtLS1mdWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNTdWJtZW51QW55U2VsZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VibWVudSAmJiAhIXRoaXMuc3VibWVudS5lY2xNZW51TWVnYUl0ZW1zLmZpbmQoKGl0KSA9PiBpdC5pc0N1cnJlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXQsIEJyZWFrcG9pbnRzLlRhYmxldCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgPSByZXN1bHQubWF0Y2hlcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxhXG4gICAgI21lbnVMaW5rXG4gICAgdmFyaWFudD1cInN0YW5kYWxvbmVcIlxuICAgICpuZ0lmPVwiaHJlZlwiXG4gICAgW2hyZWZdPVwiaHJlZlwiXG4gICAgW3RhcmdldF09XCJ0YXJnZXRcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2xpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fbGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChmb2N1cyk9XCJvbkl0ZW1Gb2N1cygkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25MaW5rS2V5ZG93bigkZXZlbnQpXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPGFcbiAgICAjbWVudUxpbmtcbiAgICB2YXJpYW50PVwic3RhbmRhbG9uZVwiXG4gICAgKm5nSWY9XCIhaHJlZlwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2xpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fbGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChmb2N1cyk9XCJvbkl0ZW1Gb2N1cygkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25MaW5rS2V5ZG93bigkZXZlbnQpXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9hPlxuPGJ1dHRvblxuICAgIGVjbEJ1dHRvblxuICAgIGlzSWNvbk9ubHlcbiAgICAqbmdJZj1cImhhc0NoaWxkcmVuICYmIGlzTW9iaWxlQnJlYWtwb2ludFwiXG4gICAgdmFyaWFudD1cImdob3N0XCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19idXR0b24tY2FyZXRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGFyaWEtbGFiZWw9XCJBY2Nlc3MgaXRlbSdzIGNoaWxkcmVuXCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2FyZXRDbGljaygkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJvbkJ1dHRvbktleWRvd24oJGV2ZW50KVwiPlxuICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cInhzXCIgdHJhbnNmb3JtPVwicm90YXRlLTE4MFwiIGNsYXNzPVwiZWNsLWJ1dHRvbl9faWNvblwiPjwvZWNsLWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgICBlY2xCdXR0b25cbiAgICBpc0ljb25Pbmx5XG4gICAgKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhaXNNb2JpbGVCcmVha3BvaW50XCJcbiAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX2J1dHRvbi1jYXJldFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgYXJpYS1sYWJlbD1cIkFjY2VzcyBpdGVtJ3MgY2hpbGRyZW5cIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNBcmlhRXhwYW5kZWRcIlxuICAgIChrZXlkb3duKT1cIm9uQnV0dG9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwieHNcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgY2xhc3M9XCJlY2wtYnV0dG9uX19pY29uXCI+PC9lY2wtaWNvbj5cbjwvYnV0dG9uPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLW1lbnUtbWVnYVwiPjwvbmctY29udGVudD5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,14 +1,12 @@
1
- import { __decorate } from "tslib";
2
1
  import { Breakpoints } from '@angular/cdk/layout';
3
- import { Component, ContentChildren, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';
4
- import { coerceNumber } from '@eui/base';
2
+ import { Component, ContentChildren, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, numberAttribute, } from '@angular/core';
5
3
  import Hammer from 'hammerjs';
6
4
  import { Subject, of } from 'rxjs';
7
5
  import { mergeWith, takeUntil } from 'rxjs/operators';
6
+ import { KeyCode } from '../../../utils';
8
7
  import { ECLBaseDirective } from '../../ecl-base.directive';
9
8
  import { EclMenuItemSelectEvent } from '../common/ecl-menu-item.event';
10
9
  import { EclMenuItemComponent } from './ecl-menu-item.component';
11
- import { KeyCode } from '../../../utils';
12
10
  import * as i0 from "@angular/core";
13
11
  import * as i1 from "@angular/cdk/layout";
14
12
  import * as i2 from "../../../services";
@@ -16,7 +14,8 @@ import * as i3 from "../../ecl-button/ecl-button.component";
16
14
  import * as i4 from "../../ecl-button/ecl-button-label.directive";
17
15
  import * as i5 from "../../ecl-icon/ecl-icon.component";
18
16
  import * as i6 from "../../ecl-link/ecl-link.directive";
19
- import * as i7 from "@ngx-translate/core";
17
+ import * as i7 from "../../ecl-link/ecl-link-label.directive";
18
+ import * as i8 from "@ngx-translate/core";
20
19
  export class EclMenuComponent extends ECLBaseDirective {
21
20
  get cssClasses() {
22
21
  return [super.getCssClasses('ecl-menu'), 'ecl-menu--transition', `ecl-menu--group${this.group}`].join(' ');
@@ -534,19 +533,17 @@ export class EclMenuComponent extends ECLBaseDirective {
534
533
  this.isMobileBreakpoint = result.matches;
535
534
  });
536
535
  }
537
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.2", ngImport: i0, type: EclMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i1.BreakpointObserver }, { token: i0.Renderer2 }, { token: i2.EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
538
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-next.2", type: EclMenuComponent, selector: "ecl-menu", inputs: { group: "group", maxLines: "maxLines" }, outputs: { menuItemSelect: "menuItemSelect" }, host: { listeners: { "keydown": "keyEvent($event)", "window:resize": "onResize()" }, properties: { "class": "this.cssClasses", "attr.aria-expanded": "this.isHamburgerMenuOpened", "attr.role": "this.role", "class.ecl-menu--forced-mobile": "this.isMobileBreakpoint", "class.ecl-menu--forced-close": "this.isMenuHidden" } }, queries: [{ propertyName: "eclRootMenuItems", predicate: EclMenuItemComponent }], viewQueries: [{ propertyName: "innerSection", first: true, predicate: ["innerSection"], descendants: true }, { propertyName: "itemsList", first: true, predicate: ["itemsList"], descendants: true }, { propertyName: "btnPrevious", first: true, predicate: ["btnPrevious"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" class=\"ecl-menu__open\" (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"ghost\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"ghost\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n tabindex=\"-1\"\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i3.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i4.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i5.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "directive", type: i6.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isHiddenLabel", "isNoVisited", "variant"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
536
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.5", ngImport: i0, type: EclMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: i1.BreakpointObserver }, { token: i0.Renderer2 }, { token: i2.EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
537
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-next.5", type: EclMenuComponent, selector: "ecl-menu", inputs: { group: "group", maxLines: ["maxLines", "maxLines", numberAttribute] }, outputs: { menuItemSelect: "menuItemSelect" }, host: { listeners: { "keydown": "keyEvent($event)", "window:resize": "onResize()" }, properties: { "class": "this.cssClasses", "attr.aria-expanded": "this.isHamburgerMenuOpened", "attr.role": "this.role", "class.ecl-menu--forced-mobile": "this.isMobileBreakpoint", "class.ecl-menu--forced-close": "this.isMenuHidden" } }, queries: [{ propertyName: "eclRootMenuItems", predicate: EclMenuItemComponent }], viewQueries: [{ propertyName: "innerSection", first: true, predicate: ["innerSection"], descendants: true }, { propertyName: "itemsList", first: true, predicate: ["itemsList"], descendants: true }, { propertyName: "btnPrevious", first: true, predicate: ["btnPrevious"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" isIconOnly class=\"ecl-menu__open ecl-button ecl-button--tertiary\"\n (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened) {\n <span eclLinkLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclLinkLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\" role=\"application\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"ghost\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"ghost\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"ghost\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i3.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i4.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i5.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "directive", type: i6.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "directive", type: i7.EclLinkLabelDirective, selector: "[eclLinkLabel]" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
539
538
  }
540
- __decorate([
541
- coerceNumber
542
- ], EclMenuComponent.prototype, "maxLines", void 0);
543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2", ngImport: i0, type: EclMenuComponent, decorators: [{
539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.5", ngImport: i0, type: EclMenuComponent, decorators: [{
544
540
  type: Component,
545
- args: [{ selector: 'ecl-menu', template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" class=\"ecl-menu__open\" (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"s\"></ecl-icon> {{ 'ecl.menu.MENU' | translate }}\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"ghost\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"ghost\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"ghost\"\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n tabindex=\"-1\"\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
541
+ args: [{ selector: 'ecl-menu', template: "<div class=\"ecl-menu__overlay\" (click)=\"onOverlayClick()\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <a eclLink href=\"#\" variant=\"standalone\" isIconOnly class=\"ecl-menu__open ecl-button ecl-button--tertiary\"\n (click)=\"onMenuOpenClick($event)\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened) {\n <span eclLinkLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclLinkLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </a>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\" role=\"application\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"ghost\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close-filled\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"ghost\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"ghost\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'block' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"ghost\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'block' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n", styles: [":host{display:block}\n"] }]
546
542
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i1.BreakpointObserver }, { type: i0.Renderer2 }, { type: i2.EclRtlService }], propDecorators: { group: [{
547
543
  type: Input
548
544
  }], maxLines: [{
549
- type: Input
545
+ type: Input,
546
+ args: [{ transform: numberAttribute }]
550
547
  }], eclRootMenuItems: [{
551
548
  type: ContentChildren,
552
549
  args: [EclMenuItemComponent]
@@ -586,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
586
583
  type: HostListener,
587
584
  args: ['window:resize']
588
585
  }] } });
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1tZW51L2VjbC1tZW51L2VjbC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS9lY2wtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFzQixXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBR0gsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBTUwsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQztBQUM5QixPQUFPLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBeUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQWN6QyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBWWxELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixJQUFJLENB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QTVCLFNBQVM7dUJBQUMsU0FBUztnQkFFVixjQUFjO3NCQUF2QixNQUFNO2dCQUdILFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQUtlLHFCQUFxQjtzQkFBdkQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBQ1AsSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQUNzQixrQkFBa0I7c0JBQS9ELFdBQVc7dUJBQUMsK0JBQStCO2dCQUNDLFlBQVk7c0JBQXhELFdBQVc7dUJBQUMsOEJBQThCO2dCQWlDM0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZUNoYW5nZXMsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZU51bWJlciB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgSGFtbWVyIGZyb20gJ2hhbW1lcmpzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZVdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZWNsLW1lbnUtaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VjbC1idXR0b24nO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW1DYXJldEV2ZW50LCBFY2xNZW51SXRlbUhvdmVyRXZlbnQsIEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50LCBFY2xNZW51SXRlbVNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vY29tbW9uL2VjbC1tZW51LWl0ZW0uZXZlbnQnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2VjbC1tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFY2xSdGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsTWVudUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgZ3JvdXAgPSAnMSc7XG4gICAgQGNvZXJjZU51bWJlciBASW5wdXQoKSBtYXhMaW5lcyA9IDA7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEVjbE1lbnVJdGVtQ29tcG9uZW50KSBlY2xSb290TWVudUl0ZW1zOiBRdWVyeUxpc3Q8RWNsTWVudUl0ZW1Db21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2lubmVyU2VjdGlvbicpIGlubmVyU2VjdGlvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdpdGVtc0xpc3QnKSBpdGVtc0xpc3Q6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnYnRuUHJldmlvdXMnKSBidG5QcmV2aW91czogRWNsQnV0dG9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2J0bk5leHQnKSBidG5OZXh0OiBFY2xCdXR0b25Db21wb25lbnQ7XG5cbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1tZW51JyksICdlY2wtbWVudS0tdHJhbnNpdGlvbicsIGBlY2wtbWVudS0tZ3JvdXAke3RoaXMuZ3JvdXB9YF0uam9pbignICcpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgaXNIYW1idXJnZXJNZW51T3BlbmVkID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ25hdmlnYXRpb24nO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnUtLWZvcmNlZC1tb2JpbGUnKSBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1tZW51LS1mb3JjZWQtY2xvc2UnKSBpc01lbnVIaWRkZW4gPSBmYWxzZTtcblxuICAgIGhhc092ZXJmbG93ID0gZmFsc2U7XG4gICAgaXNTaG93UHJldkJ0biA9IGZhbHNlO1xuICAgIGlzU2hvd05leHRCdG4gPSBmYWxzZTtcbiAgICBpc1ByZXZCdG5DdXJyZW50Q2xhc3MgPSBmYWxzZTtcbiAgICBtZW51TGlzdFN0eWxlUmlnaHQgPSAnYXV0byc7XG4gICAgbWVudUxpc3RTdHlsZUxlZnQgPSAnYXV0byc7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRJdGVtOiBFY2xNZW51SXRlbTtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8RWNsTWVudUl0ZW1Db21wb25lbnQ+O1xuICAgIHByaXZhdGUgZGlmZjogSXRlcmFibGVDaGFuZ2VzPEVjbE1lbnVJdGVtQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGlzUnRsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0b3RhbEl0ZW1zV2lkdGggPSAwO1xuICAgIHByaXZhdGUgb2Zmc2V0TGVmdCA9IDA7XG4gICAgcHJpdmF0ZSBsYXN0VmlzaWJsZUl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFtbWVydGltZSA9IG5ldyBIYW1tZXIoZG9jdW1lbnQsIHsgaW5wdXRDbGFzczogSGFtbWVyLlRvdWNoSW5wdXQgfSk7XG4gICAgcHJpdmF0ZSByZXNpemVUaW1lcjogbnVtYmVyO1xuICAgIHByaXZhdGUgVElNRU9VVF9JTlRFUlZBTCA9IDE1MDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICAgICAgcHJpdmF0ZSBjZGtCcmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGVjbFJ0bFNlcnZpY2U6IEVjbFJ0bFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGtleUV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZXIpO1xuICAgICAgICB0aGlzLnJlc2l6ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2VjbC1tZW51LS10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXNXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLmNoZWNrTWVudUl0ZW1zV2lkdGgoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51T3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZWNsLW1lbnUtLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfSwgdGhpcy5USU1FT1VUX0lOVEVSVkFMKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm9ic2VydmVTd2lwZUdlc3R1cmVzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9ic2VydmVSb290TWVudUl0ZW1zQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZXIpO1xuICAgICAgICB0aGlzLnJlc2l6ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrTWVudUl0ZW1zV2lkdGgoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51T3ZlcmZsb3coKTtcbiAgICAgICAgfSwgdGhpcy5USU1FT1VUX0lOVEVSVkFMKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5oYW1tZXJ0aW1lLm9mZignc3dpcGVsZWZ0Jyk7XG4gICAgICAgIHRoaXMuaGFtbWVydGltZS5vZmYoJ3N3aXBlcmlnaHQnKTtcbiAgICB9XG5cbiAgICBvblN3aXBlTGVmdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5IYW1idXJnZXJNZW51KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN3aXBlUmlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheUNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgIH1cblxuICAgIG9uTWVudU9wZW5DbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk1lbnVDbG9zZUNsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25NZW51QmFja0NsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25QcmV2QnRuQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2xpZGVNZW51SW5pdGlhbFN0YXRlKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaERpc3BsYXkoKTtcbiAgICB9XG5cbiAgICBvbk5leHRCdG5DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dQcmV2QnRuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc1Nob3dOZXh0QnRuID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd05leHRTbGlkZVJ0bCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93TmV4dFNsaWRlTHRyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlZnJlc2hEaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzbGlkZU1lbnVJbml0aWFsU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2Zmc2V0TGVmdCA9IDA7XG4gICAgICAgIGlmICh0aGlzLmlzUnRsKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVSaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgdGhpcy5tZW51TGlzdFN0eWxlTGVmdCA9ICdhdXRvJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVudUxpc3RTdHlsZUxlZnQgPSAnMHB4JztcbiAgICAgICAgICAgIHRoaXMubWVudUxpc3RTdHlsZVJpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1Nob3dQcmV2QnRuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTaG93TmV4dEJ0biA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TmV4dFNsaWRlTHRyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBidG5PZmZzZXRXaWR0aCA9IHRoaXMuYnRuTmV4dC5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLm9mZnNldExlZnQgPVxuICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG4gICAgICAgICAgICBidG5PZmZzZXRXaWR0aDtcblxuICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVMZWZ0ID0gYC0ke3RoaXMub2Zmc2V0TGVmdH1weGA7XG4gICAgICAgIHRoaXMubWVudUxpc3RTdHlsZVJpZ2h0ID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd05leHRTbGlkZVJ0bCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnRuT2Zmc2V0V2lkdGggPSB0aGlzLmJ0bk5leHQuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5vZmZzZXRMZWZ0ID1cbiAgICAgICAgICAgIHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgLVxuICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCAtXG4gICAgICAgICAgICBidG5PZmZzZXRXaWR0aDtcblxuICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVSaWdodCA9IGAtJHt0aGlzLm9mZnNldExlZnR9cHhgO1xuICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVMZWZ0ID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaERpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNoZWNrTWVudUl0ZW0odGhpcy5tYXhMaW5lcywgdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgaXRlbS5pc1Zpc2libGUgPSAhaXRlbS5pc1Zpc2libGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tNZW51T3ZlcmZsb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzT3ZlcmZsb3cgPSB0aGlzLnRvdGFsSXRlbXNXaWR0aCA+IHRoaXMuaW5uZXJTZWN0aW9uLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICghdGhpcy5oYXNPdmVyZmxvdyB8fCB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldE92ZXJmbG93VmFsdWVzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldENsYXNzRm9yUHJldk5leHRCdXR0b25zKCk7XG4gICAgICAgIHRoaXMucmVzZXRWaXNpYmlsaXR5SW5kaWNhdG9yKCk7XG5cbiAgICAgICAgaWYgKHRoaXMub2Zmc2V0TGVmdCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VPdmVyZmxvd0VuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VPdmVyZmxvd0JlZ2lubmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VPdmVyZmxvd0JlZ2lubmluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IDw9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlubmVyU2VjdGlvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZWwpID0+IChlbC5pc1Zpc2libGUgPSB0cnVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ID49IHRoaXMuaW5uZXJTZWN0aW9uLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKGVsKSA9PiAoZWwuaXNWaXNpYmxlID0gdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VPdmVyZmxvd0VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOZXh0QnRuID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmVjbFJvb3RNZW51SXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgPCB0aGlzLml0ZW1zTGlzdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlbS5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZWNsUm9vdE1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgPiB0aGlzLml0ZW1zTGlzdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFZpc2libGVJdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZW0uaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRWaXNpYmlsaXR5SW5kaWNhdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gKGl0ZW0uaXNWaXNpYmxlID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0T3ZlcmZsb3dWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93UHJldkJ0biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2hvd05leHRCdG4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNPdmVyZmxvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVMZWZ0ID0gJzBweCc7XG4gICAgICAgIHRoaXMub2Zmc2V0TGVmdCA9IDA7XG4gICAgICAgIHRoaXMudG90YWxJdGVtc1dpZHRoID0gMDtcbiAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0gPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2xhc3NGb3JQcmV2TmV4dEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW0gPSB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pc0N1cnJlbnQpO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW0uaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1ByZXZCdG5DdXJyZW50Q2xhc3MgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJldkJ0bkN1cnJlbnRDbGFzcyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja01lbnVJdGVtc1dpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jaGVja01lbnVJdGVtKHRoaXMubWF4TGluZXMsIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KTtcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtc1dpZHRoICs9IGl0ZW0uZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc01lbnVFeHBhbmRlZEluTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgdGhpcy5pc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FueVJvb3RNZW51SXRlbUV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xSb290TWVudUl0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNFeHBhbmRlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSb290TWVudUl0ZW1zQ2hhbmdlc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxRdWVyeUxpc3Q8RWNsTWVudUl0ZW1Db21wb25lbnQ+PiB7XG4gICAgICAgIHJldHVybiBvZih0aGlzLmVjbFJvb3RNZW51SXRlbXMpLnBpcGUobWVyZ2VXaXRoKHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5jaGFuZ2VzKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVudUl0ZW1DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpZmYgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuZWNsUm9vdE1lbnVJdGVtcyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpZmYpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChyb290SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdE1lbnVJdGVtRXZlbnRzKHJvb3RJdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaWZmLmZvckVhY2hBZGRlZEl0ZW0oKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdE1lbnVJdGVtRXZlbnRzKGNoYW5nZS5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25uZWN0TWVudUl0ZW1FdmVudHMoaXRlbTogRWNsTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaXRlbS5tZW51SXRlbVNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1TZWxlY3RlZChldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUhvdmVyLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUhvdmVyZWQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1Ib3Zlck91dC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1Ib3ZlcmVkT3V0KGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtLm1lbnVJdGVtQ2FyZXQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtQ2FyZXQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudU1lZ2FJdGVtU2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbk1lbnVNZWdhSXRlbVNlbGVjdGVkKGl0ZW0sIGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtLm1lbnVJdGVtRm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtRm9jdXNlZChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1LZXlkb3duLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUtleWRvd24oaXRlbSwgZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUZvY3VzZWQoaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluQXJyYXkoaXRlbSk7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTW92ZVByZXZPdmVyZmxvdyhpbmRleCkpe1xuICAgICAgICAgICAgdGhpcy5vblByZXZCdG5DbGljaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNNb3ZlTmV4dE92ZXJmbG93KGluZGV4KSl7XG4gICAgICAgICAgICB0aGlzLm9uTmV4dEJ0bkNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtS2V5ZG93bihpdGVtOiBFY2xNZW51SXRlbSwgZXZ0OiBFY2xNZW51SXRlbUtleWRvd25FdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5kb21FdmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUVudGVyKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk5leHRNZW51SXRlbUZvY3VzKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblByZXZNZW51SXRlbUZvY3VzKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0xFRlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUHJldk1lbnVJdGVtRm9jdXMoaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtRW50ZXIoaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUVzY2FwZShpdGVtLCBldnQuZG9tRXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUVzY2FwZShpdGVtOiBFY2xNZW51SXRlbSwgZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB9XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUHJldk1lbnVJdGVtRm9jdXMoaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluQXJyYXkoaXRlbSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKVtpbmRleCAtIDFdLm9uRm9jdXNGcm9tTmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk5leHRNZW51SXRlbUZvY3VzKGl0ZW06IEVjbE1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkFycmF5KGl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggIT09IHRoaXMuZ2V0Um9vdE1lbnVJdGVtc0FycmF5KCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKVtpbmRleCArIDFdLm9uRm9jdXNGcm9tUHJldigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kSW5kZXhJbkFycmF5KGl0ZW06IEVjbE1lbnVJdGVtKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdE1lbnVJdGVtc0FycmF5KCkuZmluZEluZGV4KGVsID0+IGl0ZW0gPT09IGVsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW92ZU5leHRPdmVyZmxvdyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKVtpbmRleF0uaXNWaXNpYmxlICYmIHRoaXMuaXNTaG93TmV4dEJ0bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW92ZVByZXZPdmVyZmxvdyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKVtpbmRleF0uaXNWaXNpYmxlICYmIHRoaXMuaXNTaG93UHJldkJ0bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtU2VsZWN0ZWQoZXZ0OiBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbTogRWNsTWVudUl0ZW0gPSBldnQubWVudUl0ZW07XG5cbiAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxSb290TWVudUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxTdWJtZW51c0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0ocmVxdWVzdGVkUm9vdE1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlUHJldk5leHRCdXR0b25zQ2xhc3NPbkl0ZW1TZWxlY3RlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VuZE1lbnVJdGVtU2VsZWN0RXZlbnQoZXZ0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVByZXZOZXh0QnV0dG9uc0NsYXNzT25JdGVtU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2hvd05leHRCdG4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcmV2QnRuQ3VycmVudENsYXNzID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcmV2QnRuQ3VycmVudENsYXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtSG92ZXJlZChldnQ6IEVjbE1lbnVJdGVtSG92ZXJFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5TdWJtZW51KGV2dC5tZW51SXRlbSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUVudGVyKGl0ZW06IEVjbE1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShpdGVtKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWRGb3JNZW51SXRlbShpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaXRlbS5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5TdWJtZW51KGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb3BlblN1Ym1lbnUoaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW0uaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGVCcmVha3BvaW50ICYmIChpdGVtIGFzIEVjbE1lbnVJdGVtQ29tcG9uZW50KS5zdWJtZW51KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja01lZ2FNZW51KGl0ZW0gYXMgRWNsTWVudUl0ZW1Db21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlbS5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShpdGVtKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd01lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um9vdE1lbnVJdGVtc0FycmF5KCk6IEVjbE1lbnVJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xSb290TWVudUl0ZW1zLnRvQXJyYXkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTWVnYU1lbnUobWVudUl0ZW06IEVjbE1lbnVJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51SXRlbS5pc0Z1bGwpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUnRsKSB7XG4gICAgICAgICAgICAgICAgbWVudUl0ZW0uc3VibWVudS5vZmZzZXRSaWdodCA9IHRoaXMub2Zmc2V0TGVmdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVudUl0ZW0uc3VibWVudS5vZmZzZXRMZWZ0ID0gdGhpcy5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tFbm91Z2hTcGFjZUZvck1lZ2FNZW51KG1lbnVJdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRW5vdWdoU3BhY2VGb3JNZWdhTWVudShtZW51SXRlbTogRWNsTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVnYUJvdW5kaW5nID0gbWVudUl0ZW0uc3VibWVudS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBjb250YWluZXJCb3VuZGluZyA9IHRoaXMuaW5uZXJTZWN0aW9uLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQm91bmRpbmcgPSBtZW51SXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IG1lZ2FXaWR0aCA9IG1lZ2FCb3VuZGluZy53aWR0aDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBjb250YWluZXJCb3VuZGluZy53aWR0aDtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1Qb3NpdGlvbiA9IG1lbnVJdGVtQm91bmRpbmcubGVmdCAtIGNvbnRhaW5lckJvdW5kaW5nLmxlZnQ7XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtUG9zaXRpb24gKyBtZWdhV2lkdGggPiBjb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgbWVudUl0ZW0uc3VibWVudS5pc1J0bERpc3BsYXkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVudUl0ZW0uc3VibWVudS5pc1J0bERpc3BsYXkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1Ib3ZlcmVkT3V0KGV2dDogRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUNhcmV0KGV2dDogRWNsTWVudUl0ZW1DYXJldEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFJvb3RNZW51SXRlbTogRWNsTWVudUl0ZW0gPSBldnQubWVudUl0ZW07XG5cbiAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51QnV0T25lSXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkRm9yTWVudUl0ZW0ocmVxdWVzdGVkUm9vdE1lbnVJdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVudU1lZ2FJdGVtU2VsZWN0ZWQocm9vdE1lbnVJdGVtOiBFY2xNZW51SXRlbSwgZXZ0OiBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RlZFN1Ym1lbnVJdGVtID0gZXZ0Lm1lbnVJdGVtO1xuXG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpO1xuICAgICAgICB0aGlzLnNlbGVjdE1lbnVJdGVtKHJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0ocmVxdWVzdGVkU3VibWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICBpZiAodGhpcy5oYXNPdmVyZmxvdykge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VQcmV2TmV4dEJ1dHRvbnNDbGFzc09uSXRlbVNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQpO1xuXG4gICAgICAgIHRoaXMuaGlkZU1lbnUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0QWxsUm9vdE1lbnVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdE1lbnVJdGVtcyh0aGlzLmVjbFJvb3RNZW51SXRlbXMudG9BcnJheSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0QWxsU3VibWVudXNJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKHJvb3RJdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0TWVudUl0ZW1zKHJvb3RJdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXNlbGVjdE1lbnVJdGVtcyhpdGVtczogQXJyYXk8RWNsTWVudUl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0N1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RNZW51SXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzQ3VycmVudCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNZW51SGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWVudUhpZGRlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VSb290TWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZVJvb3RNZW51QnV0T25lSXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpdCAhPT0gaXRlbSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgIGl0LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpdC5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUnRsU2VydmljZS5jdXJyZW50UnRsU3RhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJ0bFN0YXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAocnRsU3RhdGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmlzUnRsICE9PSBydGxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSdGwgPSBydGxTdGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWRlTWVudUluaXRpYWxTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tNZW51T3ZlcmZsb3coKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZUV4cGFuZGVkRm9yTWVudUl0ZW0oaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5IYW1idXJnZXJNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSGFtYnVyZ2VyTWVudU9wZW5lZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZUhhbWJ1cmdlck1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIYW1idXJnZXJNZW51T3BlbmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbVNlbGVjdC5uZXh0KG5ldyBFY2xNZW51SXRlbVNlbGVjdEV2ZW50KGV2dC5tZW51SXRlbSwgZXZ0LmRvbUV2ZW50KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlUm9vdE1lbnVJdGVtc0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xSb290TWVudUl0ZW1zKTtcbiAgICAgICAgdGhpcy5jcmVhdGVSb290TWVudUl0ZW1zQ2hhbmdlc09ic2VydmFibGUoKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHRoaXMub25NZW51SXRlbUNoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlU3dpcGVHZXN0dXJlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW1tZXJ0aW1lLm9uKCdzd2lwZWxlZnQnLCB0aGlzLm9uU3dpcGVMZWZ0LmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub24oJ3N3aXBlcmlnaHQnLCB0aGlzLm9uU3dpcGVSaWdodC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0LCBCcmVha3BvaW50cy5UYWJsZXQsIEJyZWFrcG9pbnRzLlNtYWxsXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWNsLW1lbnVfX292ZXJsYXlcIiAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soKVwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImVjbC1jb250YWluZXIgZWNsLW1lbnVfX2NvbnRhaW5lclwiPlxuICAgIDxhIGVjbExpbmsgaHJlZj1cIiNcIiB2YXJpYW50PVwic3RhbmRhbG9uZVwiIGNsYXNzPVwiZWNsLW1lbnVfX29wZW5cIiAoY2xpY2spPVwib25NZW51T3BlbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJoYW1idXJnZXJcIiBzaXplPVwic1wiPjwvZWNsLWljb24+IHt7ICdlY2wubWVudS5NRU5VJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYT5cblxuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwiZWNsLW1lbnVfX2lubmVyXCJcbiAgICAgICAgI2lubmVyU2VjdGlvblxuICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2lubmVyLS1leHBhbmRlZF09XCJpc01lbnVFeHBhbmRlZEluTW9iaWxlXCJcbiAgICAgICAgW2NsYXNzLmVjbC1tZW51X19pbm5lci0taGFzLW92ZXJmbG93XT1cImhhc092ZXJmbG93XCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJlY2wtbWVudV9faW5uZXItaGVhZGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19jbG9zZVwiXG4gICAgICAgICAgICAgICAgY29udGFpbmVyU3R5bGVDbGFzcz1cImVjbC1tZW51X19jbG9zZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVDbG9zZUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNsb3NlLWZpbGxlZFwiIHNpemU9XCJzXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD57eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1tZW51X190aXRsZVwiPnt7ICdlY2wubWVudS5NRU5VJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIGVjbEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBjbGFzcz1cImVjbC1tZW51X19iYWNrXCIgKGNsaWNrKT1cIm9uTWVudUJhY2tDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPnt7ICdlY2wuY29tbW9uLkJBQ0snIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgICNidG5QcmV2aW91c1xuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtbWVudV9faXRlbSBlY2wtbWVudV9faXRlbXMtcHJldmlvdXNcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC1tZW51X19pdGVtLS1jdXJyZW50XT1cImlzUHJldkJ0bkN1cnJlbnRDbGFzc1wiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dQcmV2QnRuID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QcmV2QnRuQ2xpY2soKVwiPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWwgY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jb21tb24uUFJFVklPVVMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAjYnRuTmV4dFxuICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtbWVudV9faXRlbSBlY2wtbWVudV9faXRlbXMtbmV4dFwiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2l0ZW0tLWN1cnJlbnRdPVwiIWlzUHJldkJ0bkN1cnJlbnRDbGFzc1wiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dOZXh0QnRuID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25OZXh0QnRuQ2xpY2soKVwiPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwic1wiIHRyYW5zZm9ybT1cInJvdGF0ZS05MFwiPjwvZWNsLWljb24+XG4gICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbCBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNvbW1vbi5ORVhUJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDx1bCBjbGFzcz1cImVjbC1tZW51X19saXN0XCIgI2l0ZW1zTGlzdCBbc3R5bGUucmlnaHRdPVwibWVudUxpc3RTdHlsZVJpZ2h0XCIgW3N0eWxlLmxlZnRdPVwibWVudUxpc3RTdHlsZUxlZnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC91bD5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
586
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1tZW51L2VjbC1tZW51L2VjbC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS9lY2wtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFHSCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFNTCxNQUFNLEVBR04sU0FBUyxFQUNULGVBQWUsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQzlCLE9BQU8sRUFBYyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBeUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQWFqRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBWWxELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENB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QUFDLFNBQVM7Z0JBRVYsY0FBYztzQkFBdkIsTUFBTTtnQkFHSCxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFLZSxxQkFBcUI7c0JBQXZELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNQLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFDc0Isa0JBQWtCO3NCQUEvRCxXQUFXO3VCQUFDLCtCQUErQjtnQkFDQyxZQUFZO3NCQUF4RCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFpQzNDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVW5DLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVDaGFuZ2VzLFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IEhhbW1lciBmcm9tICdoYW1tZXJqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tZW51LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRWNsUnRsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VjbC1idXR0b24nO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW1DYXJldEV2ZW50LCBFY2xNZW51SXRlbUhvdmVyRXZlbnQsIEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50LCBFY2xNZW51SXRlbVNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vY29tbW9uL2VjbC1tZW51LWl0ZW0uZXZlbnQnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2VjbC1tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbE1lbnVDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGdyb3VwID0gJzEnO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG1heExpbmVzID0gMDtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWNsTWVudUl0ZW1Db21wb25lbnQpIGVjbFJvb3RNZW51SXRlbXM6IFF1ZXJ5TGlzdDxFY2xNZW51SXRlbUNvbXBvbmVudD47XG4gICAgQFZpZXdDaGlsZCgnaW5uZXJTZWN0aW9uJykgaW5uZXJTZWN0aW9uOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zTGlzdCcpIGl0ZW1zTGlzdDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdidG5QcmV2aW91cycpIGJ0blByZXZpb3VzOiBFY2xCdXR0b25Db21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnYnRuTmV4dCcpIGJ0bk5leHQ6IEVjbEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIEBPdXRwdXQoKSBtZW51SXRlbVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1TZWxlY3RFdmVudD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLW1lbnUnKSwgJ2VjbC1tZW51LS10cmFuc2l0aW9uJywgYGVjbC1tZW51LS1ncm91cCR7dGhpcy5ncm91cH1gXS5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKSBpc0hhbWJ1cmdlck1lbnVPcGVuZWQgPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbmF2aWdhdGlvbic7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtbWVudS0tZm9yY2VkLW1vYmlsZScpIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnUtLWZvcmNlZC1jbG9zZScpIGlzTWVudUhpZGRlbiA9IGZhbHNlO1xuXG4gICAgaGFzT3ZlcmZsb3cgPSBmYWxzZTtcbiAgICBpc1Nob3dQcmV2QnRuID0gZmFsc2U7XG4gICAgaXNTaG93TmV4dEJ0biA9IGZhbHNlO1xuICAgIGlzUHJldkJ0bkN1cnJlbnRDbGFzcyA9IGZhbHNlO1xuICAgIG1lbnVMaXN0U3R5bGVSaWdodCA9ICdhdXRvJztcbiAgICBtZW51TGlzdFN0eWxlTGVmdCA9ICdhdXRvJztcblxuICAgIHByaXZhdGUgY3VycmVudEl0ZW06IEVjbE1lbnVJdGVtO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xNZW51SXRlbUNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkaWZmOiBJdGVyYWJsZUNoYW5nZXM8RWNsTWVudUl0ZW1Db21wb25lbnQ+O1xuICAgIHByaXZhdGUgaXNSdGwgPSBmYWxzZTtcbiAgICBwcml2YXRlIHRvdGFsSXRlbXNXaWR0aCA9IDA7XG4gICAgcHJpdmF0ZSBvZmZzZXRMZWZ0ID0gMDtcbiAgICBwcml2YXRlIGxhc3RWaXNpYmxlSXRlbTogRWNsTWVudUl0ZW1Db21wb25lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBoYW1tZXJ0aW1lID0gbmV3IEhhbW1lcihkb2N1bWVudCwgeyBpbnB1dENsYXNzOiBIYW1tZXIuVG91Y2hJbnB1dCB9KTtcbiAgICBwcml2YXRlIHJlc2l6ZVRpbWVyOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBUSU1FT1VUX0lOVEVSVkFMID0gMTUwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWNsUnRsU2VydmljZTogRWNsUnRsU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZUhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lcik7XG4gICAgICAgIHRoaXMucmVzaXplVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZWNsLW1lbnUtLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtc1dpZHRoID0gMDtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51SXRlbXNXaWR0aCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja01lbnVPdmVyZmxvdygpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdlY2wtbWVudS0tdHJhbnNpdGlvbicpO1xuICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZVJ0bENoYW5nZVN0YXRlKCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZVN3aXBlR2VzdHVyZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZVJvb3RNZW51SXRlbXNDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lcik7XG4gICAgICAgIHRoaXMucmVzaXplVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tNZW51SXRlbXNXaWR0aCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja01lbnVPdmVyZmxvdygpO1xuICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub2ZmKCdzd2lwZWxlZnQnKTtcbiAgICAgICAgdGhpcy5oYW1tZXJ0aW1lLm9mZignc3dpcGVyaWdodCcpO1xuICAgIH1cblxuICAgIG9uU3dpcGVMZWZ0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkhhbWJ1cmdlck1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU3dpcGVSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgfVxuXG4gICAgb25NZW51T3BlbkNsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5IYW1idXJnZXJNZW51KCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uTWVudUNsb3NlQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbk1lbnVCYWNrQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvblByZXZCdG5DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zbGlkZU1lbnVJbml0aWFsU3RhdGUoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoRGlzcGxheSgpO1xuICAgIH1cblxuICAgIG9uTmV4dEJ0bkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd1ByZXZCdG4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzU2hvd05leHRCdG4gPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TmV4dFNsaWRlUnRsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dOZXh0U2xpZGVMdHIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVmcmVzaERpc3BsYXkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWRlTWVudUluaXRpYWxTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUxpc3RTdHlsZVJpZ2h0ID0gJzBweCc7XG4gICAgICAgICAgICB0aGlzLm1lbnVMaXN0U3R5bGVMZWZ0ID0gJ2F1dG8nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51TGlzdFN0eWxlTGVmdCA9ICcwcHgnO1xuICAgICAgICAgICAgdGhpcy5tZW51TGlzdFN0eWxlUmlnaHQgPSAnYXV0byc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzU2hvd1ByZXZCdG4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Nob3dOZXh0QnRuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dOZXh0U2xpZGVMdHIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ0bk9mZnNldFdpZHRoID0gdGhpcy5idG5OZXh0LmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIHRoaXMub2Zmc2V0TGVmdCA9XG4gICAgICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLVxuICAgICAgICAgICAgdGhpcy5pdGVtc0xpc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IC1cbiAgICAgICAgICAgIGJ0bk9mZnNldFdpZHRoO1xuXG4gICAgICAgIHRoaXMubWVudUxpc3RTdHlsZUxlZnQgPSBgLSR7dGhpcy5vZmZzZXRMZWZ0fXB4YDtcbiAgICAgICAgdGhpcy5tZW51TGlzdFN0eWxlUmlnaHQgPSAnYXV0byc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TmV4dFNsaWRlUnRsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBidG5PZmZzZXRXaWR0aCA9IHRoaXMuYnRuTmV4dC5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLm9mZnNldExlZnQgPVxuICAgICAgICAgICAgdGhpcy5pdGVtc0xpc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCAtXG4gICAgICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0IC1cbiAgICAgICAgICAgIGJ0bk9mZnNldFdpZHRoO1xuXG4gICAgICAgIHRoaXMubWVudUxpc3RTdHlsZVJpZ2h0ID0gYC0ke3RoaXMub2Zmc2V0TGVmdH1weGA7XG4gICAgICAgIHRoaXMubWVudUxpc3RTdHlsZUxlZnQgPSAnYXV0byc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoRGlzcGxheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uY2hlY2tNZW51SXRlbSh0aGlzLm1heExpbmVzLCB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCk7XG4gICAgICAgICAgICBpdGVtLmlzVmlzaWJsZSA9ICFpdGVtLmlzVmlzaWJsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja01lbnVPdmVyZmxvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNPdmVyZmxvdyA9IHRoaXMudG90YWxJdGVtc1dpZHRoID4gdGhpcy5pbm5lclNlY3Rpb24ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLmhhc092ZXJmbG93IHx8IHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0T3ZlcmZsb3dWYWx1ZXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0Q2xhc3NGb3JQcmV2TmV4dEJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5yZXNldFZpc2liaWxpdHlJbmRpY2F0b3IoKTtcblxuICAgICAgICBpZiAodGhpcy5vZmZzZXRMZWZ0ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZU92ZXJmbG93RW5kKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZU92ZXJmbG93QmVnaW5uaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZU92ZXJmbG93QmVnaW5uaW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgPD1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5uZXJTZWN0aW9uLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlbCkgPT4gKGVsLmlzVmlzaWJsZSA9IHRydWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgPj0gdGhpcy5pbm5lclNlY3Rpb24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZWwpID0+IChlbC5pc1Zpc2libGUgPSB0cnVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZU92ZXJmbG93RW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd05leHRCdG4gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZWNsUm9vdE1lbnVJdGVtcykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA8IHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5lY2xSb290TWVudUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCA+IHRoaXMuaXRlbXNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0VmlzaWJsZUl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlbS5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFZpc2liaWxpdHlJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pc1Zpc2libGUgPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRPdmVyZmxvd1ZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dQcmV2QnRuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTaG93TmV4dEJ0biA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc092ZXJmbG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVudUxpc3RTdHlsZUxlZnQgPSAnMHB4JztcbiAgICAgICAgdGhpcy5vZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zV2lkdGggPSAwO1xuICAgICAgICB0aGlzLmxhc3RWaXNpYmxlSXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDbGFzc0ZvclByZXZOZXh0QnV0dG9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbSA9IHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlzQ3VycmVudCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbS5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJldkJ0bkN1cnJlbnRDbGFzcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcmV2QnRuQ3VycmVudENsYXNzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTWVudUl0ZW1zV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNoZWNrTWVudUl0ZW0odGhpcy5tYXhMaW5lcywgdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zV2lkdGggKz0gaXRlbS5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTWVudUV4cGFuZGVkSW5Nb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCAmJiB0aGlzLmlzQW55Um9vdE1lbnVJdGVtRXhwYW5kZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQW55Um9vdE1lbnVJdGVtRXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjbFJvb3RNZW51SXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pc0V4cGFuZGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVJvb3RNZW51SXRlbXNDaGFuZ2VzT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPFF1ZXJ5TGlzdDxFY2xNZW51SXRlbUNvbXBvbmVudD4+IHtcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMuZWNsUm9vdE1lbnVJdGVtcykucGlwZShtZXJnZVdpdGgodGhpcy5lY2xSb290TWVudUl0ZW1zLmNoYW5nZXMpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZW51SXRlbUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xSb290TWVudUl0ZW1zKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlmZikge1xuICAgICAgICAgICAgdGhpcy5lY2xSb290TWVudUl0ZW1zLmZvckVhY2goKHJvb3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0TWVudUl0ZW1FdmVudHMocm9vdEl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpZmYuZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0TWVudUl0ZW1FdmVudHMoY2hhbmdlLml0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RNZW51SXRlbUV2ZW50cyhpdGVtOiBFY2xNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpdGVtLm1lbnVJdGVtU2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbVNlbGVjdGVkKGV2dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdGVtLm1lbnVJdGVtSG92ZXIucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtSG92ZXJlZChldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUhvdmVyT3V0LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvb3RNZW51SXRlbUhvdmVyZWRPdXQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1DYXJldC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1DYXJldChldnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51TWVnYUl0ZW1TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uTWVudU1lZ2FJdGVtU2VsZWN0ZWQoaXRlbSwgZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ubWVudUl0ZW1Gb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1Gb2N1c2VkKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5tZW51SXRlbUtleWRvd24ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtS2V5ZG93bihpdGVtLCBldnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtRm9jdXNlZChpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEluZGV4SW5BcnJheShpdGVtKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNNb3ZlUHJldk92ZXJmbG93KGluZGV4KSl7XG4gICAgICAgICAgICB0aGlzLm9uUHJldkJ0bkNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc01vdmVOZXh0T3ZlcmZsb3coaW5kZXgpKXtcbiAgICAgICAgICAgIHRoaXMub25OZXh0QnRuQ2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1LZXlkb3duKGl0ZW06IEVjbE1lbnVJdGVtLCBldnQ6IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmRvbUV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtRW50ZXIoaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfUklHSFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTmV4dE1lbnVJdGVtRm9jdXMoaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUHJldk1lbnVJdGVtRm9jdXMoaXRlbSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25QcmV2TWVudUl0ZW1Gb2N1cyhpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25Sb290TWVudUl0ZW1FbnRlcihpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUm9vdE1lbnVJdGVtRXNjYXBlKGl0ZW0sIGV2dC5kb21FdmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtRXNjYXBlKGl0ZW06IEVjbE1lbnVJdGVtLCBldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25QcmV2TWVudUl0ZW1Gb2N1cyhpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEluZGV4SW5BcnJheShpdGVtKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmdldFJvb3RNZW51SXRlbXNBcnJheSgpW2luZGV4IC0gMV0ub25Gb2N1c0Zyb21OZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmV4dE1lbnVJdGVtRm9jdXMoaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmRJbmRleEluQXJyYXkoaXRlbSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdldFJvb3RNZW51SXRlbXNBcnJheSgpW2luZGV4ICsgMV0ub25Gb2N1c0Zyb21QcmV2KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRJbmRleEluQXJyYXkoaXRlbTogRWNsTWVudUl0ZW0pOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSb290TWVudUl0ZW1zQXJyYXkoKS5maW5kSW5kZXgoZWwgPT4gaXRlbSA9PT0gZWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNb3ZlTmV4dE92ZXJmbG93KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdldFJvb3RNZW51SXRlbXNBcnJheSgpW2luZGV4XS5pc1Zpc2libGUgJiYgdGhpcy5pc1Nob3dOZXh0QnRuO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNb3ZlUHJldk92ZXJmbG93KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdldFJvb3RNZW51SXRlbXNBcnJheSgpW2luZGV4XS5pc1Zpc2libGUgJiYgdGhpcy5pc1Nob3dQcmV2QnRuO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1TZWxlY3RlZChldnQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUm9vdE1lbnVJdGVtOiBFY2xNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcblxuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnUoKTtcbiAgICAgICAgdGhpcy5kZXNlbGVjdEFsbFJvb3RNZW51SXRlbXMoKTtcbiAgICAgICAgdGhpcy5kZXNlbGVjdEFsbFN1Ym1lbnVzSXRlbXMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgICAgICB0aGlzLmNsb3NlSGFtYnVyZ2VyTWVudSgpO1xuICAgICAgICBpZiAodGhpcy5oYXNPdmVyZmxvdykge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VQcmV2TmV4dEJ1dHRvbnNDbGFzc09uSXRlbVNlbGVjdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZW5kTWVudUl0ZW1TZWxlY3RFdmVudChldnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlUHJldk5leHRCdXR0b25zQ2xhc3NPbkl0ZW1TZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTaG93TmV4dEJ0bikge1xuICAgICAgICAgICAgdGhpcy5pc1ByZXZCdG5DdXJyZW50Q2xhc3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1ByZXZCdG5DdXJyZW50Q2xhc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Sb290TWVudUl0ZW1Ib3ZlcmVkKGV2dDogRWNsTWVudUl0ZW1Ib3ZlckV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlblN1Ym1lbnUoZXZ0Lm1lbnVJdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtRW50ZXIoaXRlbTogRWNsTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZEZvck1lbnVJdGVtKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlblN1Ym1lbnUoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VSb290TWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuU3VibWVudShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgKGl0ZW0gYXMgRWNsTWVudUl0ZW1Db21wb25lbnQpLnN1Ym1lbnUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTWVnYU1lbnUoaXRlbSBhcyBFY2xNZW51SXRlbUNvbXBvbmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLmlzSG92ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zaG93TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb290TWVudUl0ZW1zQXJyYXkoKTogRWNsTWVudUl0ZW1Db21wb25lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjbFJvb3RNZW51SXRlbXMudG9BcnJheSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tNZWdhTWVudShtZW51SXRlbTogRWNsTWVudUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1lbnVJdGVtLmlzRnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgICAgICBtZW51SXRlbS5zdWJtZW51Lm9mZnNldFJpZ2h0ID0gdGhpcy5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZW51SXRlbS5zdWJtZW51Lm9mZnNldExlZnQgPSB0aGlzLm9mZnNldExlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja0Vub3VnaFNwYWNlRm9yTWVnYU1lbnUobWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tFbm91Z2hTcGFjZUZvck1lZ2FNZW51KG1lbnVJdGVtOiBFY2xNZW51SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZWdhQm91bmRpbmcgPSBtZW51SXRlbS5zdWJtZW51LmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJvdW5kaW5nID0gdGhpcy5pbm5lclNlY3Rpb24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1Cb3VuZGluZyA9IG1lbnVJdGVtLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgbWVnYVdpZHRoID0gbWVnYUJvdW5kaW5nLndpZHRoO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lckJvdW5kaW5nLndpZHRoO1xuICAgICAgICBjb25zdCBtZW51SXRlbVBvc2l0aW9uID0gbWVudUl0ZW1Cb3VuZGluZy5sZWZ0IC0gY29udGFpbmVyQm91bmRpbmcubGVmdDtcblxuICAgICAgICBpZiAobWVudUl0ZW1Qb3NpdGlvbiArIG1lZ2FXaWR0aCA+IGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5zdWJtZW51LmlzUnRsRGlzcGxheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZW51SXRlbS5zdWJtZW51LmlzUnRsRGlzcGxheSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb3RNZW51SXRlbUhvdmVyZWRPdXQoZXZ0OiBFY2xNZW51SXRlbUhvdmVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUm9vdE1lbnVJdGVtQ2FyZXQoZXZ0OiBFY2xNZW51SXRlbUNhcmV0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkUm9vdE1lbnVJdGVtOiBFY2xNZW51SXRlbSA9IGV2dC5tZW51SXRlbTtcblxuICAgICAgICB0aGlzLmNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKHJlcXVlc3RlZFJvb3RNZW51SXRlbSk7XG4gICAgICAgIHRoaXMudG9nZ2xlRXhwYW5kZWRGb3JNZW51SXRlbShyZXF1ZXN0ZWRSb290TWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZW51TWVnYUl0ZW1TZWxlY3RlZChyb290TWVudUl0ZW06IEVjbE1lbnVJdGVtLCBldnQ6IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdGVkU3VibWVudUl0ZW0gPSBldnQubWVudUl0ZW07XG5cbiAgICAgICAgdGhpcy5jbG9zZVJvb3RNZW51KCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxSb290TWVudUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxTdWJtZW51c0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0TWVudUl0ZW0ocm9vdE1lbnVJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RNZW51SXRlbShyZXF1ZXN0ZWRTdWJtZW51SXRlbSk7XG4gICAgICAgIHRoaXMuY2xvc2VIYW1idXJnZXJNZW51KCk7XG4gICAgICAgIGlmICh0aGlzLmhhc092ZXJmbG93KSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZVByZXZOZXh0QnV0dG9uc0NsYXNzT25JdGVtU2VsZWN0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbmRNZW51SXRlbVNlbGVjdEV2ZW50KGV2dCk7XG5cbiAgICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzZWxlY3RBbGxSb290TWVudUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2VsZWN0TWVudUl0ZW1zKHRoaXMuZWNsUm9vdE1lbnVJdGVtcy50b0FycmF5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzZWxlY3RBbGxTdWJtZW51c0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgocm9vdEl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RNZW51SXRlbXMocm9vdEl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0TWVudUl0ZW1zKGl0ZW1zOiBBcnJheTxFY2xNZW51SXRlbT4pOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGl0LmlzQ3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdE1lbnVJdGVtKGl0ZW06IEVjbE1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGl0ZW0uaXNDdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc01lbnVIaWRkZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd01lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNZW51SGlkZGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZVJvb3RNZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFJvb3RNZW51SXRlbXMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGl0LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0LmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlUm9vdE1lbnVCdXRPbmVJdGVtKGl0ZW06IEVjbE1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUm9vdE1lbnVJdGVtc1xuICAgICAgICAgICAgLmZpbHRlcigoaXQpID0+IGl0ICE9PSBpdGVtKVxuICAgICAgICAgICAgLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgaXQuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGl0LmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSdGxTZXJ2aWNlLmN1cnJlbnRSdGxTdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocnRsU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGlmIChydGxTdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaXNSdGwgIT09IHJ0bFN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1J0bCA9IHJ0bFN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc092ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVNZW51SW5pdGlhbFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja01lbnVPdmVyZmxvdygpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRXhwYW5kZWRGb3JNZW51SXRlbShpdGVtOiBFY2xNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkhhbWJ1cmdlck1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNIYW1idXJnZXJNZW51T3BlbmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlSGFtYnVyZ2VyTWVudSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0hhbWJ1cmdlck1lbnVPcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRNZW51SXRlbVNlbGVjdEV2ZW50KGV2dDogRWNsTWVudUl0ZW1TZWxlY3RFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1lbnVJdGVtU2VsZWN0Lm5leHQobmV3IEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQoZXZ0Lm1lbnVJdGVtLCBldnQuZG9tRXZlbnQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVSb290TWVudUl0ZW1zQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLmVjbFJvb3RNZW51SXRlbXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZVJvb3RNZW51SXRlbXNDaGFuZ2VzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5vbk1lbnVJdGVtQ2hhbmdlcy5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVTd2lwZUdlc3R1cmVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbW1lcnRpbWUub24oJ3N3aXBlbGVmdCcsIHRoaXMub25Td2lwZUxlZnQuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuaGFtbWVydGltZS5vbignc3dpcGVyaWdodCcsIHRoaXMub25Td2lwZVJpZ2h0LmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXQsIEJyZWFrcG9pbnRzLlRhYmxldCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgPSByZXN1bHQubWF0Y2hlcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlY2wtbWVudV9fb3ZlcmxheVwiIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygpXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiZWNsLWNvbnRhaW5lciBlY2wtbWVudV9fY29udGFpbmVyXCI+XG4gICAgPGEgZWNsTGluayBocmVmPVwiI1wiIHZhcmlhbnQ9XCJzdGFuZGFsb25lXCIgaXNJY29uT25seSBjbGFzcz1cImVjbC1tZW51X19vcGVuIGVjbC1idXR0b24gZWNsLWJ1dHRvbi0tdGVydGlhcnlcIlxuICAgICAgICAoY2xpY2spPVwib25NZW51T3BlbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJoYW1idXJnZXJcIiBzaXplPVwibVwiPjwvZWNsLWljb24+XG4gICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY2xvc2VcIiBzaXplPVwibVwiPjwvZWNsLWljb24+XG4gICAgICAgIEBpZiAoaXNIYW1idXJnZXJNZW51T3BlbmVkKSB7XG4gICAgICAgIDxzcGFuIGVjbExpbmtMYWJlbD57eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3BhbiBlY2xMaW5rTGFiZWw+e3sgJ2VjbC5tZW51Lk1FTlUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9hPlxuXG4gICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJlY2wtbWVudV9faW5uZXJcIlxuICAgICAgICAjaW5uZXJTZWN0aW9uXG4gICAgICAgIFtjbGFzcy5lY2wtbWVudV9faW5uZXItLWV4cGFuZGVkXT1cImlzTWVudUV4cGFuZGVkSW5Nb2JpbGVcIlxuICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2lubmVyLS1oYXMtb3ZlcmZsb3ddPVwiaGFzT3ZlcmZsb3dcIiByb2xlPVwiYXBwbGljYXRpb25cIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cImVjbC1tZW51X19pbm5lci1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWNsLW1lbnVfX2Nsb3NlXCJcbiAgICAgICAgICAgICAgICBjb250YWluZXJTdHlsZUNsYXNzPVwiZWNsLW1lbnVfX2Nsb3NlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUNsb3NlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPnt7ICdlY2wuY29tbW9uLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNsb3NlLWZpbGxlZFwiIHNpemU9XCJzXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLW1lbnVfX3RpdGxlXCI+e3sgJ2VjbC5tZW51Lk1FTlUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gZWNsQnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIGNsYXNzPVwiZWNsLW1lbnVfX2JhY2tcIiAoY2xpY2spPVwib25NZW51QmFja0NsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJzXCIgdHJhbnNmb3JtPVwicm90YXRlLTI3MFwiPjwvZWNsLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+e3sgJ2VjbC5jb21tb24uQkFDSycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgI2J0blByZXZpb3VzXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICBpc0ljb25Pbmx5XG4gICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19pdGVtIGVjbC1tZW51X19pdGVtcy1wcmV2aW91c1wiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLW1lbnVfX2l0ZW0tLWN1cnJlbnRdPVwiaXNQcmV2QnRuQ3VycmVudENsYXNzXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzU2hvd1ByZXZCdG4gPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblByZXZCdG5DbGljaygpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJzXCIgdHJhbnNmb3JtPVwicm90YXRlLTI3MFwiPjwvZWNsLWljb24+XG4gICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbCBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNvbW1vbi5QUkVWSU9VUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgICNidG5OZXh0XG4gICAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBpc0ljb25Pbmx5XG4gICAgICAgICAgICBjbGFzcz1cImVjbC1tZW51X19pdGVtIGVjbC1tZW51X19pdGVtcy1uZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtbWVudV9faXRlbS0tY3VycmVudF09XCIhaXNQcmV2QnRuQ3VycmVudENsYXNzXCJcbiAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzU2hvd05leHRCdG4gPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk5leHRCdG5DbGljaygpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJzXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsIGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY29tbW9uLk5FWFQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHVsIGNsYXNzPVwiZWNsLW1lbnVfX2xpc3RcIiAjaXRlbXNMaXN0IFtzdHlsZS5yaWdodF09XCJtZW51TGlzdFN0eWxlUmlnaHRcIiBbc3R5bGUubGVmdF09XCJtZW51TGlzdFN0eWxlTGVmdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L3VsPlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19